该问题属于基于 SAML 的 IDP 发起的 SSO 领域。作为 POC,我有两个 keycloak 实例,例如 keycloak1 和 keycloak2。我想实现以下目标:
身份验证将在 keycloak1 上完成
然后 keycloak1 定向到 keycloak2 以访问 keycloak2 客户端应用程序。
为此,
a) 在realm1 下的keycloak1 处创建saml 客户端。设置IdP initiated SSO Name为一些不带空格的名称)--> 说,keycloakclientsaml. 在 Fine Grain SAML Endpoint Configuration 部分中,对于断言消费者服务 POST 绑定 URL -->http://<keycloak2:port>/auth/realms/realm2/broker/saml/endpoint/clients/keycloakclientsaml
(https://www.keycloak.org/docs/latest/server_admin/index.html#idp-initerated-login)
b) 单击上面创建的 saml 客户端 --> 安装 --> 导出 SAML 元数据 IDPSSODescriptor 并保存为 saml-metadata.xml (例如)。
c) 在keycloak1中添加一个用户,比如user1/user@123
d) 在 keycloak2 中,创建 IDP(“身份提供商”选项卡)。导入上面导出的 saml-metadata.xml 并保存。
e) 在浏览器中,http://<keycloak1>/auth/realms/realm1/protocol/saml/clients/keycloakclientsaml
提示输入用户名/密码,为 user1 …