使用Azure AD B2C发出初始令牌请求时,将返回以下令牌。access_token
包含id_token
包含的大部分信息。
My questions是:
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
时
发布于 2019-04-12 21:45:38
我将以谷歌为例,
1)假设你想实现social login
,其中你最需要像email
,'first_name',‘last_name’这样的字段,这些字段大多在id_token
中可用。因此,id_token
非常适合于authentication
。
2)以后需要获取登录用户的google contacts
,这种情况下无法在id_token
中获取该用户的contacts
。这就是access_token
的用武之地,尽管你在access_token中没有contacts
,但拥有获取联系人的所有权限。
发布于 2019-04-15 06:39:49
ID令牌用于身份验证。它被表示为一个JSON Web Token (JWT),其中包含关于身份验证事件的声明,其中包含资源所有者的身份信息。ID令牌用于客户端应用程序(单页应用程序),其aud
(受众)声明包含客户端应用程序的OAuth 2.0 client_id
。
访问令牌旨在供客户端访问由资源所有者拥有的资源。它被表示为JWT (例如,Azure AD B2C将访问令牌表示为JWT)或不透明令牌。访问令牌旨在用于资源应用程序(例如API应用程序),其aud
声明包含资源应用程序的OAuth 2.0 client_id
。
https://stackoverflow.com/questions/55652836
复制相似问题