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


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

В рамках стандарта OpenID Подключение (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 устраняет до двух сетевых запросов, уменьшая задержку в приложении.

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

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

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

Разрешения

Для вызова API UserInfo используются следующие разрешения OIDC. Утверждение openid обязательно, а области profile и email обеспечивают наличие в ответе дополнительных сведений.

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

Совет

Скопируйте этот 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": "[email protected]" // requires the “email” scope.
}

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

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

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

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

Следующие шаги