ASP.NET API returns 此请求在本地主机上的授权已被拒绝,但在 Azure 上正常工作

ASP.NET API returns Authorization has been denied for this request on localhost but works normally on Azure

[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 Directory 身份验证和授权。

注意发布到AzureApiApp时正常,但在localhost时总是拒绝请求。

我不确定发生了什么,它以前是有效的。

此致

通常这是由于您在网络中期望的受众 API(您通过 ValidAudience 设置的值)与您在传入令牌中获得的不匹配。令牌中的值反映了您在从客户端请求令牌时使用的资源标识符。 在调用本地主机实例与 Azure API 实例时,您是否更改客户端代码以请求不同的受众? 另外,如何将 API 发布到 Azure?如果您使用 VS,并且在发布向导设置中选中了复选框 "use organizational auth",则部署的网站 API 将在其 web.config.

中具有不同的受众值