psa*_*286 2 c# azure-acs azure-active-directory bearer-token json-web-token
我有需要Azure AD承载身份验证的API.
public void ConfigureAuth(IAppBuilder app)
{
   app.UseWindowsAzureActiveDirectoryBearerAuthentication(
      new WindowsAzureActiveDirectoryBearerAuthenticationOptions
      {
         // ...
      });
}
然后可以查询Azure AD - 可能使用图谱API - 来确定主叫用户的组信息吗?这里的最终目标是将基于角色的安全性应用于API方法/控制器,如下所示(或类似).
[PrincipalPermission(SecurityAction.Demand, Role = "Admin")]
此外,身份信息如何以及在何处应用于执行线程?
截至最近,您可以使用角色声明和/或组声明来执行此操作.如果您的Web API受到承载身份验证的保护(如此处的示例所示),则可以配置API,以便访问令牌包含组和/或角色声明.
OWIN中间件将读取JWT承载令牌中的ClaimsIdentity声明,并在System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler(源)中填写适当的声明.
要配置API以接收组声明,您需要编辑"groupMembershipClaims"应用程序清单的属性,其值为"All"或"SecurityGroups"(分别包含或排除分发列表),如此示例所示,该示例使用组声明将基于角色的安全性应用于使用[Authorize]标记的Web应用程序.
要配置API以接收角色声明,您还需要编辑清单,在"appRoles"属性中定义应用程序角色,如此示例所示(链接尚未激活 - 将在接下来的几天内),它使用角色声明来执行相同.定义应用程序角色后,可以将用户和组分配给Azure门户中的这些角色或通过GraphAPI.请注意,因为AAD发出的声明属于类型"roles",您需要将RoleClaimType设置为:
new WindowsAzureActiveDirectoryBearerAuthenticationOptions  
{  
   ...
   TokenValidationParameters = new TokenValidationParameters {  
       RoleClaimType = "roles",  
   },  
   ...  
}
| 归档时间: | 
 | 
| 查看次数: | 3633 次 | 
| 最近记录: |