一个 Spring 应用程序中的多个 WebSeciurityConfig

Multiple WebSeciurityConfig in one Spring application

我们从安全角度维护我们应用程序的两个版本

1. SAML based spring security 
2. Spring and JDBC based application security.

由于我们的一些客户已经拥有 SAML IDP(如 ADFS 和 GLUU),他们希望我们为 SSO 集成这些客户,而一些客户没有 SAML IDP。

有没有一种方法可以使两种配置共存,并根据使用应用程序的客户,对用户施加安全性。

例如: 如果请求是针对客户的 a.myserverhost.com 将实施基于 SAML 的安全配置。如果请求是 b.myserverhost.com 的形式,则强加另一个 webSeciurityConfig

是的,这一切都是可能的。我的建议是实施您自己的 AuthenticationManager which manages multiple AuthenticationProviders(例如 SAML、JDBC)。

您可以在此处插入条件逻辑,以根据特定条件选择正确的提供商。

如需灵感,请查看默认实现 ProviderManager

开箱即用的 ProviderManager 将遍历所有 AuthenticationProvider 并尝试对用户进行身份验证。如果它没有找到用户,它会移动到下一个。如果这就是您所需要的,那么您不需要任何自定义实现。