Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/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
Java 一个Spring应用程序中的多个WebSpecurityConfig_Java_Spring Boot_Spring Security_Spring Saml - Fatal编程技术网

Java 一个Spring应用程序中的多个WebSpecurityConfig

Java 一个Spring应用程序中的多个WebSpecurityConfig,java,spring-boot,spring-security,spring-saml,Java,Spring Boot,Spring Security,Spring Saml,从安全角度来看,我们正在维护应用程序的两个版本 1. SAML based spring security 2. Spring and JDBC based application security. 因为我们的一些客户已经拥有SAML IDP(如ADFS和GLUU),他们希望我们为SSO集成它们,而一些客户没有SAML IDP 是否有一种方法可以使两种配置共存,并且基于使用应用程序的客户,将安全性强加于用户 例如:如果客户a.myserverhost.com提出请求,则会强制实施基于SAM

从安全角度来看,我们正在维护应用程序的两个版本

1. SAML based spring security 
2. Spring and JDBC based application security.
因为我们的一些客户已经拥有SAML IDP(如ADFS和GLUU),他们希望我们为SSO集成它们,而一些客户没有SAML IDP

是否有一种方法可以使两种配置共存,并且基于使用应用程序的客户,将安全性强加于用户


例如:如果客户a.myserverhost.com提出请求,则会强制实施基于SAML的安全配置。如果请求是form b.myserverhost.com,则另一个WebSpecurityConfig被强制执行

,所有这些都是可能的。我的建议是实现您自己的,它管理多个s(例如SAML、JDBC)

在这里,您可以插入条件逻辑,以便根据特定条件选择正确的提供程序

要获得灵感,请查看默认实现


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

感谢您的回答,它帮助我找到了灵感,将尝试实现。我相信在检查URL后,我会在WebSecurity配置方法configure中使用“auth.authenticationProvider(samlAuthenticationProvider());”调用正确的身份验证提供程序。该方法是AuthenticationManagerBuilder的一部分,是注册身份验证提供程序的地方。这不是定义条件逻辑的地方。您需要通过两次调用同一方法来注册这两个提供程序:authenticationProvider(saml())和authenticationProvider(jdbc())。然后在CustomAuthenticationManager中实现authenticate()方法,这就是定义条件逻辑的地方。正如我前面提到的,默认实现ProviderManager将迭代每个AuthenticationProvider,直到返回成功的身份验证为止^。