【发布时间】:2015-01-29 03:18:46
【问题描述】:
我正在向我的 Azure AD 图形 API 查询用户的组成员身份。 我可以很好地进行查询,但结果只是用户直接所属的组。没有列出任何嵌套组。
我正在尝试确定用户是否属于特定组,但我不想通过 100 多次 api 调用来找出答案。 (即,用户属于 GroupA,GroupB 是 GroupC 的成员,GroupC 是 GroupD 的成员。组 B、C 和 D 不会出现在用户的组列表中,即使他在技术上属于它们- 仅 A 组)。
有没有办法在一个 API 调用或另一个 API 调用中获得所有组成员资格?当我使用集成 Windows 身份验证时,IsInRole(GroupD) 将返回 true。但是,这不适用于 Azure AD 身份验证,并且任何声称具有重新实现 IsInRole 的代码的帖子都只是对 user.memberOf 进行相同的调用(不执行嵌套组)。
仅供参考,这是我调用的代码。
var client = AuthenticationHelper.GetActiveDirectoryClient();
var user = await client.Users.GetByObjectId(objectId).ExecuteAsync();
var userFetcher = (IUserFetcher)user;
var pagedCollection = await userFetcher.MemberOf.ExecuteAsync();
do
{
var directoryObjects = pagedCollection.CurrentPage.ToList();
foreach (var group in directoryObjects.OfType<Group>().Select(directoryObject => directoryObject))
{
groupMembership.Add(group);
}
pagedCollection = await pagedCollection.GetNextPageAsync();
}
while (pagedCollection != null && pagedCollection.MorePagesAvailable);
【问题讨论】:
标签: c# azure authorization azure-active-directory