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

Get Active Directory Administrators using Azure AD Graph Client

使用 Azure Active Directory 图形客户端,我可以使用 ff 成功查询 AD 的用户角色。代码:

var activeDirectoryClient = new ActiveDirectoryClient(); // Instantiate the Graph Client here.
var adRoles = await activeDirectoryClient.DirectoryRoles.ExecuteAsync();

然而,是否有可能获得:

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

在这种情况下,我对管理员的定义是 公司管理员 角色下的用户,或者能够授权应用程序的用户(通过授权请求 URL 格式为 https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=xxx-xxx&resource=yyy-yyy&redirect_uri=zzz-zzz&提示=admin_consent)

有几种方法可以做到这一点,让我们看看 REST API 作为起点。

您可以通过向 https://graph.windows.net/myorganization/users/{user_id}/$links/memberOf?api-version

发出 GET 请求来获取每个 USER 的组和角色列表

成功后,returns指向此用户所属的群组和目录角色的链接集合

参考:Get a user's group and directory role memberships

要获得群组成员资格,您可以向以下地址发出 GET 请求:https://graph.windows.net/myorganization/groups/{object_id}/$links/members?api-version

参考:Get a group's direct members

但是根据文档:

No functions or actions may be called on directory roles

参考: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 控制台应用程序有一些很好的示例,可以向您展示如何完成这些操作:Program.cs