来宾帐户查询单租户应用程序中的Azure AD或Graph

时间:2017-10-15 11:24:03

标签: c# function azure graph azure-active-directory

我正在寻找支持以下情况的信息。

我们邀请其他Azure AD中的用户作为Azure AD的来宾,将它们放在一个组中以用于特定目的,并且需要能够从Azure AD中获取该来宾用户成员。当试图使用图表时,我们无法连接到我们的图表,因为访客帐户会一直询问自己的图表。已经在网上搜索了很长时间,并测试了大量的示例应用程序,乍一看它们似乎可以支持我们的场景但到目前为止没有运气。

我们想要注册单个租户应用程序的原因之一是能够管理我们应用程序的许可部分,并且只管理对我们应用程序的访问,而不是要求客户IT参与设置过程并保持他们的多租户解决方案的一部分。

我现在已经失去了所有方向,只需要在某个方向上推进如何继续。

2 个答案:

答案 0 :(得分:0)

正如Shawn Tabrizi所提到的,Microsoft Graph支持从其他租户检索来宾用户的成员。以下是供您参考的示例:

GET: https://graph.microsoft.com/v1.0/groups/{groupId}/members 
authorization: bearer {access_token}

<强>结果 enter image description here

关于此休息的更多细节,您可以参考下面的链接。如果您对此REST仍有疑问,请随时告诉我。

List members

答案 1 :(得分:0)

让我们来看看吧!

我有一个房客:shawntest.onmicrosoft.com

我使用Azure门户在此租户中创建了一个新的访客用户: enter image description here

我点击了&#34; +新访客用户&#34;按钮,并创建了您可以在上面看到的来宾Gmail帐户。我还将此用户添加到几个组中,也在门户中: enter image description here

因此,请让用户签名。

首先,在这些情况下,指定要在其中签署用户的租户非常重要。您可能不应将common端点用于这类帐户,因为它们可能与多个租户相关联,然后你把它留给AAD为你做最后的决定。而是指定具有特定租户ID的特定身份验证上下文:

https://login.microsoftonline.com/shawntest.onmicrosoft.com

现在使用您首选的用户登录流程获取令牌。我正在使用Native Client流程,可以使用just 13 lines of PowerShell轻松模拟。

获得令牌后,我调用/me端点以显示我正在与外部用户合作的证据:

GET https://graph.windows.net/me?api-version=1.6

{
    "odata.metadata": "https://graph.windows.net/myorganization/$metadata#directoryObjects/Microsoft.DirectoryServices.User/@Element",
    "odata.type": "Microsoft.DirectoryServices.User",
    "objectType": "User",
    ...
    "displayName": "Shawn Tabrizi",
    ...
    "userPrincipalName": "xxxxxx_gmail.com#EXT#@shawntest.onmicrosoft.com",
    "userType": "Guest"
}

对我来说很好看。现在,让我们使用memberOf查询获取用户所属的组。请注意,您可以立即执行此查询,它不依赖于上次查询中的任何数据。

GET https://graph.windows.net/me/memberOf?api-version=1.6

{
    "odata.metadata": "https://graph.windows.net/myorganization/$metadata#directoryObjects",
    "value": [{
        "odata.type": "Microsoft.DirectoryServices.Group",
        "objectType": "Group",
        ...
        "displayName": "TestGroup",
        ...
        "securityEnabled": true
    }, {
        "odata.type": "Microsoft.DirectoryServices.Group",
        "objectType": "Group",
        ...
        "displayName": "MyTestGroup",
        ...
        "securityEnabled": true
    }]
}

那是所有人!