如何在 Keycloak 中结合 bearer-only 和 client_credentials?
How to combine bearer-only and client_credentials in Keycloak?
我有一个后端 API 服务器,它最初是仅承载模式,正在接受来自 FE 的令牌。现在,服务器需要调用同一个密钥斗篷领域中的另一个服务,授权类型通常是 client_credentials.
用户->FE服务器--(bearer only)-->BE服务器--(client credential)-->其他服务
问题是,如何在BE server中结合bearer-only和client credential?我是否必须在 Keycloak 领域中为同一个 BE 定义 2 个客户端(一个仅是承载,另一个是客户端凭据)。
我们已经通过 Keycloak 中的两个独立客户端解决了这个问题
客户端 #1(令牌从 SPA 客户端生成并用于 Bearer Auth)
- 访问类型:Public
客户端 #2(服务器到服务器)
- 访问类型:机密
- 服务帐户:开启
- 在“服务帐户角色”选项卡上:定义令牌将获得哪些角色
编辑:
在 spring 方面,您只需要在安全配置 class 中设置密钥斗篷 AdapterDeploymentContext 时引用客户端 #2。这是因为客户端 #1 或客户端 #2 生成的任何令牌都将是 SSO 令牌,并且您的 spring 后端将指向回域以进行令牌验证。
我有一个后端 API 服务器,它最初是仅承载模式,正在接受来自 FE 的令牌。现在,服务器需要调用同一个密钥斗篷领域中的另一个服务,授权类型通常是 client_credentials.
用户->FE服务器--(bearer only)-->BE服务器--(client credential)-->其他服务
问题是,如何在BE server中结合bearer-only和client credential?我是否必须在 Keycloak 领域中为同一个 BE 定义 2 个客户端(一个仅是承载,另一个是客户端凭据)。
我们已经通过 Keycloak 中的两个独立客户端解决了这个问题
客户端 #1(令牌从 SPA 客户端生成并用于 Bearer Auth)
- 访问类型:Public
客户端 #2(服务器到服务器)
- 访问类型:机密
- 服务帐户:开启
- 在“服务帐户角色”选项卡上:定义令牌将获得哪些角色
编辑:
在 spring 方面,您只需要在安全配置 class 中设置密钥斗篷 AdapterDeploymentContext 时引用客户端 #2。这是因为客户端 #1 或客户端 #2 生成的任何令牌都将是 SSO 令牌,并且您的 spring 后端将指向回域以进行令牌验证。