通过检查客户端的IP v4地址来保护Spring Web应用程序

时间:2011-04-18 08:15:45

标签: security spring authentication ipv6 ipv4

在基于Spring 3的Web应用程序中,我使用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。这将是localhost的IP v6地址。如果该方法返回IP v6地址,我现在如何查看IP v4地址的白名单?我是否可以为白名单提供与IP v4和v6的兼容性?感谢您的见解!

2 个答案:

答案 0 :(得分:3)

如果是本地Tomcat,则尝试不是http://localhost:8080/...调用它,尝试通过http://127.0.0.1:8080/..

调用它

答案 1 :(得分:0)

晚会但仍然相关。将以下参数添加到启动脚本/运行配置将为您提供ipV4地址而不是ipV6。

-Djava.net.preferIPv4Stack =真