Проблемы с получением групп пользователей Azure AD - PullRequest
1 голос
/ 02 апреля 2019

В настоящее время я использую паспортную библиотеку node.js для аутентификации с использованием стратегии OIDC с зарегистрированным лазурным приложением, используя идентификатор клиента и секрет.

http://login.microsoftonline.com/{org id}/v2.0/.well-known/openid-configuration

У меня нет проблем с возвращением профиля пользователя, вошедшего в систему, но я пытаюсь получить доступ к группам через стену.В моем приложении мне нужно авторизовать пользователя на основе его активных групп каталогов.Я возвращаю этот кусок json:

"_claim_names\":{\"groups\":\"src1\"},\"_claim_sources\":{\"src1\":{\"endpoint\":\"https://graph.windows.net/{org guid}/users/{user guid}/getMemberObjects\"}}

Я не уверен, что мне нужно сделать, используя это, чтобы получить группы.Я попытался сгенерировать токен на предъявителя, передать его в заголовке и получить группы, но в нем говорится, что я не авторизован с помощью Почтальона.Нужны ли определенные разрешения в приложении?Кроме того, почему он использует graph.windows.net, когда я пытаюсь использовать graph.microsoft.com?

Есть ли более простой способ сделать это после входа пользователя в систему?

1 Ответ

1 голос
/ 02 апреля 2019

Заявка на индикатор превышения, когда пользователь является членом многих групп

Заявка, которую вы получаете в ответ на вопрос, поданный в json, является заявкой на превышение показателя.

"_claim_names\":{\"groups\":\"src1\"},\"_claim_sources\":{\"src1\":{\"endpoint\":\"https://graph.windows.net/{org guid}/users/{user guid}/getMemberObjects\"}}

Это означает, что пользователь является членом многих групп, и вместо того, чтобы включать информацию обо всех группах в состав токена (что сделало бы токен слишком большим), вам нужно будет запросить эту информацию отдельно.

Подробнее об этом здесь: Справочник по токенам доступа

enter image description here

Как получить информацию о группах?

Ваше приложение должно сделать отдельный вызов Microsoft Graph API, чтобы получить информацию о группах для пользователя.

Соответствующие API-интерфейсы Microsoft Graph

Разрешения, необходимые для вашего приложения

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

Вам потребуется обновить регистрацию приложения в Azure AD, чтобы потребовать соответствующие разрешения (а также пройти через разрешение администратора, если для этого требуется разрешение администратора)

app registrations preview experience

Токен для вызова Microsoft Graph API

Вы упоминаете, что пытались сгенерировать токен на предъявителя, передав его взаголовок, но вы получили несанкционированную ошибку.

Как только вы закончите с изменениями разрешений для вашего приложения, приобретите токен специально для Microsoft Graph API из вашего приложения.Токен на предъявителя, используемый для доступа к вашему приложению, может не работать напрямую с Microsoft Graph API.

Также убедитесь, что вы прошли через разрешение администратора, если для какого-либо из разрешений требуется согласие администратора.Если это приложение с одним арендатором, «предоставление разрешений» администратором портала напрямую должно работать, в случае мультитенантного приложения вы можете использовать Конечная точка согласия администратора .

Пример кода : Вот краткое руководство для вызова Microsoft Graph с использованием Node.js .., вы можете найти и другие хорошие.

API-интерфейс Azure AD Graph (graph.windows.net) и Microsoft Graph API (graph.microsoft.com)

У вас есть действительный вопрос о конечной точке .. "Также почемукогда я пытаюсь использовать graph.microsoft.com?"

с использованием graph.windows.net. Общая рекомендация - использовать более новый Microsoft Graph API, если только вы не ищете нужную функциональность / информацию 'Доступно с Microsoft Graph, и может помочь только API Azure AD Graph.Подробнее о рекомендациях и сравнении читайте здесь: Microsoft Graph или Azure AD Graph

Поскольку информация о группах уже доступна в конечной точке v1 для Microsoft Graph (не бета), вам следует воспользоваться MicrosoftGraph API.

Вот несколько связанных SO сообщений: SO Post 1 и SO Post 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...