获取所有B2B目录用户是其成员

时间:2017-07-21 10:40:59

标签: azure azure-active-directory microsoft-graph azure-ad-b2b

由于我们在GA中拥有Azure AD的B2B功能,我很好奇如何在多租户应用程序中使用B2B。更具体地说,如何获取用户所属的目录列表?例如,Azure门户通过致电https://portal.azure.com/AzureHubs/api/tenants/List,微软的我的应用程序调用{​​{1}}来获取信息来实现此目的 - 是否有公共端点?

用例是在多租户应用程序中启用B2B合作,该应用程序在每个用户的目录中提供,因此它们拥有自己的实例,但是没有办法集中提取有关用户的信息。的目录。

一个简单的解决方法是查询为用户的UPN配置了应用程序的所有租户,如果找到,将其显示在列表中,但想象一下是否有数百个租户...我相信这个对于想要在多租户应用程序中利用B2B功能的应用程序开发人员来说非常重要。

更新:似乎有办法通过访问Azure Service Management API来实现这一点,但是这个API和方法没有记录,我想如果发生任何问题,微软会说它不是受支持的场景。

更新2:我写了一篇关于整个设置的文章,包括如何在场景中使用它的示例项目,可在此处找到https://hajekj.net/2017/07/24/creating-a-multi-tenant-application-which-supports-b2b-users/

1 个答案:

答案 0 :(得分:1)

有一个公开记录的Azure Management API,允许您执行此操作:https://docs.microsoft.com/en-us/rest/api/resources/tenants

GET https://management.azure.com/tenants?api-version=2016-06-01 HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUz...
...

响应正文看起来像这样:

{
    "value" : [{
            "id" : "/tenants/d765d508-7139-4851-b9c5-74d6dbb1edf0",
            "tenantId" : "d765d508-7139-4851-b9c5-74d6dbb1edf0"
        }, {
            "id" : "/tenants/845415f3-7a05-45c2-8376-ee67080661e2",
            "tenantId" : "845415f3-7a05-45c2-8376-ee67080661e2"
        }, {
            "id" : "/tenants/97bcb93f-8dee-48ed-afa3-356ba40f3a61",
            "tenantId" : "97bcb93f-8dee-48ed-afa3-356ba40f3a61"
        }
    ]
}

您需要获取访问令牌的资源是https://management.azure.com/(带有斜杠!)。