Keycloak 集成
本演练端到端地将 Keycloak Realm 连接到网关:用户以自己的身份登录 Keycloak,使用得到的 JWT 调用网关,并根据所属部门或用户组选定的调用方 API Key 运行,无需向每位用户分发密钥,也无需复制目录数据。本演练是 JWT 身份认证(信任与验证)和 JWT Claim 映射(评估语义)的具体实践。
你将构建:
- 一个 Keycloak Realm,其访问 Token 包含网关受众、
departmentClaim 和groupsClaim。 - 网关上的两个策略 Key:受限的
financeKey 和不受限的平台 Key。 - 两条 Claim 映射:
platform-admin用户组成员使用平台 Key;所有department = finance的用户使用财务 Key;其他用户均被拒绝。
以下步骤已使用 Keycloak 26(quay.io/keycloak/keycloak:26.3 start-dev)验证。其他版本中的字段位置可能略有不同,但所需值不变。
前提条件
开始前,请准备:
- Keycloak 部署的管理员权限。
- 一个网关代理 URL,以及两个可用的模型别名
finance-model和general-model。第二个模型用于验证映射优先级会选择权限范围更广的管理员 Key。 - 以下一种网关配置方式:
- AISIX Cloud:已有环境和附加到该环境的网关,拥有管理信任提供商、调用方 API Key 和 Claim 映射的权限,并取得两个测试模型的模型 ID。
- 开源 AISIX 网关:已有一份定义了两个测试模型及其提供商 Key 的完整
resources.yaml文件,并可访问网关进程环境。
curl和jq。开源 AISIX 网关流程还使用 OpenSSL 生成不会分发给 Agent 的占位调用方 Key 值。