我有一个运行两个servlet的WAR。一个为Flex客户端提供AMF远程处理,为Web服务客户端提供其他SOAP / HTTP远程处理。我目前已将Spring Security配置为使用DaoAuthenticationProvider对Flex客户端进行身份验证。但是,我想为SOAP / HTTP使用不同的身份验证。可能是基本身份验证或其他形式。
有可能吗?还是我需要两个WAR?
答案 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>