使用 Keycloak 配置动态客户端注册(DCR)
动态客户端注册(Dynamic Client Registration, DCR)是一种 OAuth 2.0 机制,允许客户端应用程序以编程方式向授权服务器进行注册,而无需在身份提供商(IdP)中进行手动配置。应用程序无需预先创建凭证,而是在运行时根据定义的注册策略接收 Client ID 和 Client Secret,从而实现可扩展的自动化接入。
在 API7 门户中,动态客户端注册(DCR)可以自动执行 OAuth 客户端注册流程:
- 管理员向 API7 提供来自 Keycloak 的初始 Access Token,该 Token 允许 API7 调用 Keycloak 的注册 API。
- 开发者直接在开发者门户中添加 OAuth 客户端,无需在 Keycloak 中手动创建客户端。
- API7 使用初始 Access Token 在 Keycloak 中动态创建 OAuth 客户端。
本指南将介绍如何使用 DCR 将 API7 企业版开发者门户与 Keycloak(作为身份提供商 IdP)集成。你将在提供方门户中发布 API,为 DCR 配置 Keycloak,然后使用开发者门户创建应用程序、订阅 API 并获取 OAuth 2.0 Access Token 以安全地消费 API。
前置条件
- 已安装并激活带有门户许可证的 API7 企 业版 v3.9.0 或更高版本。如果你使用的是试用许可证,则门户默认启用。请参阅安装 API7 企业版。
- 已部署并配置开发者门户。
- 已部署并可访问的 Keycloak。本指南使用
quay.io/keycloak/keycloak:21.1.1镜像进行测试。不同版本的 Keycloak 行为可能有所不同,因此如果你使用的是其他版本,请根据需要调整步骤。
配置提供方门户
在本节中,你将在 API7 提供方门户中配置 DCR 提供方并创建 API 产品。
发布服务
- 遵循发布你的第一个 API 创建服务和路由。
- 为路由添加标签(Label),例如
portal:dcr:require_any_scopes: phone。请求 Access Token 时,请求中指定的scope必须与路由标签中设置的值匹配。

配置 DCR 提供方
- 在你的 Keycloak 领域(Realm,例如
master)中,创建一个 初始 Access Token。 - 在提供方门户中,导航到 DCR 提供方(DCR Providers) 并点击 添加 DCR 提供方(Add DCR Provider)。
- 填写 DCR 提供方详情:
- 名称(Name):输入提供方的描述性名称。
- Issuer:输入 Keycloak Issuer URL。
- Auth Headers:输入
Authorization作为 Header 名称,值为Bearer ${ACCESS_TOKEN}。请将你的 Keycloak 初始 Access Token 替换进去。

创建 API 产品
-
导航到 API 产品(API Products) 并点击 添加 API 产品(Add API Product)。选择 从 API7 网关(From API7 Gateway) 创建产品。
-
配置 API 产品:
- 名称(Name):输入 API 产品的描述性名称。
- 身份验证类型(Authentication Type):选择 DCR。
- DCR 提供方(DCR Provider):选择先前配置的 Keycloak 提供方。
- 添加关联的网关服务(Add Linked Gateway Service):选择网关组和先前发布的服务(例如
httpbin