В веб-приложении на основе 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 для белого списка? Спасибо за ваши идеи!