我正在使用 SAML 为运行 tomcat 的 Web 服务器实现 SSO 身份验证流程。使用 POST 或重定向绑定(bind)时一切正常,但从我读过的内容来看,我需要在 REST API 前支持 SAML 身份验证,我还需要配置和使用 ECP 配置文件。
如果我错了,首先纠正我,但 ECP 流程应该是这样的:
Accept: application/vnd.paos+xml
和 PAOS: urn:liberty:paos:2003-08;urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp
) 问题是所有这些工作直到第 6 步。在这一步我遇到了问题,即响应信封的正文包含一个 Destination 属性,该属性指向 SP 的 POST 断言消费者服务。此目标属性由 keycloak 设置,并且与我要将响应发送到的实际 ECP 服务不匹配。我们使用的 SAML 库是 opensaml,它根据此 Destination 属性检查请求 URI,如果它们不匹配,则会抛出异常
org.opensaml.xml.security.SecurityException: SAML message intended destination endpoint did not match recipient endpoint
。我理解为什么会抛出此异常,但无法理解如何使用 SP 的 ECP/SOAP 服务配置 Keycloak。在 Keycloak 的管理控制台中,我只能配置 SSO POST/Redirect 和 SLO POST/Redirect 的 URL,但不能配置 ECP。
我目前正在配置另一个 IdP,但我真的很想确保 Keycloak 也可以成为我们解决方案支持的服务器。
最佳答案
你不能只阅读 paos:Request responseConsumerURL 并将 idp 响应发布到该 url 吗?
至少,这就是我设法做到的。