Стандартная реализация в получении токена доступа и основной информации о пользователе через владельца ресурса. Предоставление пароля с OpenID Connect. - PullRequest
0 голосов
/ 18 февраля 2019

Я хочу аутентифицировать имя пользователя и пароль пользователя, и в случае успеха я хочу использовать токен для получения базовой информации о пользователе.

Тип предоставления - это Предоставление пароля владельца ресурса с OpenID Connect.

Однако существует разница в том, как это реализовано в различных провайдерах идентификации.Например, OneLogin требует два запроса для получения основной пользовательской информации.В то время как Azure AD B2C и IdentityServer4 требуют одного запроса.

Какая реализация является стандартом OpenID Connect?Если OneLogin используется для моего проекта, какие лучшие практики доступны для переносимости платформы?

OneLogin:

Первый запрос:

Получение токена

URL: https://openid -connect.onelogin.com / oidc / token

Ссылка: https://developers.onelogin.com/openid-connect/api/password-grant

Результат:

{
"access_token": "example",
"expires_in": 2313232,
"token_type": "Bearer",
"refresh_token": "example"
}

Второй запрос:

Получение информации о пользователе

URL: https://openid -connect.onelogin.com/ oidc / me

Ссылка: https://developers.onelogin.com/openid-connect/api/user-info

Результат:

{
"sub": "123",
"email": "my@lmail.com",
"preferred_username": "my@email.com",
"name": "My Name",
"updated_at": "2019-03-13T16:11:15Z",
"given_name": "My",
"family_name": "Name"
}

1 Ответ

0 голосов
/ 12 марта 2019

Это частично относится к «открытому» определению в OAuth2 вокруг определения токена.В Azure AD токен доступа - это JWT, предоставляющий основную информацию о пользователе.Получите токен доступа (через любой тип предоставления), и у вас будет основная информация о пользователе.В Onelogin (и других IdP, таких как Salesforce) токен доступа является просто непрозрачным токеном, который не содержит различимых данных.Это токен для доступа к ресурсам.

Так что здесь нет стандарта, но если вы ищете согласованность, вы должны предположить, что токен доступа из любого IdP не содержит информации о пользователе.Либо инициируйте грант, который возвращает токен OIDC, либо используйте токен доступа для запроса и конечную точку API, которая возвращает информацию о пользователе.Обратите внимание, что предоставление пароля владельца ресурса должно с областью openid возвращать id_token, который включает вашу основную информацию о пользователе.

Это (новый инструмент) также должно помочь уточнить https://youtu.be/do0agd71hE8

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