使用Azure AD图形客户端获取Active Directory管理员
本文关键字:Active Directory 管理员 获取 客户端 Azure AD 图形 使用 | 更新日期: 2023-09-27 18:04:25
使用Azure Active Directory图形客户端,我可以使用ff成功地查询AD的用户角色。代码:
var activeDirectoryClient = new ActiveDirectoryClient(); // Instantiate the Graph Client here.
var adRoles = await activeDirectoryClient.DirectoryRoles.ExecuteAsync();
然而,是否可能得到:
- 管理员角色的列表?,和
- 属于管理员角色的用户列表?
在本例中,我对管理员的定义是Company Administrator角色下的用户,或者能够授权应用程序的用户(通过格式为https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=xxx-xxx&resource=yyy-yyy&redirect_uri=zzz-zzz&prompt=admin_consent的授权请求URL)
有几种方法可以做到这一点,让我们以REST API为起点。
您可以使用get请求获得USER的组和角色列表:https://graph.windows.net/myorganization/users/{user_id}/$links/memberOf?api-version
如果成功,返回指向该用户所属的Group's和DirectoryRole's的链接集合
ref:获取用户的组和目录角色成员关系
要获得组的成员资格,您可以向:https://graph.windows.net/myorganization/groups/{object_id}/$links/members?api-version
发出get请求。ref: Get a group的直接成员
然而根据文档:
不能在目录角色上调用函数或操作
裁判:https://msdn.microsoft.com/en-us/Library/Azure/Ad/Graph/api/entity-and-complex-type-reference DirectoryRoleEntity
这必须从USER对象中完成。SDK会反映这个
IPagedCollection<IDirectoryObject> pagedCollection = retrievedUserFetcher.MemberOf.ExecuteAsync();
GraphAPI控制台应用程序有一些很好的例子,应该告诉你如何完成这些操作: