Skip to main content

2. Authorization Server Metadata (授权服务器元数据)

授权服务器可以拥有描述其配置的元数据. 本规范使用以下授权服务器元数据值,并在第 7.1 节建立的 IANA "OAuth Authorization Server Metadata" 注册表中进行注册:

issuer

  • REQUIRED (必需). 授权服务器的发行者标识符 (issuer identifier),它是一个使用 "https" 方案且没有查询 (query) 或片段 (fragment) 组件的 URL. 授权服务器元数据发布在根据 RFC 5785 [RFC5785] 从此发行者标识符派生的 ".well-known" 位置,如第 3 节所述. 发行者标识符用于防止授权服务器混淆攻击 (authorization server mix-up attacks),如 "OAuth 2.0 Mix-Up Mitigation" [MIX-UP] 中所述.

authorization_endpoint

  • 授权服务器的授权端点 [RFC6749] 的 URL. 除非不支持使用授权端点的许可类型,否则这是 REQUIRED (必需) 的.

token_endpoint

  • 授权服务器的令牌端点 [RFC6749] 的 URL. 除非仅支持隐式许可类型 (implicit grant type),否则这是 REQUIRED (必需) 的.

jwks_uri

  • OPTIONAL (可选). 授权服务器的 JWK Set [JWK] 文档的 URL. 引用的文档包含客户端用于验证来自授权服务器的签名的签名密钥. 此 URL 必须 (MUST) 使用 "https" 方案. JWK Set 也可以 (MAY) 包含服务器的加密密钥,客户端使用这些密钥来加密对服务器的请求. 当签名密钥和加密密钥都可用时,引用的 JWK Set 中的所有密钥都必须 (REQUIRED) 有一个 "use" (公钥用途) 参数值,以指示每个密钥的预期用途.

registration_endpoint

  • OPTIONAL (可选). 授权服务器的 OAuth 2.0 动态客户端注册端点 [RFC7591] 的 URL.

scopes_supported

  • RECOMMENDED (推荐). 包含此授权服务器支持的 OAuth 2.0 [RFC6749] "scope" 值列表的 JSON 数组. 即使使用此参数,服务器也可以 (MAY) 选择不公布某些支持的作用域值.

response_types_supported

  • REQUIRED (必需). 包含此授权服务器支持的 OAuth 2.0 "response_type" 值列表的 JSON 数组. 使用的数组值与 "OAuth 2.0 Dynamic Client Registration Protocol" [RFC7591] 定义的 "response_types" 参数使用的值相同.

response_modes_supported

  • OPTIONAL (可选). 包含此授权服务器支持的 OAuth 2.0 "response_mode" 值列表的 JSON 数组,如 "OAuth 2.0 Multiple Response Type Encoding Practices" [OAuth.Responses] 中所指定. 如果省略,默认值为 ["query", "fragment"]. 响应模式值 "form_post" 也在 "OAuth 2.0 Form Post Response Mode" [OAuth.Post] 中定义.

grant_types_supported

  • OPTIONAL (可选). 包含此授权服务器支持的 OAuth 2.0 许可类型 (grant type) 值列表的 JSON 数组. 使用的数组值与 "OAuth 2.0 Dynamic Client Registration Protocol" [RFC7591] 定义的 "grant_types" 参数使用的值相同. 如果省略,默认值为 ["authorization_code", "implicit"].

token_endpoint_auth_methods_supported

  • OPTIONAL (可选). 包含此令牌端点支持的客户端认证方法列表的 JSON 数组. 客户端认证方法值在 [RFC7591] 第 2 节定义的 "token_endpoint_auth_method" 参数中使用. 如果省略,默认值为 "client_secret_basic" -- OAuth 2.0 [RFC6749] 第 2.3.1 节中指定的 HTTP 基本认证方案 (HTTP Basic Authentication Scheme).

token_endpoint_auth_signing_alg_values_supported

  • OPTIONAL (可选). 包含令牌端点支持的 JWS 签名算法 ("alg" 值) 列表的 JSON 数组,用于在令牌端点使用 "private_key_jwt" 和 "client_secret_jwt" 认证方法进行客户端认证时对 JWT [JWT] 的签名. 如果在 "token_endpoint_auth_methods_supported" 条目中指定了这两种认证方法中的任何一种,则此元数据条目必须 (MUST) 存在. 如果省略此条目,则不暗示默认算法. 服务器应该 (SHOULD) 支持 "RS256". 禁止 (MUST NOT) 使用值 "none".

service_documentation

  • OPTIONAL (可选). 包含开发人员在使用授权服务器时可能想要或需要了解的人类可读信息的页面的 URL. 特别是,如果授权服务器不支持动态客户端注册 (Dynamic Client Registration),则需要在此文档中提供有关如何注册客户端的信息.

ui_locales_supported

  • OPTIONAL (可选). 用户界面支持的语言和脚本,表示为来自 BCP 47 [RFC5646] 的语言标签值的 JSON 数组. 如果省略,则不指定支持的语言和脚本集.

