如何在 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 后端将指向回域以进行令牌验证。