Получая все каталоги B2B, пользователь является членом

Поскольку в GA у нас есть функция B2B Azure AD, мне интересно, как использовать B2B в мультитенантных приложениях. В частности, как получить список каталогов, членом которых является пользователь? Например, портал Azure делает это, вызывая https://portal.azure.com/AzureHubs/api/tenants/List, Microsoft My Apps звонит https://account.activedirectory.windowsazure.com/responsive/multidirectoryinfo чтобы получить информацию - есть ли публичная конечная точка для этого?

Вариант использования - включить взаимодействие B2B через мультитенантное приложение, которое предоставляется в каталоге каждого пользователя, чтобы у них были свои экземпляры, но нет способа централизованно извлекать информацию о каталогах пользователя.

Простой обходной путь - опросить всех арендаторов, которым предоставлено приложение для имени пользователя UPN, и, если он найден, отобразить его в списке, но представьте, что существуют сотни арендаторов... Я считаю, что это очень важно для разработчиков приложений, которые хочу использовать функции B2B в мультитенантных приложениях.

Обновление. Похоже, что есть способ сделать это путем доступа к API управления службами Azure, однако этот API и метод недокументированы, и я полагаю, что если возникнут какие-либо проблемы, Microsoft скажет, что это не поддерживаемый сценарий.

Обновление 2: я написал статью обо всей установке, включая пример проекта о том, как использовать это в сценарии, его можно найти здесь https://hajekj.net/2017/07/24/creating-a- многопользовательские-приложения-которые-опора-b2b-пользователи /

1 ответ

Решение

Существует публично документированный API-интерфейс управления Azure, который позволяет вам сделать это: 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/ (с косой чертой!).

Другие вопросы по тегам