Безопасность Spring: добавление нового ROLE, который поддерживает аутентификацию по IP - PullRequest
0 голосов
/ 15 марта 2011

Я довольно новый пользователь Spring Security.

Ранее я настроил Spring Security для выполнения аутентификации на основе форм для своего веб-приложения.

Я использовал аннотации для указания, какие контроллеры/ Методы требуют, чтобы ROLE_USER был анонимным, и я реализовал свой собственный daoAuthenticationProvider для выполнения аутентификации.

Я сейчас внедряю сервисы REST , которым требуется аутентификация на BasicAuthentication + проверка IP для моей БД.

Итак, у меня есть новая роль ROLE_IP_AUTH, которую я определил на контроллере служб REST.

Я немного перегружен на этом этапе.Может ли кто-нибудь дать мне краткое описание следующего шага, который я должен сделать?

  • Нужно ли создавать новыйэлемент для новой роли?
  • Должен ли я переключаться на этот FilterChainProxy?Если да, то какие фильтры я должен включить?
  • Должен ли я просто обработать это в моем существующем классе daoAuthenticationProvider?

По сути, мне просто нужно знать, в каком направлении я иду. Я думаю,Я знаю достаточно, чтобы добраться туда, кажется, есть всего 5 различных способов добраться куда угодно в Spring.


Дополнительная информация Моя текущая реализация имеет элемент, настроенный следующим образом:
<security:http auto-config="false"
               entry-point-ref="authenticationEntryPoint" >
    <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>

Мой оставшийся вопрос в том, как я могу реализовать свою собственную проверку IP.Я могу просто добавить фильтр BasicAuth с помощью пользовательского фильтра и реализовать свой собственный базовый фильтр аутентификации, который проверяет IP.Но я не совсем понимаю, как сделать этот фильтр применимым только для ROLE_IP_AUTH, используемого моими службами REST?

Ответы [ 2 ]

1 голос
/ 17 марта 2011

Ответ @Ritesh очень помог в переосмыслении этого квеста другим способом.Еще один замечательный пост, посвященный этому вопросу:

Spring security - как упомянуть как основанную на форме, так и базовую аутентификацию

В конечном счете, я понимаю: делайте это с помощью избирателей@Ritesh предлагает в 3.0.x, или использовать несколькоэлементы, которые теперь доступны в 3.1.0.RC1 (версия от 17mar2011), как обсуждалось в ссылке выше.

0 голосов
/ 15 марта 2011

Вы можете просто добавить http-basic к вашему элементу.

<sec:http-basic/>

Также добавьте create-session = "never", потому что вы не добавляете сеанс для службы REST. Поможет также ваш сервис по специальному шаблону URL.

<sec:intercept-url pattern="/service/**" access="ROLE_IP_AUTH" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...