token登录验证序列图
token登录序列图.png
为什么利用token
比较session而言,token有以下几点上风
做事端不须要缓存用户信息,减少做事器压力token缓存在客户端,做事看重启,登录状态不会失落效session是浏览器特有的,app要支持会比较繁琐,token就没有这样的限定易于扩展,存在多台做事器的情形下,利用负载均衡,第一次登录要求转发到A做事器,在A做事器的session中缓存了用户的登录信息,如果第二次要求转发到了B做事器,就丢失了登录状态。虽然可以利用redis等手段共享session,但token就大略很多,不同的做事器只须要利用相同的一段解密代码即可java天生token方法
JWT(JSON Web Token)
网上找到的大部分资料都是利用JWT来天生token,JWT天生的token包含三部分
header:包含token类型和加密算法payload:存放自定义数据signature:对前面两部分的署名,防止修改数据\r\n\r\n用JWT天生的token是很长的一串字符串,用Base64进行编码,可以解码出原数据,把稳不能放一些私密信息,比如用户密码eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\r\n.eyJleHBpcmVUaW1lIjoxNTQ5NTU0NDUyLCJ1c2VyTmFtZSI6IuacveacqCIsInVzZXJJZCI6IjY2NiJ9\r\n.fiQKWuMTWbkfQ3dOozoJr13pJSmKnc5El4EBnKyU42o
上面这很长的一串便是用JWT天生的token,可以感想熏染一下这个长度。客户真个每次要求都要带上这么一大串,做事真个每次相应都要返回这么一大串,我个人是难以接管的。以是我用了下面那种方法
AES(Advanced Encryption Standard)
token实质是一段加密的字符串,包含登任命户的一些信息,通过解密可以获取这些信息,以是理论上任何安全的加密解密手段都可以用来天生token
高等加密标准AES,在密码学中又称Rijndael加密法,是美国联邦政府采取的一种区块加密标准。AES采取对称加密,比较于非对称加密,对称加密效率更快
对称加密:加密和解密利用相同的密钥。适用于单方面的加密解密,密钥不能透露非对称加密:利用公钥加密,私钥解密。适用于一方加密,另一方解密,比如前后真个数据传输,可以在客户端利用公钥对数据进行加密,在做事端利用密钥进行解密,增强数据安全性 token的加密解密都在做事端进行,以是利用对称加密的AES算法即可EmaZUvyM9aabQ2Jmo6THJ/r3/e2xAjpRmoA5TzvuR4I=
上面这一小串便是用AES天生的token了,是不是清爽了很多,而且没有密钥无法解密,比较JWT天生的token,AES天生的token携带的数据更安全
作者:朽木_a25b
链接:https://www.jianshu.com/p/7c34b78f1675