如何从另一个keycloak实例B检查验证keycloak实例A用户?

How to check authenticate keycloak instance A user from another keycloak instance B?

我们为keycloak搭建了一个测试环境。 GCP 上的环境 运行。它有两个密钥斗篷实例:

  1. 实例A充当测试登录密钥斗篷,名为test-login-1
  2. 实例 B 作为测试外部身份提供者,名为 test-login-2

我们需要使用实例A连接实例B。

因此实例A用户可以通过实例B登录。

有什么办法吗?我们如何实现这个逻辑?

您需要将 test-login-2 配置为 test-login-1 的身份提供者。您可以阅读有关身份代理的内容 here。我将调用 internal realm 到将从内部 Keycloak (test-login-1) 使用的领域,并且 external realm 到将从外部 Keycloak (test-login-2) 使用的领域。

为此,请转到管理控制台并:

  • select 来自 test-login-1Realm,然后点击 Identity Providers
  • 在页面右侧 select Keycloak OpenID Connect Add provider ... 下拉菜单中。它将弹出 Add Identity Provider 表单,从那里设置:
  • alias
  • Authorization URLToken URLLogout URLUser Info URLIssuer 到可以在 [=10 领域中找到的相应端点=] 在 .众所周知的端点 <KEYCLOAK_IP>/auth/realms/<External Realm Name>/.well-known/openid-configuration
    • 对于 Client Authentication 你可以 select Client secret send as post
    • 对于 Client IDClient Secret,您首先需要在外部 realm(属于 test-login-2)中创建一个新的 client 并使用其 Client IDClient Secret 这里。
    • 这位客户:
    • 可以有Access TypeConfidential
    • Standard Flow Enabled : ON
    • Valid Redirect URIs 将其设置为您的 Keycloak IP,然后是 "*",例如 <KEYCLOAK_IP>*
    • Web Origins : +
    • Save

请记住,其中一些配置可能需要根据您自己的需要进行调整。

现在,如果一切设置正确,在 keycloak (test-login-1) 内部领域登录页面将显示一个新按钮,存储在外部领域(test-login-2)的用户可以单击该按钮对外部领域进行身份验证。

现在您将您的应用程序配置为在内部领域登录页面借出,来自您内部领域的用户立即在那里进行身份验证,来自外部领域的用户单击新按钮以明确对外部领域进行身份验证。