Обеспечение безопасности веб-приложения Spring путем проверки IP-адреса клиента v4 - PullRequest
0 голосов
/ 18 апреля 2011

В веб-приложении на основе Spring 3 я использую пользовательскую реализацию AbstractUserDetailsAuthenticationProvider, чтобы не только проверять пару имя пользователя / пароль, но также и IP-адрес клиента. Однако когда я звоню в retrieveUser():

@Override
protected UserDetails retrieveUser(String username, UsernamePasswordAuthenticationToken authentication) throws AuthenticationException {
    ...
    String ipAddr = ((WebAuthenticationDetails)authentication.getDetails()).getRemoteAddress();
    ...
    User user = ...
    return user;
}

возвращает 0:0:0:0:0:0:0:1%0. Это будет адрес IP v6 для localhost. Как я могу проверить сейчас по белому списку адресов IP v4, если этот метод возвращает мне адрес IP v6? Могу ли я обеспечить совместимость с IP v4 и v6 для белого списка? Спасибо за ваши идеи!

Ответы [ 2 ]

3 голосов
/ 18 апреля 2011

Если это ваш локальный Tomcat, попробуйте вызвать его не по http://localhost:8080/..., попробуйте вызвать его по http://127.0.0.1:8080/..

0 голосов
/ 10 декабря 2014

Поздно на вечеринку, но все еще актуально.При добавлении следующего параметра в конфигурацию запуска / запуска вы получите адреса ipV4, а не ipV6.

-Djava.net.preferIPv4Stack = true

...