Spring Security: белый список IP-адресов перед переносом на базовую аутентификацию HTTP - PullRequest
5 голосов
/ 28 февраля 2011

У меня есть один URL-адрес, доступный через сервлет, который я заблокировал с помощью DaoAuthenticationProvider Spring Security. Теперь у меня есть требование, чтобы определенные входящие IP-адреса были внесены в белый список и поэтому не запрашивались для аутентификации.

Я могу достаточно легко обойти это, переопределив метод authenticate DaoAuthenticationProvider и минуя реализацию суперкласса, если IP-адрес совпадает с известным IP-адресом, но это тогда работает, только когда отправитель запроса предоставляет имя пользователя и пароль (даже если это чепуха ). В противном случае провайдер не будет вызван.

Каков наилучший способ сделать это? Должен ли я использовать фильтр для обхода процедуры аутентификации, если поступает известный IP-адрес?

Ответы [ 2 ]

10 голосов
/ 08 августа 2011

Не могли бы вы просто использовать hasIpAddress() выражение ?Мы делаем это для того, что кажется похожим случаем.

<security:intercept-url pattern="/services/**" access="hasIpAddress('192.168.1.0/24')"/>
2 голосов
/ 28 февраля 2011

Я думаю, что идиоматический способ Spring Security - это реализовать фильтр предварительной аутентификации, который бы заполнял контекст безопасности действительным объектом Authentication, когда клиент находится в белом списке. Вы можете реализовать такой фильтр с нуля (например, как здесь ) или использовать AbstractPreAuthenticatedProcessingFilter (хотя он кажется слишком сложным для вашей задачи).

...