OpenID Connect 访问令牌有什么用?

What is the OpenID Connect access token for?

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"
}

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

16.4. Access Token Disclosure

Access Tokens are credentials used to access Protected Resources, as defined in Section 1.4 of OAuth 2.0 [RFC6749]. Access Tokens represent an End-User's authorization and MUST NOT be exposed to unauthorized parties.

[...]

5.3. UserInfo Endpoint

The UserInfo Endpoint is an OAuth 2.0 Protected Resource that returns Claims about the authenticated End-User. To obtain the requested Claims about the End-User, the Client makes a request to the UserInfo Endpoint using an Access Token obtained through OpenID Connect Authentication. These Claims are normally represented by a JSON object that contains a collection of name and value pairs for the Claims.

tl;dr - 访问令牌 授予访问受保护资源的权限,其中ID token被客户端消费用于认证。

访问令牌

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

请注意,访问令牌可以是不透明的字符串。这意味着接收它的客户不能使用任何东西。但是授权服务器知道它是什么。例如,内省端点 (RFC7662) 可用于验证访问令牌的有效性。根据使用和实现,访问令牌也可以是 JWT。

ID令牌

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

另请注意,在某些实现中,ID 令牌被用作不记名令牌。这意味着,ID 令牌用作身份验证和授权的访问令牌。