OAuth网络安全登录认证(一)

先总结一下现阶段开发中网络安全登录方面的几种。本人擅长的是语言的,所以文章中大部分写的java方面的相关技术。

第一种:前后端不分离的模式,像以前的spring+jsp、还有现在还有很多用户的spring+模板等。登录模式采用的是session存储登录信息。常用的安全主要有shiro,security。前端cookie中存储后端返回的sessionid,后端服务通过判断cookie中的sessionid判断用户的登录状态。

第二种:前后端分离模式。像springboot+vue,springboot+react,springboot+angular等都是属于这种前后端分离的模式。前后端分离之后,后端服务没法像之前一样直接获取token信息,只能通过异步请求的方式,将token传入服务端进行验证。这种模式前后端通过token进行交互,通过token记录用户登录状态。

 

前后端分离模式验证token又分几种情况:

  1. jwt模式(全称JSON WEB TOKEN),也就是一种token的实现形式,放在前端就是一串加密的字符串,jwt字符串在用户登录请求接口的时候,由后端服务通过密钥以及一些用户权限信息生成的token返回给前端,前端cookie,或者storage中存储token,在后边的请求中都带着这个token去请求后端服务的需要安全认证的接口。后端会通过这个token进行验证,验证是通过对应的解密方式解密token,然后验证token是否过期是否伪造。这里是重点,服务端不存储token信息,只有一套加密解密操作,进行jwt token的验证。
  2. token+的模式。跟第一点一样。不同的是,这里的token可以是一串不含任何信息的唯一性字符串,然后,用户登录的时候生成token,并且在redis缓存服务器中以key,value加过期时间的方式进行存储,这里一般会把用户信息也放入进来,最后把token返回给前端,用户后边掉用接口的时候,后端服务通过这个token从redis中取数据进行token的验证。
  3. jwt+token+redis模式。通过前面的描述,前两种方式虽然有不同点,但是两者完全可以结合使用。redis的灵活过期时间,jwt的无状态。另,需要注意的是redis只是一个缓存数据库,token可以直接存储在数据库中,通过其他方式比如记录token的生成时间,判断token是否过期。
胜象大百科