首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Azure AD图API用户memberOf嵌套组

Azure AD图API用户memberOf嵌套组
EN

Stack Overflow用户
提问于 2015-01-28 18:50:05
回答 1查看 7.8K关注 0票数 1

我正在查询我的Azure AD图形API以获得用户的组成员资格。我可以把查询做得很好,但结果只是用户直接所属的组。没有列出任何嵌套组。

我正在试图找出一个用户是否属于某个特定的组,但是我不想要进行超过100个api调用才能找到答案。(也就是说,用户属于GroupA,它是GroupB的成员,GroupC的成员,GroupD的成员。)组B、C和D不会出现在用户的组列表中,即使他在技术上属于它们--只有GroupA)。

有没有办法在一个API调用或另一个API调用中获得所有组成员身份?当我使用集成Windows身份验证时,IsInRole(GroupD)将返回true。不过,Azure身份验证和任何声称拥有重新实现IsInRole的代码的帖子都无法使用这一点,它们只是对user.memberOf (它不执行嵌套组)进行相同的调用。

仅供参考,这是我打电话的代码。

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-28 19:18:46

是。getMemberObjects API返回用户是其成员的所有组(传递组):https://msdn.microsoft.com/en-us/library/azure/dn835117.aspx。此外,使用checkMemberGroups API,您可以检查用户是否是组的成员(临时的):https://msdn.microsoft.com/en-us/library/azure/dn835107.aspx

然而,对于您的需求,Azure的应用程序角色特性可能更适合。您的应用程序可以声明应用程序角色,管理员可以将这些角色分配给用户和组。当用户登录到您的应用程序时,Azure AD计算分配给他们的应用程序角色,并将它们发送到角色声明中。不需要在运行时查询图形。见此处:http://www.dushyantgill.com/blog/2014/12/10/roles-based-access-control-in-cloud-applications-using-azure-ad/

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28200071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档