【问题标题】:Get Active Directory Administrators using Azure AD Graph Client使用 Azure AD Graph 客户端获取 Active Directory 管理员
【发布时间】:2015-10-13 10:32:28
【问题描述】:

使用 Azure Active Directory Graph 客户端,我可以使用 ff.代码:

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

但是,是否有可能获得:

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

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

【问题讨论】:

    标签: c# azure active-directory user-roles


    【解决方案1】:

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

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

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

    成功时,返回指向该用户所属的 Group 和 DirectoryRole 的链接集合

    参考: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

    但是根据文档:

    不得对目录角色调用任何函数或操作

    参考: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

    【讨论】:

    • 感谢@Devian 的输入。我创建了一个测试方法,并且能够验证我的公司管理员有一个Role 对象,当它与活动目录的角色交叉引用时,它与 AD 的“公司管理员”角色相匹配。话虽如此,是否可以保证每个 AD 都将具有此角色,名称为“公司管理员”?我假设角色 ID 会随着每个租户而改变,但如果名称是常数,我不介意使用它进行比较。我很可能必须遍历所有成员以检查他们是否与角色匹配以获取所有 AD 管理员。
    猜你喜欢
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 2019-04-28
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    相关资源
    最近更新 更多