是否可以在不同的servlet中使用不同的Spring Security AuthenticationProvider,相同的WAR?

时间:2010-09-22 02:52:59

标签: java flex authentication servlets spring-security

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

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

2 个答案:

答案 0 :(得分:1)

我认为您在实例化两个安全过滤器链时会遇到问题。问题是<http>元素使用硬连线bean名称(“springSecurityFilterChain”)构造安全过滤器链。如果您在webapp的spring配置中有多个活动的<http>元素,则可能会失败。

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

答案 1 :(得分:0)

您可能可以启动两个单独的securityChains,我不知道您是否会遇到Stephen概述的问题。

如果您对与两个servlet url模式相对应的两个不同的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>
相关问题