1. Introduction (简介)
OAuth使客户端能够通过获取访问令牌 (Access Token) 来访问受保护的资源,访问令牌在"OAuth 2.0授权框架" [RFC6749] 中被定义为"代表颁发给客户端的访问授权的字符串",而不是直接使用资源所有者的凭据。
令牌由授权服务器 (Authorization Server) 在资源所有者 (Resource Owner) 批准的情况下颁发给客户端。客户端使用访问令牌访问由资源服务器 (Resource Server) 托管的受保护资源。本规范描述了当OAuth访问令牌是持有者令牌 (Bearer Token) 时,如何发起受保护资源请求。
本规范定义了在HTTP/1.1 [RFC2616] 上使用传输层安全协议 (TLS) [RFC5246] 来访问受保护资源时,如何使用持有者令牌。TLS是本规范强制 (mandatory) 实现和使用的;其他规范可以扩展本规范以用于其他协议。虽然本规范设计用于OAuth 2.0授权 [RFC6749] 流程产生的访问令牌来访问OAuth保护的资源,但实际上本规范定义了一种通用的HTTP授权方法,可以与来自任何来源的持有者令牌一起使用,以访问由这些持有者令牌保护的任何资源。Bearer认证方案 (Authentication Scheme) 主要用于使用WWW-Authenticate和Authorization HTTP头进行服务器认证,但不排除其用于代理认证。
1.1. Notational Conventions (符号约定)
本文档中的关键词"MUST" (必须)、"MUST NOT" (禁止)、"REQUIRED" (必需)、"SHALL" (应)、"SHALL NOT" (不应)、"SHOULD" (应该)、"SHOULD NOT" (不应该)、"RECOMMENDED" (推荐)、"MAY" (可以) 和 "OPTIONAL" (可选) 应按照"RFC中用于指示要求级别的关键词" [RFC2119] 中的描述进行解释。
本文档使用 [RFC5234] 的增强巴科斯-诺尔范式 (ABNF) 表示法。此外,以下规则包含自HTTP/1.1 [RFC2617]: auth-param和auth-scheme;以及来自"统一资源标识符 (URI): 通用语法" [RFC3986]: URI-reference。
除非另有说明,否则所有协议参数名称和值都区分大小写。
1.2. Terminology (术语)
Bearer Token (持有者令牌)
一种安全令牌,具有以下特性: 任何拥有该令牌的一方("持有者")都可以像任何其他拥有该令牌的一方一样使用该令牌。使用持有者令牌不需要持有者证明拥有加密密钥材料(所有权证明, proof-of-possession)。
所有其他术语均按照"OAuth 2.0授权框架" [RFC6749] 中的定义。
1.3. Overview (概述)
OAuth为客户端提供了一种代表资源所有者访问受保护资源的方法。在一般情况下,在客户端可以访问受保护资源之前,它必须首先从资源所有者获得授权许可 (Authorization Grant),然后将授权许可交换为访问令牌。访问令牌代表授权许可所授予的作用域 (Scope)、持续时间和其他属性。客户端通过向资源服务器出示访问令牌来访问受保护资源。在某些情况下,客户端可以直接向授权服务器出示自己的凭据以获取访问令牌,而无需首先从资源所有者获得授权许可。
访问令牌提供了一种抽象,用单个资源服务器理解的令牌替换不同的授权构造(例如,用户名和密码、断言)。这种抽象使得可以颁发在短时间内有效的访问令牌,并消除了资源服务器需要理解各种认证方案的需求。
+--------+ +---------------+
| |--(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: 抽象协议流程
图1所示的抽象OAuth 2.0流程描述了客户端、资源所有者、授权服务器和资源服务器之间的交互 (在 [RFC6749] 中描述)。以下两个步骤在本文档中指定:
(E) 客户端从资源服务器请求受保护资源,并通过出示访问令牌进行身份验证。
(F) 资源服务器验证访问令牌,如果有效,则提供请求的服务。
本文档还对步骤(D)中返回的访问令牌施加了语义要求。