【发布时间】:2021-04-16 10:57:47
【问题描述】:
我有一个 .net core 2.0 服务,我试图通过从 AAD 读取组来实现授权
做了什么:
- 在 Azure 门户中,在应用注册中,修改了清单 - 添加了“groupMembershipClaims”:“SecurityGroup”
- 在应用注册->API权限->授予权限
在代码中:
public static class AuthorizationPolicy
{
public static string Name => "GroupName";
public static void Build(AuthorizationPolicyBuilder builder) =>
builder.RequireClaim("GroupName", "06edc7ed-b0da-425f-b4a3-f501904e6c6f");
}
services.AddAuthorization(options => { options.AddPolicy("GroupName", policy => policy.AddRequirements(new IsMemberOfGroupRequirement("GroupName", "06edc7ed-b0da-425f-b4a3-f501904e6c6f"))); });
添加 AuthorizationHandler 类
public class IsMemberOfGroupHandler : AuthorizationHandler<IsMemberOfGroupRequirement>
{
protected override Task HandleRequirementAsync(
AuthorizationHandlerContext context, IsMemberOfGroupRequirement requirement)
{
var groupClaim = context.User.Claims
.FirstOrDefault(claim => claim.Type == "groups" &&
claim.Value.Equals(requirement.GroupId, StringComparison.InvariantCultureIgnoreCase));
if (groupClaim != null)
context.Succeed(requirement);
return Task.CompletedTask;
}
}
但用户的声明中不存在这些组
请帮忙,我错过了什么
【问题讨论】:
标签: azure asp.net-core azure-active-directory