跳到主要内容

2. Resource Parameter (resource 参数)

2. Resource Parameter (resource 参数)

在向授权服务器的请求中, 客户端可以通过在请求中包含以下参数, 指明其请求访问的受保护资源 (亦称资源服务器, 应用程序, API 等).

resource

: 表示正在请求访问的目标服务或资源. 其值必须为绝对 URI (absolute URI), 如 [RFC3986] 第 4.3 节所规定. 该 URI 绝对不能包含 fragment (片段) 组件. 该 URI 不应包含 query (查询) 组件, 但承认在某些情形下 query 组件是 resource 参数中有用且必要的部分, 例如当使用一个或多个查询参数将请求限定到某一应用时. resource 参数的 URI 值表示资源身份的标识符, 可以是对目标资源所在可网络寻址位置的定位符 (locator). 可以使用多个 resource 参数, 表示所请求的令牌拟在多个资源处使用.

该参数值标识客户端请求访问的资源. 该参数可承载受保护资源的位置, 通常为 https URL 或更抽象的标识符. 这使授权服务器能够按资源适用策略行事, 例如确定要签发的令牌类型与内容, 是否以及如何加密令牌, 以及施加适当的受众限制.

客户端应为其打算访问的完整 API 或资源集合提供尽可能具体的 URI. 实践中, 客户端会知晓与其交互的应用或资源的基 URI (base URI), 适合用作 resource 参数的值. 除非对资源有具体了解而需要另行处理, 客户端应使用 API 的基 URI 作为 resource 参数的值. 例如, 若某资源是该主机上的唯一应用, 可使用值 https://api.example.com/; 若该主机上有许多应用之一, 则使用诸如 https://api.example.com/app/ 等更具体的值. 另一例是 API 具有多个端点时, 例如 System for Cross-domain Identity Management (SCIM, 跨域身份管理系统) [RFC7644] 具有 https://apps.example.com/scim/Users, https://apps.example.com/scim/Groups, https://apps.example.com/scim/Schemas 等端点. 客户端应使用 https://apps.example.com/scim/ 作为资源, 使签发的访问令牌对 SCIM API 的所有端点均有效.

授权服务器可使用以下错误码, 在授权请求或访问令牌请求的响应中指示所请求资源存在问题, 也可用于告知客户端其请求的资源与 scope 组合无效.

invalid_target

: 所请求的资源无效, 缺失, 未知或格式错误.

授权服务器应对签发的访问令牌施加受众限制, 限制到 resource 参数所指示的资源. 受众限制可在 JSON Web Token (JWT) [RFC7519] 中通过 aud 声明传达; 在令牌自省 (Token Introspection) [RFC7662] 响应中, 同名顶层成员提供受众限制信息. 授权服务器可将精确的 resource 值用作受众, 也可将该值映射为给定资源更一般的 URI 或抽象标识符.