【发布时间】:2019-09-26 15:09:52
【问题描述】:
我正在开发 .net 核心项目。我正在尝试使用 AD 组实现授权。我的要求是,我在 azure 广告中有很多组。如果当前用户属于 azure ad 中的任何可用组,那么我想授权这些用户访问用 .net 核心应用程序编写的 api。我尝试如下。我在下面添加了两个类
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;
}
}
public class IsMemberOfGroupRequirement : IAuthorizationRequirement
{
public readonly string GroupId;
public readonly string GroupName;
public IsMemberOfGroupRequirement(string groupName, string groupId)
{
GroupName = groupName;
GroupId = groupId;
}
}
下面是我的启动课。
services.AddAuthorization(options =>
{
var adGroupConfig = new List<AdGroupConfig>();
_configuration.Bind("AdGroups", adGroupConfig);
foreach (var adGroup in adGroupConfig)
options.AddPolicy(
adGroup.GroupName,
policy =>
policy.AddRequirements(new IsMemberOfGroupRequirement(adGroup.GroupName, adGroup.GroupId)));
});
以上代码检查配置文件中可用的组。现在我的要求是使用 microsoft graph api 来获取所有可用的组。我找不到任何方法来处理这个要求。有人可以帮我弄这个吗?任何帮助,将不胜感激。谢谢
【问题讨论】:
标签: asp.net-core .net-core azure-active-directory authorization microsoft-graph-api