我需要从本机客户端应用程序为 asp .net web api 实现基于角色的授权,访问令牌将在标头中发送,所以当我给我的 web api 提供 [Authorize] 属性时它工作正常,但是当我给 [Authorize (Role="Admin")] 它给出了未经授权的错误,然后每当检查声明中的角色时,它总是为空。
我的 startup.cs 是
public void Configuration(IAppBuilder app)
{
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Audience = ConfigurationManager.AppSettings["ida:Audience"],
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
});
}
我已经为一个方法应用了授权属性
[Authorize]
[HttpGet]
public async Task<UserDetails> TestAuthorization()
{
string upn = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Name).Value;
string tenantID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/tenantid").Value;
var role = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Role);
return null;
}
这里角色值始终为空
请帮助我