跳到主要内容

1. 引言

OAuth 使客户端能够通过获取访问令牌来访问受保护资源, 而不是直接使用资源所有者的凭据. "The OAuth 2.0 Authorization Framework" [RFC6749] 将访问令牌定义为 "a string representing an access authorization issued to the client".

令牌由授权服务器在资源所有者批准后签发给客户端. 客户端使用访问令牌访问资源服务器托管的受保护资源. 本规范描述当 OAuth 访问令牌是 bearer token 时如何发出受保护资源请求.

本规范定义在 HTTP/1.1 [RFC2616] 上使用 Transport Layer Security (TLS) [RFC5246] 和 bearer token 访问受保护资源. TLS 对本规范而言必须实现并使用. 其他规范可以扩展本规范以用于其他协议. 虽然本规范设计用于通过 OAuth 2.0 授权 [RFC6749] 流程产生的访问令牌访问 OAuth 受保护资源, 但它实际定义了一种通用 HTTP 授权方法, 可使用来自任何来源的 bearer token 访问由这些 bearer token 保护的任何资源. Bearer 认证方案主要用于通过 WWW-Authenticate 和 Authorization HTTP 头进行服务器认证, 但不排除其用于代理认证.

1.1. 记法约定

本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 和 "OPTIONAL" 应按照 "Key words for use in RFCs to Indicate Requirement Levels" [RFC2119] 中的描述解释.

本文档使用 [RFC5234] 的 Augmented Backus-Naur Form (ABNF) 记法. 此外, 本文档包含来自 HTTP/1.1 [RFC2617] 的以下规则: auth-param 和 auth-scheme. 以及来自 "Uniform Resource Identifier (URI): Generic Syntax" [RFC3986] 的 URI-reference.

除非另有说明, 所有协议参数名称和值均区分大小写.

1.2. 术语

Bearer Token : 一种安全令牌, 其属性是任何持有该令牌的一方 ("bearer") 都可以像任何其他持有该令牌的一方一样使用它. 使用 bearer token 不要求 bearer 证明拥有密码学密钥材料 (proof-of-possession).

所有其他术语按 "The OAuth 2.0 Authorization Framework" [RFC6749] 中的定义.

1.3. 概述

OAuth 提供一种方法, 使客户端能够代表资源所有者访问受保护资源. 一般情况下, 客户端在访问受保护资源之前, 必须先从资源所有者获得授权许可, 然后用该授权许可交换访问令牌. 访问令牌表示授权许可授予的范围、期限和其他属性. 客户端通过向资源服务器出示访问令牌来访问受保护资源. 在某些情况下, 客户端可以直接向授权服务器出示自己的凭据以获取访问令牌, 而无需先从资源所有者获得授权许可.

访问令牌提供一种抽象, 用资源服务器理解的单一令牌替代不同的授权构造 (例如用户名和密码、assertion). 这种抽象使得可以签发短期有效的访问令牌, 同时消除资源服务器理解大量认证方案的需要.

  +--------+                               +---------------+
| |--(A)- Authorization Request ->| Resource |
| | | Owner |
| |<-(B)-- Authorization Grant ---| |
| | +---------------+
| |
| | +---------------+
| |--(C)-- Authorization Grant -->| Authorization |
| Client | | Server |
| |<-(D)----- Access Token -------| |
| | +---------------+
| |
| | +---------------+
| |--(E)----- Access Token ------>| Resource |
| | | Server |
| |<-(F)--- Protected Resource ---| |
+--------+ +---------------+

Figure 1: Abstract Protocol Flow

图 1 所示的抽象 OAuth 2.0 流程描述客户端、资源所有者、授权服务器和资源服务器之间的交互 (见 [RFC6749]). 本文档规定以下两个步骤:

(E) 客户端向资源服务器请求受保护资源, 并通过出示访问令牌进行认证.

(F) 资源服务器验证访问令牌, 如果有效, 则为请求提供服务.

本文档还对步骤 (D) 中返回的访问令牌施加语义要求.