我需要有多个PRE_AUTH
Spring Security过滤器。特别是除了在Spring Security 3.0的SAML扩展中配置为PRE_AUTH
的两个过滤器之外,我还需要使用PRE_AUTH
过滤器。现有的SAML配置如下。
<security:http entry-point-ref="samlEntryPoint">
<!-- snip intercepts -->
<security:custom-filter after="BASIC_AUTH_FILTER" ref="samlProcessingFilter"/>
<security:custom-filter before="PRE_AUTH_FILTER" ref="samlEntryPoint"/>
<security:custom-filter position="PRE_AUTH_FILTER" ref="metadataFilter"/>
<security:custom-filter after="LOGOUT_FILTER" ref="samlLogoutFilter"/>
<security:custom-filter before="LOGOUT_FILTER" ref="samlLogoutProcessingFilter"/>
</security:http>
在任何一个现有过滤器之前需要检查额外的PRE_AUTH
过滤器(即:使用此身份验证方法进行身份验证的用户不应该有机会使用SAML。
我考虑过以下方式改变它。
<!-- snip -->
<security:custom-filter before="PRE_AUTH_FILTER" ref="newPreAuthFilter"/>
<security:custom-filter position="PRE_AUTH_FILTER" ref="samlEntryPoint"/>
<security:custom-filter after="PRE_AUTH_FILTER" ref="metadataFilter"/>
<!-- snip -->
这是否有效,或者是否需要更复杂的解决方案。
答案 0 :(得分:9)
很老的问题,但仍然相关。使用spring中的复合滤波器:
<security:custom-filter before="PRE_AUTH_FILTER" ref="compositeAuthFilter"/>
<bean id="compositeAuthFilter" class="org.springframework.web.filter.CompositeFilter">
<property name="filters">
<list>
<ref bean="airlockAuthFilter"/>
<ref bean="samlEntryPoint"/>
<ref bean="metadataFilter"/>
</list>
</property>
</bean>
答案 1 :(得分:0)
在Spring 3.1中听起来很有可能。见stackoverflow post。希望有所帮助。