1. 认证将在keycloak1上完成 2. keycloak1然后指向keycloak2以访问keycloak2客户端应用程序。
要做到这一点,
a) 在realm1下的keycloak1创建一个SAML客户端。使用设置为某个没有空格的“IdP启动SSO名称”(例如keycloakclientsaml)。在Fine Grain SAML Endpoint Configuration部分中,对于Assertion Consumer Service POST Binding URL,使用http:///auth/realms/realm2/broker/saml/endpoint/clients/keycloakclientsaml。
(https://www.keycloak.org/docs/latest/server_admin/index.html#idp-initiated-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
,提示输入用户名/密码,输入用户1的凭据。
f) 浏览器中的URL现在更改为
http://<keycloak2:port>/auth/realms/realm2/broker/saml/endpoint/clients/keycloakclientsaml
在keycloak2实例中,我收到以下错误:
09:20:46,775 INFO [org.keycloak.saml.validators.ConditionsValidator] (default task-6) Assertion ID_789213dd-24f9-425f-ae20-bcadef173bc6 is not addressed to this SP.
09:20:46,775 ERROR [org.keycloak.broker.saml.SAMLEndpoint] (default task-6) Assertion expired.
09:20:46,775 WARN [org.keycloak.events] (default task-6) type=IDENTITY_PROVIDER_RESPONSE_ERROR, realmId=realm2, clientId=null, userId=null, ipAddress=keycloak2, error=invalid_saml_response
有人可以在这里提供帮助。
- 以上步骤是否正确且完整?
- 我错过了什么?
如果需要其他信息,请告诉我。我很乐意提供。