spring 安全 sasl:无法配置 SSO url

spring security sasl: Unable to configure SSO url

我正在使用来自 github 的以下 spring 安全 saml 存储库: https://github.com/spring-projects/spring-security-saml/tree/master/sample

每当我尝试更新 SSO url 时,例如localhost:8100/saml/ddo,而不是 /saml/sso,浏览器陷入无限循环。 (我已经按照自述文件中提到的步骤更新了 okta 以及应用程序中的 url 进行测试)

示例代码和配置包含在: Spring secuirty saml issue

编辑:

我按照下面的建议做了,但我收到 传入 SAML 消息无效。

在调试时,我发现attemptAuthenticationSAMLProcessingFilter中,添加的端点中的位置仍然包含/api/saml/SSO而不是/api/saml/ddo

这就是为什么 SamlUtil 中的 getEndpoint 方法会抛出异常并显示以下行:

throw new SAMLException("Endpoint with message binding " + messageBinding + " and URL " + requestURL + " wasn't found in local metadata");

因为 requestUrl 和端点位置不匹配。

我也检查了我的 metadata.xml,但它不包含与这些 url 相关的任何信息。

MetaDataGenerator class 方法 getSAMLWebSSOProcessingFilterPath 中,samlWebSSOFilter 为空,这就是默认过滤器 url: /saml/SSO 的原因回来。我想弄清楚如何在运行时设置这个值? 我知道有一个名称为 setSamlWebSSOFilter 的方法,如果我在启动时提供 url /saml/ddo,一切正常。但是如果在运行时更改配置,我将无法完成这项工作。

知道我该如何前进吗?

将 bean samlWebSSOProcessingFilter 上的字段 filterProcessesUrl 设置为值 /saml/ddo 应该可以解决问题。