#azure-active-directory #microsoft-graph-api #multi-tenant
#azure-active-directory #microsoft-graph-api #многопользовательский
Вопрос:
Я создал многопользовательское демоническое приложение в Azure, из которого, как я предполагал, я мог бы получить доступ к GET /users / и получить всех пользователей во всех подключенных клиентах. Однако, когда этот запрос отправляется, все, что я получаю, — это список пользователей от одного клиента (того, где создано приложение). У меня есть все необходимые разрешения API, и я предоставил им доступ.
Я предполагаю, что я не понимаю, как должен работать рабочий процесс Graph, но после нескольких часов поиска в Google я не стал мудрее. На данный момент я просто пытаюсь заставить это работать в Postman. Любой совет был бы по-настоящему оценен.
Комментарии:
1. Это невозможно. Ваше приложение будет знать информацию о клиенте только при входе в систему. Если пользователь A из клиента вошел в систему, вы можете получить пользователей только из клиента. Токен всегда зависит от клиента
2. В этом случае нет пользователей, а есть приложение. И если мне нужно повторно пройти аутентификацию для каждого клиента, это нормально.
3. Пожалуйста, обратитесь к этому аналогичному сценарию . Надеюсь, это поможет вам
4. Привет, у вас была возможность ознакомиться с моим ответом? Полезно ли это?
Ответ №1:
Вы неправильно понимаете многопользовательское приложение.
Многопользовательское приложение предназначено для предоставления программного обеспечения как услуги (SaaS) многим организациям. Это не означает, что исходное приложение может получить доступ к ресурсам от других пользователей, которые дали согласие. Это может позволить только этим пользователям получать доступ к своим собственным ресурсам.
Когда администратор другого клиента (отличный от первоначального клиента) даст согласие на это многопользовательское приложение, к этому клиенту будет добавлено корпоративное приложение, имеющее разрешения Graph. Только это корпоративное приложение имеет доступ к данным этого клиента.
Итак, в вашем случае вы используете поток учетных данных клиента (только приложение без пользователя), с согласия администратора других клиентов вы можете использовать корпоративное приложение, добавленное к этим клиентам, для доступа к их пользователям.
Во-первых, я предполагаю, что вы создаете многопользовательское приложение в tenant A. Убедитесь, что у вашего многопользовательского приложения есть разрешение приложения User.Read.All
.
Затем выполните согласие администратора для клиента B, используя конечную точку согласия администратора (перейдите по следующему URL-адресу в браузере):
https://login.microsoftonline.com/{tenant-id of tenant B}/adminconsent?client_id={client-id of the multi-tenant app}
Войдите с учетной записью администратора из клиента B, чтобы получить согласие администратора. Это добавит корпоративное приложение в клиент B.
Теперь вы можете получить токен следующим образом:
POST https://login.microsoftonline.com/{tenant id of tenant B}/oauth2/v2.0/token
client_id={client id of the multi-tenant app}
amp;scope=https://graph.microsoft.com/.default
amp;client_secret={client secret}
amp;grant_type=client_credentials
Токен доступа сможет отображать список пользователей клиента B.