我有需要 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
(source).
要配置您的 API 以接收团体声明,您需要编辑"groupMembershipClaims"
应用程序清单的属性,值为"All"
or "SecurityGroups"
(分别包含或排除的分发列表),如图所示这个样本,它使用 Group Claims 将基于角色的安全性应用到使用[Authorize]
tag.
要配置您的 API 以接收角色声明,您还需要编辑清单,在"appRoles"
属性如图所示这个样本(链接尚未激活 - 将在接下来的几天内激活),它使用角色声明来执行相同的操作。定义应用程序角色后,您可以在 Azure 门户中或通过 GraphAPI 将用户和组分配给这些角色。请注意,因为 AAD 发出的声明属于类型"roles"
,您需要将 RoleClaimType 设置为:
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
...
TokenValidationParameters = new TokenValidationParameters {
RoleClaimType = "roles",
},
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)