如何在spring中组合身份验证过滤器
我们正在从基于LDAP的身份验证转向SSO(Oracle的WebGate) 现在,对于基于LDAP的身份验证,我们在如何在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 问题是,我们需要让这两个过滤器同时存在,并且能够根据属
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的问题。生活的运作方式很有趣。