什么是OpenID Connect访问令牌?

时间:2017-11-04 04:12:36

标签: http security oauth-2.0 jwt openid-connect

OpenID Connect JWT令牌包含id_tokenaccess_token(如"access_token": "SlAV32hkKG")。什么是access_token

答案示例

只需添加一个示例来补充从this linked article

中获取的答案 用户信息端点请求
GET /userinfo HTTP/1.1
Host: openid.c2id.com
Authorization: Bearer SlAV32hkKG
用户信息端点响应
HTTP/1.1 200 OK
Content-Type: application/json

{
  "sub"                     : "alice",
  "email"                   : "alice@wonderland.net",
  "email_verified"          : true,
  "name"                    : "Alice Adams",
  "picture"                 : "https://c2id.com/users/alice.jpg"
}

2 个答案:

答案 0 :(得分:2)

你的问题的答案在于specification的第5.3和16.4节。访问令牌用于访问作为受保护资源的userinfo端点。

  

16.4。访问令牌披露

     

访问令牌是用于访问受保护资源的凭据,如OAuth 2.0 [RFC6749]的第1.4节中所定义。访问令牌代表最终用户的授权,不得暴露给未授权方。

[...]

  

5.3。 UserInfo端点

     

UserInfo端点是OAuth 2.0受保护资源,它返回有关经过身份验证的最终用户的声明。要获取有关最终​​用户的请求声明,客户端使用通过OpenID Connect身份验证获取的访问令牌向UserInfo端点发出请求。这些声明通常由JSON对象表示,该对象包含声明的名称和值对的集合。

答案 1 :(得分:1)

tl; dr - 访问令牌 授予访问受保护资源的权限,其中 ID令牌 进行身份验证。

访问令牌

作为对OAuth2.0的扩展,OpenID Connect保留OAuth2.0规范中定义的令牌/参数。 访问令牌 就是这样的一件事。根据协议的定义,访问令牌用于访问受保护的资源。它取代了用户凭证,手动生成的令牌或过去使用过的安全密钥(例如: - 考虑基本身份验证)。

请注意,访问令牌可以是不透明的字符串。这意味着接收它的客户端无法消费它。但授权服务器知道它是什么。例如,内省端点(RFC7662)可用于验证访问令牌的有效性。并且访问令牌也可以是JWT,具体取决于使用和实现。

ID令牌

这是OpenID Connect引入OAuth2.0的内容。 ID令牌是JWT,客户端使用它来验证最终用户(资源所有者)。通过验证ID令牌,客户端可以进行身份​​验证。由于这个事实,人们可以说它只能用一次。

另请注意,在某些实现中,ID令牌被用作承载令牌。这意味着,ID令牌就像访问令牌一样用于身份验证和授权。