Spring Security 3.1.0.RC1: с несколькими элементами <http... /> почему я могу зарегистрировать только один менеджер аутентификации?
У меня есть следующая конфигурация с несколькими <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
?
1 ответ
В Spring Security 3.1 вы можете иметь несколько http-элементов, каждый со своим собственным менеджером аутентификации.
Единственное, что вам нужно сделать, это добавить следующий атрибут authentication-manager-ref="your ref"
к элементу http.