Я новичок в Azure, и меня беспокоит один вопрос. Можно ли создать мультитенантную логику в Azure с одним «Общим» AAD, который содержит приложения-функции и другие арендаторы (более 20), которые должны использовать эти приложения для управления своими собственными арендаторами?
Например, есть приложение для управления пользователями (UserManagement). Когда эта функция «вызывается» из другого арендатора (арендатора «Б»), скажем, для добавления нового пользователя, она должна добавить пользователя только в вызываемый AAD (арендатор «Б»).
Я пытаюсь добиться этого, сохраняя учетные данные регистрации приложения в таблице или субъекте-службе — логика регистрации приложения, но это не дает никакого эффекта.
Спасибо .
Я провел тест на своей стороне с помощью мультитенантного приложения Azure AD с основным приложением asp.net, эта функция позволяет пользователям из разных арендаторов входить в систему, а затем использовать Microsoft Graph API для query all the users
.
Мое приложение Azure AD зарегистрировано в клиенте A, который является многопользовательским приложением. Затем я использовал пользователя в арендаторе B для входа в приложение, после чего результатом запроса является то, что все пользователи в арендаторе B перечислены в результате запроса.
Вот образец за которым я следил. А в контроллере мой запрос такой: var users = await _graphServiceClient.Users.Request().GetAsync();
Не забудьте установить идентификатор арендатора как common
для включения функции нескольких арендаторов.
Я согласен с @Tiny Wang, вам нужно создать многопользовательское приложение Azure AD для реализации вашего сценария.
Я попытался воспроизвести то же самое в своей среде и получил следующие результаты:
Я создал приложение Azure AD в TenantA:
Теперь я попытался войти в систему с пользователем TenantB, используя следующую конечную точку авторизации:
https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?
&client_id=ClientID
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=https://graph.microsoft.com/.default
&state=12345
Пользователю будет предложен экран, как показано ниже:
Как только пользователь примет согласие, пользователь TenantB
будет успешно авторизован.
Я сгенерировал токен доступа, используя следующие параметры:
https://login.microsoftonline.com/organizations/oauth2/v2.0/token
grant_type:authorization_code
client_id:ClientID
scope:https://graph.microsoft.com/.default
code:code
redirect_uri:https://jwt.ms
client_secret:ClientSecret
Если вы хотите, чтобы личные учетные записи Microsoft имели доступ к вашему приложению, зарегистрируйте свое приложение, как показано ниже, и используйте конечную точку common
:
Я думаю, что Azure Ad multi-tenant может удовлетворить ваши требования. У меня был образец теста, и я поделился подробностями ниже. Пожалуйста, поправьте меня, если я неправильно понял ваше требование.