У меня есть следующая конфигурация с несколькими элементами <http.../>
(чтобы отдельно поддерживать аутентификацию REST через базовую аутентификацию и регистрацию в форме пользователя):
<security:http auto-config="false" pattern="/service/**" create-session="never"
entry-point-ref="basicAuthenticationEntryPoint" >
<security:intercept-url pattern="/service/**" requires-channel="any" access="ROLE_REST_SERVICE" />
<security:custom-filter position="BASIC_AUTH_FILTER" ref="basicAuthenticationFilter" />
</security:http>
<security:http auto-config="false" pattern="/**"
entry-point-ref="loginUrlAuthenticationEntryPoint" >
<security:logout logout-url="/logout" />
<security:anonymous enabled="false"/>
<security:custom-filter position="FORM_LOGIN_FILTER" ref="usernamePasswordAuthenticationFilter" />
<security:custom-filter position="ANONYMOUS_FILTER" ref="anonymousAuthFilter" />
</security:http>
В каждом из моих двух фильтров, требующих аутентификации (FORM_LOGIN_FILTER и BASIC_AUTH_FILTER), я ссылаюсь на два разных менеджера аутентификации.
Но я получаю сообщение об ошибке, что уже зарегистрировал менеджер аутентификации.
Зачем мне использовать один менеджер аутентификации, если я заранее знаю, какой поставщик аутентификации понадобится для каждого фильтра?
Не следует ли мне использовать диспетчер аутентификации и просто запустить свой AuthenticationProvider
как компонент и передать его в фильтр непосредственно как AuthenticationManager
?