Несколько фильтров предварительной авторизации в Spring Security? - PullRequest
5 голосов
/ 18 августа 2011

Мне нужно иметь несколько фильтров PRE_AUTH Spring Security.В частности, мне нужно использовать фильтр PRE_AUTH в дополнение к двум фильтрам, настроенным как PRE_AUTH в расширении SAML для Spring Security 3.0.Ниже приведена существующая конфигурация 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 -->

Будет ли это работать, или требуется более сложное решение.

Ответы [ 2 ]

9 голосов
/ 09 мая 2014

Очень старый вопрос, но все еще актуален.Используйте композитный фильтр из пружины:

<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>
0 голосов
/ 08 октября 2011

Похоже, что это возможно весной 3.1. Смотрите это сообщение stackoverflow . Надеюсь, это поможет.

...