[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时始终拒绝该请求。
我不确定发生了什么,以前曾经工作过。
此致
答案 0 :(得分:1)
通常,这是由于您在网络API中所期望的受众群体(您通过ValidAudience设置的价值)不匹配以及您在传入令牌中获得的内容。令牌中的值反映了从客户端请求令牌时使用的资源标识符。 在调用localhost实例与Azure API实例时,是否更改了客户端代码以请求不同的受众? 另外,如何将API发布到Azure?如果您使用VS,并且在“发布”向导设置中选中了“使用组织验证”复选框,则部署的Web API将在其web.config中具有不同的受众值。