#authentication #rest #spring-security
#аутентификация #rest #spring-безопасность
Вопрос:
Я нахожусь в процессе внедрения службы REST с Spring MVC и Spring Security (оба 3.0.5). Я использую пространство имен security, не определяя компоненты Spring вручную. У меня возникли некоторые трудности с процессом входа в систему. Чего я пытаюсь достичь, так это:
сообщение на URL / login запустило бы процесс аутентификации.
Фактической формы быть не должно, поэтому я не использую form-login… элемент. Без этого элемента UsernamePasswordAuthenticationFilter отсутствует в цепочке безопасности, поэтому я подумал, что добавлю его через пользовательский фильтр…элемент и переходите оттуда.
В этом суть, а не в вопросах:
- это хороший способ реализовать аутентификацию?
- как именно я должен добавить этот фильтр и на какой позиции в цепочке фильтров?
- достаточно ли добавить этот фильтр или мне нужно что-то еще?
Приветствуется любая обратная связь. Спасибо.
Ответ №1:
В общем, если вы хотите настроить свою аутентификацию, вам следует использовать конфигурацию компонента. Я обнаружил, что конфигурация на основе пространства имен подходит только для демонстрационных приложений. Вот мои ответы на ваши вопросы:
1) Как я уже говорил выше, вы должны использовать beans. Ознакомьтесь с этой статьей для получения дополнительной информации: http://blog.springsource.com/2010/03/06/behind-the-spring-security-namespace/ Но то, к чему вы стремитесь, также будет работать с требованиями, которые вы упомянули до сих пор.
2) Она должна быть добавлена следующим образом:
<http>
<custom-filter position="FORM_LOGIN_FILTER" ref="myFilter" />
</http>
<beans:bean id="myFilter" class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter"/>
3) Обратите внимание, что этот фильтр также выполнял бы перенаправление по умолчанию на исходный запрос. Итак, если вам не нужно никакого перенаправления и клиенту должен быть возвращен простой HTTP 200, вам следует реализовать свой собственный AuthenticationProcessingFilter.
Я надеюсь, что это поможет.