我在 Keycloakclient1-web
和client2-server
. client1-web
是公开的,client2-server
保密的。
这是我目前拥有并且工作正常的流程:
- 用户通过 webapp 登录到
client1-web
- 使用身份验证令牌调用 API 服务器
client1-web
进行身份验证 - API 服务器调用 Keycloak
client2-server
为不同的用户交换令牌 - Token交换成功,从API服务器返回给webapp
我已经按照文档配置了 Keycloak 。在夏天:
- 启用细粒度权限
- 客户 >
client1-web
> 权限 > 令牌交换 - 添加策略
- 客户->
client2-server
- 策略 -> 一致
- 客户->
我的理解是,这应该只允许客户端上的令牌交换,为client2-server
客户端铸造令牌client1-web
。
问题:
虽然我可以在 上进行令牌交换client2-server
,并为模拟用户取回令牌,但我也可以直接进行令牌交换,client1-web
这会带来真正的安全风险。
期望的结果:
只能client2-server
做代币兑换,不能client1-web