2024 token的实现原理:JWT标准,一文搞懂

先看看,用户和服务器的交互 -- 面上是这样子的:

2024 token的实现原理:JWT标准,一文搞懂_第1张图片

token的样子:

2024 token的实现原理:JWT标准,一文搞懂_第2张图片

    你看上图,三个部分组成,每个部分中,由 " . ",逗号分割;

token为什么张这个样子?

    因为规定了,token由三个部分组成(就像:如果你是马斯克,你可以给自己的产品命名:特斯拉 ,一样的道理)

所以我们有必要了解,这一串中,3各部分是干什么的?内容是什么?

  JWT包含三个部分: Header头部,Payload负载和Signature签名。由三部分生成Token,三部分之间用“.”号做分割。

我先上一张图,结合图下面的解释,会理解清除:

2024 token的实现原理:JWT标准,一文搞懂_第3张图片

Header头部 -- A区域:

                        2024 token的实现原理:JWT标准,一文搞懂_第4张图片 

        这个区域是一个字符串,主要是告诉你:我是通过HS535进行加密.  (哈希加密)

Payload负载 -- B区域:

                ​​​​​​​        2024 token的实现原理:JWT标准,一文搞懂_第5张图片

        这个区域也是字符串,保存用户的信息,比如:用户id、token创建时间、token超时时间

        但是,不会包含敏感信息,比如:密码​​​​​​​

Signature签名 -- C区域:

        这个区域,就简单了,哈:

        ​​​​​​​        ​​​​​​​        2024 token的实现原理:JWT标准,一文搞懂_第6张图片

                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后,解密过程:

  1. 获取token,对token进行切割
  2. 对第二段B,进行base64url进行解密,获取payload信息,检测token是否超时
  3. 操作AB:将A 、B段拼接(AB均是base64url加密后的状态),再次通过HS535加密,假如得到一个CC字符串
  4. 操作C :需要把C进行base64url解密,结合加密过程中,C进行了额外一次的base64url加密(A+B)*base64url
  5. 对比:请求的token- 第三部分C == CC?  如果相等,校验通过.  如果有人修改任意内容,对比均不通过(因为加盐部分,对方不知道)

上面这个解密过程,可以好好看看,如果不懂的话欢迎留言

注意:

        这种方法,如果想要破解token,或者伪造token,或者人为恶意延长token的时间,都验证不通过,除非能拿到"盐" 

你可能感兴趣的:(通用接口小知识,前端)