我的数据库中有用户,每个用户都有IP地址。我必须只访问我的数据库中存在IP地址的站点用户。用户没有登录名和密码。他们有电话号码,身份证,详细信息和IP地址。当用户打开网页时,我检测到他的IP地址,在db中晕倒,我提供访问权限或拒绝访问权限。如果访问成功,我需要将此用户保存到会话。
我可以使用弹簧安全吗?
当我尝试使用spring security时,我看到需要登录名和密码。但我的用户没有登录名和密码。
答案 0 :(得分:0)
你可以,但我不确定你是否应该这样做。
首先,对于常见用例,使用基于IP的身份验证实际上是一种很差的安全措施:只有一个元素,网络上任何一台机器的管理员都可以更改其IP地址并假装成其他人。
假设您有真正的理由这样做,Spring安全可以轻松实现。您必须设置一个自定义身份验证处理过滤器,该过滤器将使用IP地址构建有效的Authentication
。它可以来自AbstractAuthenticationProcessingFilter
或AbstractPreAuthenticatedProcessingFilter
。
过滤器可以执行繁重的工作,并直接在SecurityContext
类的静态方法获得的SecurityContextHolder
中放置完全经过身份验证的身份验证令牌。但 Spring Security方式只会将WebAuthenticationDetails
放入自定义Authentication
令牌中,将其传递给AuthenticationManager
并让自定义AuthenticationProvider
构建完全经过身份验证的Authentication
。