spring security authentication只有一个字段(用户的IP地址)

时间:2016-07-12 08:34:39

标签: spring-security

我的数据库中有用户,每个用户都有IP地址。我必须只访问我的数据库中存在IP地址的站点用户。用户没有登录名和密码。他们有电话号码,身份证,详细信息和IP地址。当用户打开网页时,我检测到他的IP地址,在db中晕倒,我提供访问权限或拒绝访问权限。如果访问成功,我需要将此用户保存到会话。

我可以使用弹簧安全吗?

当我尝试使用spring security时,我看到需要登录名和密码。但我的用户没有登录名和密码。

1 个答案:

答案 0 :(得分:0)

你可以,但我不确定你是否应该这样做。

首先,对于常见用例,使用基于IP的身份验证实际上是一种很差的安全措施:只有一个元素,网络上任何一台机器的管理员都可以更改其IP地址并假装成其他人。

假设您有真正的理由这样做,Spring安全可以轻松实现。您必须设置一个自定义身份验证处理过滤器,该过滤器将使用IP地址构建有效的Authentication。它可以来自AbstractAuthenticationProcessingFilterAbstractPreAuthenticatedProcessingFilter

过滤器可以执行繁重的工作,并直接在SecurityContext类的静态方法获得的SecurityContextHolder中放置完全经过身份验证的身份验证令牌。但 Spring Security方式只会将WebAuthenticationDetails放入自定义Authentication令牌中,将其传递给AuthenticationManager并让自定义AuthenticationProvider构建完全经过身份验证的Authentication