ASP.NET API返回已在localhost上拒绝此请求的授权,但在Azure

时间:2016-04-11 15:56:22

标签: asp.net azure adal

[Authorize]
    public class ValuesController : ApiController
    {
        // GET api/values
        public IEnumerable<string> Get()
        {
            return new string[] { "Simple" , "Test"};
        }
}

这是一个简单的“Web API 2”应用程序。

public void ConfigureAuth(IAppBuilder app)
        {
            app.UseWindowsAzureActiveDirectoryBearerAuthentication(
              new WindowsAzureActiveDirectoryBearerAuthenticationOptions
              {
                  Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
                  TokenValidationParameters = new TokenValidationParameters
                  {
                      SaveSigninToken = true,
                      ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
                  },
              });
        }

如图所示,该应用程序正在使用WindowsAzureActive目录身份验证和授权。

请注意,它在发布到Azure Api App时正常工作,但在localhost时始终拒绝该请求。

我不确定发生了什么,以前曾经工作过。

此致

1 个答案:

答案 0 :(得分:1)

通常,这是由于您在网络API中所期望的受众群体(您通过ValidAudience设置的价值)不匹配以及您在传入令牌中获得的内容。令牌中的值反映了从客户端请求令牌时使用的资源标识符。 在调用localhost实例与Azure API实例时,是否更改了客户端代码以请求不同的受众? 另外,如何将API发布到Azure?如果您使用VS,并且在“发布”向导设置中选中了“使用组织验证”复选框,则部署的Web API将在其web.config中具有不同的受众值。