跳到主要内容

7. 访问受保护资源 (Accessing Protected Resources)

客户端通过向资源服务器 (Resource Server) 出示访问令牌 (Access Token) 来访问受保护资源. 资源服务器必须 (MUST) 验证访问令牌, 并确保该令牌尚未过期, 且其作用域 (Scope) 覆盖所请求的资源. 资源服务器用于验证访问令牌的方法以及任何错误响应均超出本规范范围, 但通常涉及资源服务器与授权服务器 (Authorization Server) 之间的交互或协调.

客户端使用访问令牌向资源服务器进行认证的方式取决于授权服务器签发的访问令牌类型. 通常, 这会使用 HTTP "Authorization" 请求头字段 [RFC2617], 并采用所使用访问令牌类型规范定义的认证方案, 例如 [RFC6750].

7.1. 访问令牌类型 (Access Token Types)

访问令牌类型向客户端提供成功使用访问令牌发起受保护资源请求所需的信息, 以及类型特定的属性. 如果客户端不理解令牌类型, 则不得 (MUST NOT) 使用该访问令牌.

例如, [RFC6750] 定义的 "bearer" 令牌类型通过在请求中简单包含访问令牌字符串来使用:

GET /resource/1 HTTP/1.1
Host: example.com
Authorization: Bearer mF_9.B5f-4.1JqM

而 [OAuth-HTTP-MAC] 定义的 "mac" 令牌类型则会与访问令牌一起签发一个消息认证码 (Message Authentication Code, MAC) 密钥, 用于对 HTTP 请求的某些组成部分进行签名:

GET /resource/1 HTTP/1.1
Host: example.com
Authorization: MAC id="h480djs93hd8",
nonce="274312:dj83hs9s",
mac="kDZvddkndxvhGRXZhvuDjEWhGeE="

以上示例仅用于说明. 开发者在使用前应参考 [RFC6750] 和 [OAuth-HTTP-MAC] 规范.

每一种访问令牌类型定义都会规定随 "access_token" 响应参数一同发送给客户端的附加属性 (如有). 它还会定义在发起受保护资源请求时用于携带访问令牌的 HTTP 认证方法.

7.2. 错误响应 (Error Response)

如果资源访问请求失败, 资源服务器应该 (SHOULD) 将错误告知客户端. 虽然此类错误响应的具体细节超出本规范范围, 但本文档在第 11.4 节建立了一个公共注册表, 用于在 OAuth 令牌认证方案之间共享错误值.

主要为 OAuth 令牌认证而设计的新认证方案应该 (SHOULD) 定义一种机制, 用于向客户端提供错误状态码; 允许的错误值应注册到本规范建立的错误注册表中.

此类方案可以 (MAY) 将有效错误码集合限制为已注册值的一个子集. 如果错误码通过命名参数返回, 则参数名称应该 (SHOULD) 为 "error".

其他可用于 OAuth 令牌认证但并非主要为此目的设计的方案, 也可以 (MAY) 以同样方式将其错误值绑定到该注册表.

新的认证方案还可以 (MAY) 选择规定使用 "error_description" 和 "error_uri" 参数返回错误信息, 其方式与这些参数在本规范中的用法相对应.