0

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

现在,对于基于 LDAP,我们正在使用基于表单的身份验证,位置为 ( UsernamePasswordAuthenticationFilter) FORM_LOGIN_FILTER

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

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

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

4

1 回答 1

1

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

于 2013-01-10T10:08:56.990 回答