有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否可以在不同的servlet、同一个WAR中使用不同的Spring Security AuthenticationProvider?

我有一场运行两个servlet的战争。其中一个为Flex客户端提供AMF远程处理,为web服务客户端提供其他SOAP/HTTP。目前,我已将Spring安全配置为使用DaoAuthenticationProvider对Flex客户端进行身份验证。但是,我希望为SOAP/HTTP使用不同的身份验证。可能是基本身份验证或其他形式

可能吗?还是我需要两场战争


共 (2) 个答案

  1. # 1 楼答案

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

    理论上,您可以通过不使用SpringSecurity名称空间和使用SpringSecurity类的纯springxml连接“手动”配置过滤器链来解决这个问题。实际上,以这种方式配置SpringSecurity是很困难的

  2. # 2 楼答案

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

    如果您在与两个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>