c# – 在Azure AD Graph Helper中获取成员组

c# – 在Azure AD Graph Helper中获取成员组,第1张

概述我使用Graph API查询我的Azure Active Directory,使用Microsoft. WindowsAzure.ActiveDirectory.GraphHelper项目作为我的请求的基础. 在特定的用例中,我有一个包含数百个用户的组,以及一些组.我希望加载此父组的组成员.我试图请求加载成员属性: DirectoryService.LoadProperty(school, "me 我使用Graph API查询我的Azure Active Directory,使用Microsoft. WindowsAzure.ActiveDirectory.GraphHelper项目作为我的请求的基础.

在特定的用例中,我有一个包含数百个用户的组,以及一些组.我希望加载此父组的组成员.我试图请求加载成员属性:

DirectoryService.LoadProperty(school,"members");

我只得到100个结果,所有这些都是用户(同样,该组中有超过100个用户).
我试图执行DataServicequery,但它不支持这样的 *** 作:

var groups = DirectoryService.groups;Group parentGroup = DirectoryService.groups.Where(it => (it.objectID == parentGroupID)).SingleOrDefault();groups = (DataServicequery<Group>)groups.Where(group => group.memberOf.Contains(parentGroup));

它在第三行失败,表示不支持该表达式.

目前,我能想到的唯一解决方案是加载所有组,在每个组上运行LoadPropert(实体,’memberOf’,null),然后检查每个组是否是parentGroup的成员(实际上,几个这样的parentGroups之一).注意 – 我在continuationToken空间中放置了null,因为这些组应该只是一个父组的成员.

这非常低效,但我似乎找不到任何其他方式!
有没有其他方法可以做我想做的事情?

解决方法 AAD Graph API目前每页返回100个项目.如果您提出的请求是针对多页数据,则响应将包含指向下一页数据的链接.从 Supported Queries,Filters,and Paging Options in Azure AD Graph API开始:

A response that contains paged results will include a skip token (odata.nextlink) that allows you to get the next page of results.

最简单的方法是以https://graphexplorer.cloudpp.net的目录用户身份登录.然后,执行简单的GET:

https://graph.windows.net/<your.domain.name>/users

由于您有超过100个用户,如果向下滚动到结果的底部,您将看到属性odata.nextlink.如果您复制该属性的内容,然后在下一个查询中使用,那么您将获得下一页.继续这个例子,下一个请求看起来像这样:

https://graph.windows.net/<your.domain.name>/directoryObjects/$/Microsoft.windowsAzure.ActiveDirectory.User?$skiptoken=X'4453...

我注意到你正在使用deprecated帮助程序库Microsoft.windowsAzure.ActiveDirectory.GraphHelper.相反,您应该使用更新(和支持)的Graph API客户端库:Microsoft.Azure.ActiveDirectory.GraphClIEnt(NuGet).以下代码段检索所有组成员,并仅打印组对象的显示名称:

// Fetch group member objectsIGroupFetcher groupFetcher = (IGroupFetcher)parentGroup;IPagedCollection<IDirectoryObject> members =     groupFetcher.Members.ExecuteAsync().Result;// Iterate over each page keep only the Groupsdo{    List<IDirectoryObject> directoryObjects = members.CurrentPage.ToList();    foreach (IDirectoryObject member in directoryObjects)    {        if (member is Group)        {            Group group = member as Group;            Console.Writeline("Group: {0}",group.displayname);        }    }    members = members.MorePagesAvailable ?         members = members.GetNextPageAsync().Result : null;} while (members != null);
总结

以上是内存溢出为你收集整理的c# – 在Azure AD Graph Helper中获取成员组全部内容,希望文章能够帮你解决c# – 在Azure AD Graph Helper中获取成员组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1238781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存