Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 26133:2024定义了OpenID Connect Dynamic Client Registration 1.0协议,该规范规定了OpenID Connect依赖方(RP)如何动态地向OpenID提供者(OP)注册。RP向OP提供自身信息,并获取与其交互所需的凭证,包括OAuth 2.0客户端ID。
在RP可以使用OpenID Connect服务之前,它必须与OP建立关系。动态注册自动化了这一过程,无需为每个客户端应用程序进行手动的带外注册。这在许多客户端需要与许多提供者交互的生态系统中尤为有价值。
在注册过程中,RP向OP提交其元数据。下表描述了关键的元数据字段:
| 元数据字段 | 是否必需 | 说明 |
|---|---|---|
redirect_uris |
是 | 客户端重定向URI值数组 |
response_types |
可选 | OAuth 2.0响应类型值数组(默认:code) |
grant_types |
可选 | OAuth 2.0授权类型值数组 |
application_type |
可选 | web或native,指示客户端类型 |
client_name |
可选 | 客户端可读名称 |
logo_uri |
可选 | 客户端标志的URL |
token_endpoint_auth_method |
可选 | 令牌端点的认证方法 |
contacts |
可选 | 客户端管理员的联系邮箱数组 |
sector_identifier_uri |
可选 | 成对标识符验证的URL |
redirect_uris字段是唯一必需的元数据字段——这有充分的理由。不正确的重定向URI验证是OAuth 2.0安全漏洞的最常见来源。每个注册的重定向URI必须是授权响应的精确匹配目标。该标准定义了用于客户端注册管理的主要端点:
客户端注册端点:这是一个OAuth 2.0受保护资源,客户端可通过它向授权服务器注册。RP发送包含其元数据的JSON文档,OP响应包含已注册客户端标识符和其他元数据的客户端信息响应。
客户端配置端点:注册后,客户端可通过此端点管理其注册信息。端点URL由OP在初始注册响应中返回。客户端在访问其配置时使用注册访问令牌进行身份验证。
| 操作 | HTTP方法 | 端点 | 说明 |
|---|---|---|---|
| 注册 | POST | 注册端点 | 创建新的客户端注册 |
| 读取 | GET | 配置端点 | 检索当前注册信息 |
| 更新 | PUT | 配置端点 | 修改客户端配置 |
| 删除 | DELETE | 配置端点 | 移除客户端注册 |
动态客户端注册引入了独特的安全考量。重要的工程实践包括:
sector_identifier_uri允许RP托管包含其重定向URI集合的文件。OP获取此文件以验证所有注册的重定向URI是否属于同一实体。答:在有状态注册中,OP存储客户端元数据并返回引用该存储状态的客户端ID。在无状态注册(使用软件声明)中,所有客户端元数据都编码在签名的JWT中,使OP无需持久存储即可派生客户端信息。无状态注册更易于扩展,但限制了初始创建后更新注册的能力。
答:可以。客户端配置端点支持读取、更新和删除操作。您使用初始注册期间返回的注册访问令牌来验证这些操作。如果丢失了注册访问令牌,您可能需要重新注册。
答:OP返回带有适当错误代码的注册错误响应。常见原因包括无效的重定向URI格式、不支持的元数据字段或缺少必填字段。该标准定义了特定的错误代码以帮助诊断问题。
答:原生应用可以像Web应用一样使用动态注册,但有一些重要注意事项。客户端密钥(如果颁发了)无法安全地存储在设备上。推荐的方法是使用带有PKCE的授权码流程,避免依赖客户端密钥。一些OP还颁发application_type: native特定的重定向URI,如自定义方案或回环接口重定向。