配置动态客户端注册 (DCR)
动态客户端注册 (DCR) 允许开发者通过 开发者门户以编程方式注册 OAuth 2.0 客户端,而无需在身份提供程序中手动创建客户端。当开发者创建 OAuth 凭证时,门户会自动向配置的 DCR 提供程序注册客户端,并返回客户端 ID 和密钥。
先决条件
按照管理 Token创建 Token 并导出:
export API_KEY="a7ee-xxxxxxxxxxxxx"
DCR 提供商类型
API7 支持两种类型的 DCR 提供程序:
OIDC
OIDC 提供程序类型使用标准 RFC 7591 和 RFC 7592 协议。门户从身份提供商的 .well-known/openid-configuration端点中发现注册端点。
支持 的操作:
| 运营 | 协议 | 描述 |
|---|---|---|
| 注册客户 | RFC 7591 | POST 注册为端点。 |
| 更新客户端 | RFC 7592 | PUT 到 registration_client_uri 与 registration_access_token。 |
| 删除客户端 | RFC 7592 | DELETE 至 registration_client_uri。 |
| 旋转秘密 | 不支持 | OIDC 提供商不支持秘密轮换。 |
HTTP 桥
HTTP 桥接提供程序类型使用自定义 API 与不支持标准 DCR 协议的身份提供程序进行通信。你部署 HTTP 桥接服务,该服务在门户的 API 和你的身份提供商之间进行转换。
支持的操作:
| 运营 | 方法 | 端点 |
|---|---|---|
| 注册客户 | POST | {base_url}/clients |
| 更新客户端 | PUT | {base_url}/clients/{client_id} |
| 删除客户端 | DELETE | {base_url}/clients/{client_id} |
| 旋转秘密 | POST | {base_url}/clients/{client_id}/rotate-secret |
创建一个 DCR 提供者
OIDC 提供商
curl -k "https://localhost:7443/api/dcr_providers" \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "Keycloak Production",
"provider_type": "oidc",
"issuer": "https://keycloak.example.com/realms/my-realm",
"headers": {
"Authorization": "Bearer <initial-access-token>"
},
"desc": "Production Keycloak instance for OAuth client registration"
}'
如果你不在本地运行,请将 localhost 替换为你的仪表板主机。如果仪表板使用自签名 TLS 证书,则需要 -k 标志。
❶ name 是 DCR 提供商在提供商门户中显示的显示名称。
❷ provider_type 选择积分类型。使用 oidc 进行标准 OpenID Connect 动态客户端注册。
❸ OIDC 提供商需要 issuer。API7 从发行人的 /.well-known/openid-configuration 文档中发现注册端点。
❹ headers 允许你通过每个 DCR 请求发送自定义标头,例如 Keycloak 的初始访问令牌。
❺ desc 是可选的,可帮助运营商了解提供商的用途。
HTTP 桥接提供商
curl -k "https://localhost:7443/api/dcr_providers" \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "Custom OAuth Bridge",
"provider_type": "http_bridge",
"issuer": "https://issuer.example.com",
"provider_config": {
"base_url": "https://oauth-bridge.internal.example.com"
},
"headers": {
"X-API-Key": "<bridge-api-key>"
}
}'
❶ name 是 DCR 提供商在提供商门户中显示的显示名称。
❷ provider_type: "http_bridge" 告诉 API7 使用你的桥接服务而不是标准的 OIDC DCR 发现。
❸ issuer 标识桥代表的 OAuth 颁发者。
❹ provider_config.base_url 是 HTTP 桥接提供商所必需的,并指向你的桥接服务。
❺ headers 允许你将身份验证材料(例如 API 密钥)发送到桥接服务。