4

由于我们在 GA 中有 Azure AD 的 B2B 功能,我很好奇如何在多租户应用程序中使用 B2B。更具体地说,如何获取用户所属的目录列表?例如,Azure 门户通过调用https://portal.azure.com/AzureHubs/api/tenants/ListMicrosoft 的 My Apps 调用https://account.activedirectory.windowsazure.com/responsive/multidirectoryinfo来获取信息 - 是否有一个公共端点?

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

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

更新:似乎有一种方法可以通过访问Azure 服务管理 API来做到这一点,但是这个 API 和方法没有记录,我想如果发生任何问题,微软会说它不是受支持的方案。

更新 2:我写了一篇关于整个设置的文章,包括一个如何在场景中使用它的示例项目,可以在这里找到https://hajekj.net/2017/07/24/creating-a-多租户应用程序支持 b2b 用户/

4

1 回答 1

1

有一个公开记录的 Azure 管理 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/(带有斜杠!)。

于 2017-07-21T22:22:20.823 回答