2024 token的实现原理:JWT标准,一文搞懂 |
您所在的位置:网站首页 › token标准组成 › 2024 token的实现原理:JWT标准,一文搞懂 |
先看看,用户和服务器的交互 -- 面上是这样子的:
你看上图,三个部分组成,每个部分中,由 " . ",逗号分割; token为什么张这个样子?因为规定了,token由三个部分组成(就像:如果你是马斯克,你可以给自己的产品命名:特斯拉 ,一样的道理) 所以我们有必要了解,这一串中,3各部分是干什么的?内容是什么?JWT包含三个部分: Header头部,Payload负载和Signature签名。由三部分生成Token,三部分之间用“.”号做分割。 我先上一张图,结合图下面的解释,会理解清除: 这个区域是一个字符串,主要是告诉你:我是通过HS535进行加密. (哈希加密) Payload负载 -- B区域: 这个区域也是字符串,保存用户的信息,比如:用户id、token创建时间、token超时时间 但是,不会包含敏感信息,比如:密码 Signature签名 -- C区域:这个区域,就简单了,哈: C=(A+B)*HS535加密+加盐(加盐只有服务器知道盐的内容))*base64rul加案, 上面这段看不懂就看下面这句话(其实相对男一丢丢): C区域其实就是:A 和 B区域链接到一起,进行加密之后的结果(可以理解成字符串) 2024年2月7日16:38:25,快放年假了,先写到这,下面写加密过程: 用户登录之后,服务器端就生成了token: 这是token的生成原理: A=加密方式->转化为字符串->base64ur加密(符号:+转化"exp" :'timesta B=用户信息(记录用户的id和创建/超时时间)->字符串->base64ur加密 C=(A+B)*HS535加密+加盐(加盐只有服务器知道盐的内容))*base64rul加案注意:(A+B)均是base64url加密后的数据 服务器将生成的token,通过响应给浏览器 浏览器再次请求服务器时,会带着token 服务器,解析token,认证通过,把请求结果返回给用户端 服务器拿到token后,解密过程: 获取token,对token进行切割对第二段B,进行base64url进行解密,获取payload信息,检测token是否超时操作AB:将A 、B段拼接(AB均是base64url加密后的状态),再次通过HS535加密,假如得到一个CC字符串操作C :需要把C进行base64url解密,结合加密过程中,C进行了额外一次的base64url加密(A+B)*base64url对比:请求的token- 第三部分C == CC? 如果相等,校验通过. 如果有人修改任意内容,对比均不通过(因为加盐部分,对方不知道)上面这个解密过程,可以好好看看,如果不懂的话欢迎留言 注意: 这种方法,如果想要破解token,或者伪造token,或者人为恶意延长token的时间,都验证不通过,除非能拿到"盐" |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |