获取用户所属的所有 B2B 目录

Getting all B2B directories user is member of

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

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

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

更新: 似乎有一种方法可以通过访问 Azure Service Management API 来做到这一点,但是这个 API 和方法没有记录,我想如果出现任何问题,Microsoft 会说这不是受支持的方案。

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

有公开记录的 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/(带有尾部斜杠!)。