Можно ли манипулировать арендатором из другого арендатора в Azure?

Я новичок в Azure, и меня беспокоит один вопрос. Можно ли создать мультитенантную логику в Azure с одним «Общим» AAD, который содержит приложения-функции и другие арендаторы (более 20), которые должны использовать эти приложения для управления своими собственными арендаторами?

Например, есть приложение для управления пользователями (UserManagement). Когда эта функция «вызывается» из другого арендатора (арендатора «Б»), скажем, для добавления нового пользователя, она должна добавить пользователя только в вызываемый AAD (арендатор «Б»).

Я пытаюсь добиться этого, сохраняя учетные данные регистрации приложения в таблице или субъекте-службе — логика регистрации приложения, но это не дает никакого эффекта.

Спасибо .

Я думаю, что Azure Ad multi-tenant может удовлетворить ваши требования. У меня был образец теста, и я поделился подробностями ниже. Пожалуйста, поправьте меня, если я неправильно понял ваше требование.

Tiny Wang 20.02.2023 10:06
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
1
66
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я провел тест на своей стороне с помощью мультитенантного приложения 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:

  • В зависимости от ваших требований вы можете назначить разрешения API Azure AD и разрешить пользователям доступ к приложению.

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