authentication - 如何检查来自另一个 keycloak 实例 B 的身份验证 keycloak 实例 A 用户?
问题描述
我们为 keycloak 设置了一个测试环境。环境在 GCP 上运行。它有两个 keycloak 实例:
- 实例 A 充当测试登录密钥斗篷,名为 test-login-1
- 实例 B 充当测试外部身份提供者,名为 test-login-2
我们需要使用实例 A 连接实例 B。
因此实例 A 用户可以通过实例 B 登录。
有没有办法做到这一点?我们如何实现这个逻辑?
解决方案
您需要将 配置test-login-2
为 的身份提供者test-login-1
。您可以在此处阅读有关身份代理的信息。我将从internal realm
内部 Keycloak ( test-login-1
)调用将使用external realm
的领域,并从外部 Keycloak ( test-login-2
) 调用将使用的领域。
为此,请转到管理控制台并:
- 选择您的
Realm
fromtest-login-1
,然后单击Identity Providers
- 在页面右侧,
Keycloak OpenID Connect
从Add provider
... 下拉菜单中选择。它将弹出Add Identity Provider
表单,从那里设置: - 这
alias
- ,
Authorization URL
,Token URL
,Logout URL
和可以在.well -known 端点(即) 的领域User Info URL
中找到的对应端点Issuer
test-login-2
<KEYCLOAK_IP>/auth/realms/<External Realm Name>/.well-known/openid-configuration
- 对于
Client Authentication
您可以选择Client secret send as post
- 对于
Client ID
andClient Secret
首先,您需要client
在外部realm
(oftest-login-2
) 中创建一个新的并在此处使用它的Client ID
andClient Secret
。 - 这个客户:
- 可以有
Access Type
Confidential
Standard Flow Enabled
:ON
Valid Redirect URIs
"*"
例如,将其设置为您的 Keycloak IP,然后<KEYCLOAK_IP>*
Web Origins
:+
Save
- 对于
请记住,其中一些配置可能必须根据您自己的需要进行调整。
现在,如果一切设置正确,在 keycloak ( test-login-1
) 内部领域登录页面将显示一个新按钮,存储在外部领域 (of test-login-2
) 上的用户可以单击该按钮以针对外部领域进行身份验证。
现在您将您的应用程序配置为在内部领域登录页面上借出,来自您内部领域的用户立即在那里进行身份验证,来自外部领域的用户单击新按钮以显式地针对外部领域进行身份验证。
推荐阅读
- string - mut 循环内的字符串重新声明
- c# - 在 c# XNA 中选择的问题
- php - 在 Woocommerce 中更改产品变体时如何更新数量选择器?
- arrays - 在 Julia 中生成每隔一对整数的列表
- angular - 条纹没有定义,但我已经在我的角度项目中明确定义了它
- pandas - 如何让 pandas.read_csv 将空条目解释为整数 0?
- r - 函数中调用其他列的控制流
- android - setfullscreenintent 仅适用于点击抬头通知
- file - 如何将文件放入 Xamarin 应用程序的默认 com.companyname.xamarinandroidapp 目录?
- php - PHP:无法设置 Open_basedir