op_policy_uri

  • OPTIONAL (可选). 授权服务器提供给注册客户端的人员的 URL,用于阅读授权服务器对客户端如何使用授权服务器提供的数据的要求. 如果提供,注册过程应该 (SHOULD) 向注册客户端的人员显示此 URL. 如第 5 节所述,尽管标识符 "op_policy_uri" 看起来是 OpenID 特定的,但它在本规范中的使用实际上是指一般的 OAuth 2.0 功能,而不是特定于 OpenID Connect 的.

op_tos_uri

  • OPTIONAL (可选). 授权服务器提供给注册客户端的人员的 URL,用于阅读授权服务器的服务条款. 如果提供,注册过程应该 (SHOULD) 向注册客户端的人员显示此 URL. 如第 5 节所述,尽管标识符 "op_tos_uri" 看起来是 OpenID 特定的,但它在本规范中的使用实际上是指一般的 OAuth 2.0 功能,而不是特定于 OpenID Connect 的.

revocation_endpoint

  • OPTIONAL (可选). 授权服务器的 OAuth 2.0 撤销端点 [RFC7009] 的 URL.

revocation_endpoint_auth_methods_supported

  • OPTIONAL (可选). 包含此撤销端点支持的客户端认证方法列表的 JSON 数组. 有效的客户端认证方法值是在 IANA "OAuth Token Endpoint Authentication Methods" 注册表 [IANA.OAuth.Parameters] 中注册的值. 如果省略,默认值为 "client_secret_basic" -- OAuth 2.0 [RFC6749] 第 2.3.1 节中指定的 HTTP 基本认证方案.

revocation_endpoint_auth_signing_alg_values_supported

  • OPTIONAL (可选). 包含撤销端点支持的 JWS 签名算法 ("alg" 值) 列表的 JSON 数组,用于在撤销端点使用 "private_key_jwt" 和 "client_secret_jwt" 认证方法进行客户端认证时对 JWT [JWT] 的签名. 如果在 "revocation_endpoint_auth_methods_supported" 条目中指定了这两种认证方法中的任何一种,则此元数据条目必须 (MUST) 存在. 如果省略此条目,则不暗示默认算法. 禁止 (MUST NOT) 使用值 "none".

introspection_endpoint

  • OPTIONAL (可选). 授权服务器的 OAuth 2.0 内省端点 [RFC7662] 的 URL.

introspection_endpoint_auth_methods_supported

  • OPTIONAL (可选). 包含此内省端点支持的客户端认证方法列表的 JSON 数组. 有效的客户端认证方法值是在 IANA "OAuth Token Endpoint Authentication Methods" 注册表 [IANA.OAuth.Parameters] 或在 IANA "OAuth Access Token Types" 注册表 [IANA.OAuth.Parameters] 中注册的值. (由于第 7.2 节的原因,这些值是并将保持不同.) 如果省略,则必须 (MUST) 通过其他方式确定支持的认证方法集.

introspection_endpoint_auth_signing_alg_values_supported

  • OPTIONAL (可选). 包含内省端点支持的 JWS 签名算法 ("alg" 值) 列表的 JSON 数组,用于在内省端点使用 "private_key_jwt" 和 "client_secret_jwt" 认证方法进行客户端认证时对 JWT [JWT] 的签名. 如果在 "introspection_endpoint_auth_methods_supported" 条目中指定了这两种认证方法中的任何一种,则此元数据条目必须 (MUST) 存在. 如果省略此条目,则不暗示默认算法. 禁止 (MUST NOT) 使用值 "none".

code_challenge_methods_supported

  • OPTIONAL (可选). 包含此授权服务器支持的代码交换证明密钥 (Proof Key for Code Exchange, PKCE) [RFC7636] 代码质询方法 (code challenge methods) 列表的 JSON 数组. 代码质询方法值在 [RFC7636] 第 4.3 节定义的 "code_challenge_method" 参数中使用. 有效的代码质询方法值是在 IANA "PKCE Code Challenge Methods" 注册表 [IANA.OAuth.Parameters] 中注册的值. 如果省略,则授权服务器不支持 PKCE.

其他授权服务器元数据参数也可以 (MAY) 使用. 某些参数由其他规范定义,例如 OpenID Connect Discovery 1.0 [OpenID.Discovery].

2.1. Signed Authorization Server Metadata (签名的授权服务器元数据)

除了 JSON 元素之外,元数据值也可以 (MAY) 作为 "signed_metadata" 值提供,它是一个 JSON Web Token (JWT) [JWT],作为一个捆绑包断言关于授权服务器的元数据值. 可以在签名元数据中使用的一组声明在第 2 节中定义. 签名元数据必须 (MUST) 使用 JSON Web Signature (JWS) [JWS] 进行数字签名或 MAC,并且必须 (MUST) 包含一个 "iss" (issuer, 发行者) 声明,表示证明签名元数据中声明的一方. 元数据的消费者如果不支持此功能,可以 (MAY) 忽略签名元数据. 如果元数据的消费者支持签名元数据,则在签名元数据中传达的元数据值必须 (MUST) 优先于使用纯 JSON 元素传达的相应值.

签名元数据使用此 OPTIONAL (可选) 成员包含在授权服务器元数据 JSON 对象中:

signed_metadata

  • 包含关于授权服务器的元数据值作为声明的 JWT. 这是一个由整个签名 JWT 组成的字符串值. "signed_metadata" 元数据值不应该 (SHOULD NOT) 作为声明出现在 JWT 中.