Access Token содержит практически всю информацию из Identity Token - PullRequest
0 голосов
/ 12 апреля 2019

Приведенные ниже токены возвращаются при первоначальном запросе токена с Azure AD B2C . access_token содержит большую часть информации, которую содержит id_token.

Мои вопросы :

1 Поскольку access_token содержит большую часть информации, содержащейся в id_token, какой сценарий можно использовать access_token вместо id_token? какой сценарий должен использоваться id_token вместо access_token?

2 Каковы правила использования access_token и id_token в целом?

Результат по первому запросу токена

{
"access_token": "access_token",
"token_type": "Bearer",
"expires_in": "3600",
"refresh_token": "refresh_token",
"id_token": "id_token"
}

Ниже приведен декодированный токен для соответствующего токена:

Обратите внимание, что access_token содержит большую часть информации от id_token, включая информацию о пользователе.

access_token

{
"iss": "url",
"exp": 1550539339,
"nbf": 1550535739,
"aud": "audience ",
"idp": "LocalAccount",
"sub": "guid",
"name": "user@email.com",
"emails": [
"user@email.com"
],
"tfp": "B2C_1_ROPC_Auth",
"ver": "1.0",
"iat": 1550535739,
"azp": "guid"
}

id_token

{
"iss": "url",
"exp": 1550539339,
"nbf": 1550535739,
"aud": "audience ",
"idp": "LocalAccount",
"sub": "guid",
"name": "user@email.com",
"emails": [
"user@email.com"
],
"tfp": "B2C_1_ROPC_Auth",
"ver": "1.0",
"iat": 1550535739,
"auth_time": 1550535739,
"at_hash": "access_token hash"
}

Обновление

В дополнение к вопросу 1 выше: Поскольку access_token содержит большую часть информации, содержащейся в id_token, можно ли использовать access_token вместо id_token? То есть когда id_token должен использоваться вместо access_token?

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Идентификационный токен предназначен для аутентификации. Он представлен в виде веб-токена JSON (JWT), который содержит утверждения о событии аутентификации, включая информацию об идентификации для владельца ресурса. Идентификационный токен предназначен для клиентского приложения (одностраничного приложения), а его утверждение aud (аудитория) содержит OAuth 2.0 client_id клиентского приложения.

Маркер доступа предназначен для доступа клиентов к ресурсам, которые принадлежат владельцу ресурса. Он представлен в виде JWT (например, Azure AD B2C представляет токен доступа в виде JWT) или непрозрачный токен. Маркер доступа предназначен для приложения ресурса (например, приложения API), а его утверждение aud содержит OAuth 2.0 client_id приложения ресурса.

0 голосов
/ 12 апреля 2019

Я возьму Google в качестве примера,

1) Допустим, вы хотите реализовать social login, где вам в основном нужны такие поля, как email, 'first_name', 'last_name'. Эти поляв основном доступно в id_token.так что id_token идеально подходит для authentication.

2) позже вам нужно получить google contacts пользователя входа в систему. В таких случаях вы не можете получить contacts пользователя в id_token.это то место, куда приходит access_token, хотя у вас не будет contacts в access_token, но у вас будет полное разрешение на выборку контактов.

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