3. 令牌类型标识符
本规范中的若干参数使用标识符作为值来描述相关令牌. 具体而言, 它们是请求中的 requested_token_type, subject_token_type, actor_token_type 参数, 以及响应中的 issued_token_type 成员. 令牌类型标识符是 URI. 令牌交换既可以处理其他方签发的令牌, 也可以处理给定授权服务器签发的令牌. 对于前者, 令牌类型标识符指明语法, 例如 JWT 或 SAML 2.0, 以便授权服务器解析; 对于后者, 它指明给定授权服务器签发该令牌的用途, 例如 access_token 或 refresh_token.
本规范定义以下令牌类型标识符. 其他 URI MAY 用于表示其他令牌类型.
urn:ietf:params:oauth:token-type:access_token
表示该令牌是给定授权服务器签发的 OAuth 2.0 访问令牌.
urn:ietf:params:oauth:token-type:refresh_token
表示该令牌是给定授权服务器签发的 OAuth 2.0 刷新令牌.
urn:ietf:params:oauth:token-type:id_token
表示该令牌是 [OpenID.Core] 第 2 节定义的 ID Token.
urn:ietf:params:oauth:token-type:saml1
表示该令牌是 base64url 编码的 SAML 1.1 [OASIS.saml-core-1.1] 断言.
urn:ietf:params:oauth:token-type:saml2
表示该令牌是 base64url 编码的 SAML 2.0 [OASIS.saml-core-2.0-os] 断言.
[JWT] 第 9 节定义的值 urn:ietf:params:oauth:token-type:jwt 表示该令牌是 JWT.
访问令牌和 JWT 之间的区别比较微妙. 访问令牌表示一个委派的授权决定, 而 JWT 是一种令牌格式. 访问令牌可以采用 JWT 格式, 但并非必须如此. JWT 也完全可能是访问令牌, 但并非所有 JWT 都是访问令牌. 本规范的意图是, urn:ietf:params:oauth:token-type:access_token 表明该令牌是相关授权服务器签发的典型 OAuth 访问令牌, 对客户端不透明, 并且可按与从该授权服务器获得的任何其他访问令牌相同的方式使用. 它完全可能是 JWT, 但客户端并不知道也不需要知道这一事实. 相比之下, urn:ietf:params:oauth:token-type:jwt 专门表示正在请求或发送 JWT, 例如在跨域用例中, 可如 [RFC7523] 所支持的那样, 将 JWT 用作授权许可, 以便从不同的授权服务器获取访问令牌.
注意, 对于本质上是二进制的令牌, 用于传递它们的 URI 需要关联 base64 或其他适合与 HTTP 和 OAuth 一起使用的编码语义.