首页 > 解决方案 > 如何检查来自另一个 keycloak 实例 B 的身份验证 keycloak 实例 A 用户?

问题描述

我们为 keycloak 设置了一个测试环境。环境在 GCP 上运行。它有两个 keycloak 实例:

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

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

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

有没有办法做到这一点?我们如何实现这个逻辑?

标签: authenticationkeycloakkeycloak-serviceskeycloak-connect

解决方案


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

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

  • 选择您的Realmfrom test-login-1,然后单击Identity Providers
  • 在页面右侧,Keycloak OpenID ConnectAdd provider... 下拉菜单中选择。它将弹出Add Identity Provider表单,从那里设置:
  • alias
  • , Authorization URL, Token URL,Logout URL和可以在.well -known 端点) 的领域User Info URL中找到的对应端点Issuertest-login-2 <KEYCLOAK_IP>/auth/realms/<External Realm Name>/.well-known/openid-configuration
    • 对于Client Authentication您可以选择Client secret send as post
    • 对于Client IDandClient Secret首先,您需要client在外部realm(of test-login-2) 中创建一个新的并在此处使用它的Client IDand Client Secret
    • 这个客户:
    • 可以有Access Type Confidential
    • Standard Flow EnabledON
    • Valid Redirect URIs"*"例如,将其设置为您的 Keycloak IP,然后<KEYCLOAK_IP>*
    • Web Origins+
    • Save

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

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

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


推荐阅读