我在Spring-Security-saml2-service-provider库中使用Spring Boot-2.6.6和Spring Security-5.7.0-M2来创建SAML服务Provider 应用程序.我遵循Spring的示例项目Spring Security SAML2 Sample,所以我的设置看起来非常相似.

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

Saml2LoginConfigurer.loginPage未设置或DefaultLoginPageGeneratingFilter激活时,它们似乎由弹簧内部代码-Saml2LoginConfigurer.initDefaultLoginFilter创建.设置loginPage变量只会更改登录页面的显示位置,并从我的身份提供程序中断元数据配置:它会关闭登录页面.我没能成功地关掉DefaultLoginPageGeneratingFilter.

我怎么能这么做?

推荐答案

该示例已经包含了自动重定向到IDP(本例中为Okta)并重新重定向回IDP所需的所有内容.因此,只有更改URL后,才能访问登录和注销页面.话虽如此,我可以理解,如果它们没有被使用,为什么它们是不受欢迎的.

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

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

它之所以有效,是因为它明确地执行了Sample2LoginConfigurer.init中幕后发生的事情,同时也禁用了Saml2LoginConfigurer.initDefaultLoginFilter中发生的事情.

Java相关问答推荐

int Array Stream System. out. print方法在打印Java8时在末尾添加% sign

空手道比赛条件

无法传递消费者<;>;实例

为什么在枚举中分支预测比函数调用快?

无法处理批处理侦听器中的反序列化异常

我需要生成一个文件来整合每个特性执行的所有JSON结果

R.id.main给我一个红色错误,无法解析MainActivity.java中的符号main

如何使用Maven和Spring Boot将构建时初始化、跟踪类初始化正确传递到本机编译

Spring Boot Maven包

如何使用值中包含与号的查询参数创建一个java.net.URI

我的Spring Boot测试显示&IlLegalStateException:无法加载某事的ApplicationContext.

%This内置函数示例

如何在JavaFX中制作鼠标透明stage

在settings.gradle.kts和Build.gradle.kts中使用公共变量

将ByteBuffer异步写入InputStream或Channel或类似对象

如何在Java中为thunk创建映射器函数

Java创建带有扩展通配符的抽象处理器

在整数列表中查找和可被第三个整数整除的对时出现无法解释的RunTimeError

rest api服务 spring 启动中出现IllegalFormatConversionException

将天数添加到ZonedDateTime不会更改时间