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.
中具有不同的受众值
[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.
中具有不同的受众值