如何使用Spring SAML2禁用自动生成的页面/登录和/注销?



我使用Spring Boot - 2.6.6和Spring Security - 5.7.0-M2以及Spring - Security -saml2-service-provider库来创建SAML服务提供者应用程序。我遵循Spring的示例项目Spring Security SAML2 sample,所以我的设置看起来非常相似。

我想关闭位于/Login和/Logout上生成的Login和Logout页面。登录页面显示到配置的每个IDP的链接,注销页面有一个启动POST注销流程的按钮。

它们似乎是由spring内部代码-Saml2LoginConfigurer.initDefaultLoginFilterSaml2LoginConfigurer.loginPage未设置或DefaultLoginPageGeneratingFilter激活时创建的。设置loginPage变量仅更改登录页面显示的位置,并破坏来自我的身份提供程序的元数据配置:它不关闭登录页面。我没有成功地关闭DefaultLoginPageGeneratingFilter.

我怎么能这么做?

示例已经包含了自动重定向到IDP(本例中为Okta)并获得重定向返回所需的所有内容。因此,只有在URL更改时才能访问登录和注销页面。话虽如此,我明白为什么它们不被使用是不受欢迎的。

要禁用它们,最简单的方法是提供AuthenticationEntryPoint。这将禁用生成登录和注销页面的过滤器。例如:

http.exceptionHandling((exceptions) -> exceptions
.authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/saml2/authenticate/two"))
)

这个工作的原因是它明确地在Sample2LoginConfigurer.init的幕后发生了什么,同时也禁用了Saml2LoginConfigurer.initDefaultLoginFilter中发生的事情。

最新更新