一 OAuth网络安全登录认证

【一 OAuth网络安全登录认证】先总结一下现阶段网站开发中网络安全登录方面的几种架构 。本人擅长的是JAVA语言的,所以文章中大部分写的java方面的相关技术 。
第一种:前后端不分离的模式,像以前的spring+jsp、还有现在还有很多用户的spring+模板等 。登录模式采用的是session存储登录信息 。常用的安全框架主要有shiro,security 。前端cookie中存储后端返回的sessionid,后端服务通过判断cookie中的sessionid判断用户的登录状态 。
第二种:前后端分离模式 。像springboot+vue,springboot+react,springboot+angular等都是属于这种前后端分离的模式 。前后端分离之后,后端服务没法像之前一样直接获取token信息,只能通过异步请求的方式,将token传入服务端进行验证 。这种模式前后端通过token进行交互,通过token记录用户登录状态 。

一 OAuth网络安全登录认证

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




    推荐阅读