使用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();

然而,是否可能得到:

  1. 管理员角色的列表?,和
  2. 属于管理员角色的用户列表?

在本例中,我对管理员的定义是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)

使用Azure AD图形客户端获取Active Directory管理员

有几种方法可以做到这一点,让我们以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控制台应用程序有一些很好的例子,应该告诉你如何完成这些操作: