2010-09-22 30 views
0

我有一个运行两个servlet的WAR。一个向Flex客户端提供AMF远程处理,并向Web服务客户端提供其他SOAP/HTTP。我目前已经将Spring Security配置为使用DaoAuthenticationProvider对Flex客户端进行身份验证。但是,我想为SOAP/HTTP使用不同的身份验证。可能是基本身份验证或其他形式。是否可以在不同的servlet中使用不同的Spring Security AuthenticationProvider,相同的WAR?

可能吗?还是我需要两个WAR?

回答

1

我想你会遇到实例化两个安全过滤器链的问题。问题在于,<http>元素构造了一个带有硬连接bean名称的安全过滤器链(“springSecurityFilterChain”)。如果webapp的spring配置中有多个活动的<http>元素,则可能会失败。

理论上,您可以通过不使用SpringSecurity命名空间并使用SpringSecurity类的普通Spring XML接线“手动”配置过滤器链来解决此问题。实际上,以这种方式配置SpringSecurity非常困难。

0

您可能可以启动两个单独的安全链,我不知道您是否会遇到斯蒂芬概述的问题。

如果你过滤两个不同的url模式对应于两个servlet url模式,你应该能够适当地过滤。

<filter> 
    <filter-name>flexSpringSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>flexSpringSecurityFilterChain</filter-name> 
    <url-pattern>/messagebroker/*</url-pattern> 
</filter-mapping> 

<filter> 
    <filter-name>webSpringSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>webSpringSecurityFilterChain</filter-name> 
    <url-pattern>/web/*</url-pattern> 
</filter-mapping> 
相关问题