You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keycloak中两个客户端如何完成身份认证以跨API访问受保护端点

问题解答结论

你提出的方案完全可行,该场景属于服务到服务调用的标准认证场景,使用*OAuth2 客户端凭证流(Client Credentials Flow)*即可实现,无需走普通用户绑定的身份认证流程。

具体实现配置步骤
  • 首先配置client2的受众校验规则:在Keycloak的client2配置页,将client1添加到client2的允许访问列表,或者在client1的客户端作用域中自定义aud(受众)声明,值设置为client2,确保client1申请的令牌可以被client2正常校验通过。
  • 其次配置API2受保护端点的权限规则:仅放行满足以下条件的请求:携带的JWT令牌有效、azp(授权方)字段值为client1、aud(受众)字段包含client2。
  • 然后API1申请令牌时调用Keycloak的令牌端点,使用客户端凭证流发起请求,示例请求参数如下:
POST /realms/<你的realm名>/protocol/openid-connect/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id=client1&client_secret=<client1的密钥>
  • 最后API1拿到返回的access_token后,将其放在请求头Authorization: Bearer <令牌值>中,发起对API2受保护端点的调用即可。
补充说明

客户端凭证流颁发的令牌本身就代表客户端(也就是你的API1服务)的合法身份,和普通用户令牌的校验逻辑完全一致,你不需要额外改造API2现有的令牌校验逻辑,只需要加一层azp字段的校验规则就能实现权限隔离。

内容的提问来源于stack exchange,提问作者cseccia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:15:03