Поделиться через


Конечная точка UserInfo платформы удостоверений Майкрософт

В рамках стандарта OpenID Connect (OIDC) конечная точка UserInfo возвращает сведения о пользователе, прошедшем проверку подлинности.

Найдите конечную точку конфигурации .well-known

Конечную точку UserInfo можно найти программным способом, прочитав userinfo_endpoint поле документа конфигурации OpenID по адресу https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration. Мы не рекомендуем жестко кодировать конечную точку UserInfo в приложениях. Вместо этого используйте документ конфигурации OIDC, чтобы найти конечную точку во время выполнения.

Конечная точка UserInfo обычно вызывается автоматически библиотеками, совместимыми с OIDC , для получения сведений о пользователе. В списке утверждений, определенных в стандарте OIDC, платформа удостоверений Майкрософт создает утверждения имени, утверждение субъекта и электронную почту при наличии и согласии.

Вместо этого рассмотрите возможность использования маркера идентификатора

Сведения в маркере идентификатора — это супермножество сведений, доступных в конечной точке UserInfo. Так как маркер идентификатора можно получить одновременно, чтобы вызвать конечную точку UserInfo, мы рекомендуем получить сведения пользователя из маркера вместо вызова конечной точки UserInfo. Использование маркера идентификатора вместо вызова конечной точки UserInfo устраняет до двух сетевых запросов, уменьшая задержку в приложении.

Если вам требуются дополнительные сведения о пользователе, например о менеджере или названии задания, вызовите API Microsoft Graph/user. Кроме того, можно использовать необязательные утверждения для включения дополнительных сведений о пользователе в идентификатор и маркеры доступа.

Вызов конечной точки UserInfo

UserInfo — это стандартный API маркера носителя OAuth, размещенный в Microsoft Graph. Вызовите конечную точку UserInfo, так как вызовите любой API Microsoft Graph с помощью маркера доступа, полученного приложением при запросе доступа к Microsoft Graph. Конечная точка UserInfo возвращает ответ JSON, содержащий утверждения о пользователе.

Разрешения

Используйте следующие разрешения OIDC для вызова API UserInfo. Утверждение openid является обязательным, а profileemail области и области гарантируют, что в ответе предоставляются дополнительные сведения.

Тип разрешения Разрешения
Делегированные (рабочая или учебная учетная запись) openid(обязательно), profileemail
Делегированные (личная учетная запись Майкрософт) openid(обязательно), profileemail
Заявление Неприменимо

Подсказка

Скопируйте этот URL-адрес в браузере, чтобы получить маркер доступа для конечной точки UserInfo и маркер идентификатора. Замените идентификатор клиента и URI перенаправления значениями из регистрации приложения.

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=<yourClientID>&response_type=token+id_token&redirect_uri=<YourRedirectUri>&scope=user.read+openid+profile+email&response_mode=fragment&state=12345&nonce=678910

Маркер доступа, возвращенный в запросе, можно использовать в следующем разделе.

Microsoft Graph использует специальный шаблон выдачи маркеров, который может повлиять на способность приложения читать или проверять его. Как и в случае с любым другим токеном Microsoft Graph, полученный здесь маркер может не быть JWT, и ваше приложение должно рассмотреть его непрозрачным. Если вы выполнили вход в учетную запись Майкрософт, он будет зашифрованным форматом маркера. Однако ни один из этих факторов не влияет на возможность приложения использовать маркер доступа в запросе к конечной точке UserInfo.

Вызов API

API UserInfo поддерживает запросы GET и POST.

GET or POST /oidc/userinfo HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJub25jZSI6Il…

Ответ UserInfo

{
    "sub": "OLu859SGc2Sr9ZsqbkG-QbeLgJlb41KcdiPoLYNpSFA",
    "name": "Mikah Ollenburg", // all names require the “profile” scope.
    "family_name": " Ollenburg",
    "given_name": "Mikah",
    "picture": "https://graph.microsoft.com/v1.0/me/photo/$value",
    "email": "mikoll@contoso.com" // requires the “email” scope.
}

Утверждения, отображаемые в ответе, — это все те, которые может возвращать конечная точка UserInfo. Эти значения являются одинаковыми значениями, включенными в маркер идентификатора.

Заметки и предостережения конечной точки UserInfo

Невозможно добавить или настроить сведения, возвращаемые конечной точкой UserInfo.

Чтобы настроить сведения, возвращаемые платформой удостоверений во время проверки подлинности и авторизации, используйте сопоставление утверждений и необязательные утверждения для изменения конфигурации маркера безопасности.

Дальнейшие шаги