【问题标题】:How to combine authentication filters in spring如何在春季组合身份验证过滤器
【发布时间】:2013-01-10 18:08:56
【问题描述】:

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

目前,对于基于 LDAP,我们在 FORM_LOGIN_FILTER 位置使用基于表单的身份验证(UsernamePasswordAuthenticationFilter)。

对于 SSO 用户将进行预认证,并发送带有其用户名的请求标头。我打算使用RequestHeaderAuthenticationFilterat PRE_AUTH_FILTER 位置。

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

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

【问题讨论】:

    标签: spring spring-mvc spring-security


    【解决方案1】:

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

    【讨论】:

    • 感谢戴夫的回答。在我的情况下,应用程序重新启动以进行切换是可以接受的。至于弹簧配置文件 - 我们不使用它们,通常使用 bean 别名处理环境范围的设置。就个人而言 - 几年前我正在观看您关于 Spring Integration 的演示,并且永远不会想到您会回答我在 stackoverflow 上的问题。生活的运作方式很有趣。
    猜你喜欢
    • 2022-07-22
    • 2015-01-10
    • 2013-02-24
    • 2015-12-16
    • 2022-01-11
    • 1970-01-01
    • 2015-05-03
    • 2020-04-08
    • 1970-01-01
    相关资源
    最近更新 更多