Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在spring中组合身份验证过滤器_Spring_Spring Mvc_Spring Security - Fatal编程技术网

如何在spring中组合身份验证过滤器

如何在spring中组合身份验证过滤器,spring,spring-mvc,spring-security,Spring,Spring Mvc,Spring Security,我们正在从基于LDAP的身份验证转向SSO(Oracle的WebGate) 现在,对于基于LDAP的身份验证,我们在form\u LOGIN\u FILTER位置使用基于表单的身份验证(UsernamePasswordAuthenticationFilter) 对于SSO,将对用户进行预验证,并发送带有其用户名的请求标头。我计划在PRE\u AUTH\u FILTER位置使用RequestHeaderAuthenticationFilter 问题是,我们需要让这两个过滤器同时存在,并且能够根据属

我们正在从基于LDAP的身份验证转向SSO(Oracle的WebGate)

现在,对于基于LDAP的身份验证,我们在
form\u LOGIN\u FILTER
位置使用基于表单的身份验证(
UsernamePasswordAuthenticationFilter

对于SSO,将对用户进行预验证,并发送带有其用户名的请求标头。我计划在
PRE\u AUTH\u FILTER
位置使用
RequestHeaderAuthenticationFilter

问题是,我们需要让这两个过滤器同时存在,并且能够根据属性文件中的值在它们之间切换。这适用于SSO在生产环境中无法按预期工作的场景,因此我们可以很容易地回退到LDAP


我的问题是如何正确地实施这一点。如果同时出现两个具有这些位置的过滤器,是否会有任何副作用?在继承的类中扩展这些过滤器和添加属性检查更好吗,还是创建处理它们之间切换的复合过滤器更好

由于表单登录筛选器仅处理特定位置的请求(例如/j_spring_security_check),因此将表单登录筛选器设置到位不应影响其他筛选器的功能。所以你最初提出的问题很简单。您应该问的更重要的问题是如何处理未经验证的请求。您需要决定如何在新的SSO解决方案中工作,并查看是否可以构建一些东西,用于切换回应用程序中显示登录表单(并且您需要设计如何做出该决定,例如属性文件中的标志或运行时决定)。如果您考虑的是一个可以在短时间内实施的后备方案,但不介意重新启动应用程序,那么我建议您使用Spring配置文件。

谢谢您的回答。在我的情况下,重新启动应用程序进行切换是可以接受的。至于spring概要文件,我们不使用它们,通常使用bean别名处理环境范围的设置。就我个人而言,几年前我一直在看你关于Spring Integration的演讲,想不到你会回答我关于stackoverflow的问题。生活的运作方式很有趣。