【笔记】JWT身份认证

前言

JWT(Json Web Token)与Session不同的是,Session是将用户登录信息存储在服务器内存中,而JWT是将用户登录信息加密后存储在客户端浏览器内存中

JWT的构成

  • JWT的Token是由HeaderPayloadSignature三部分组成,通过.依次分隔:Header.Payload.Signature,最终组成Token
    • Header:直接通过Base64编码后即可得到第一部分
      • typ:Token类型
      • alg:算法名称
    • Payload:载荷,用于存放标准中注册的声明、公共声名、私有声明
      • 标准中注册的声名
        • aud:Audience
        • exp:ExpiresAt,过期时间
        • jti:Id,证书编号
        • iss:Issuer,签发人,通常写域名
        • iat:IssuedAt,签发时间
        • nbf:NotBefore,生效时间
        • sub:Subject,签发主题
        • HeaderSignature:用来保证Token的安全性
      • 公共声名
      • 私有声名(自定义键值对)
    • Signature:签名,将Header的Base64数据与Payload的Base64数据用.拼接后,通过Header中定义的加密方式进行加密,得到签名

JWT的使用方法

  • 客户端收到服务端返回的Token之后,通常将Token存储在localStoragesessionStorage
  • 此后,客户端每次与服务端通信,都要将Token通过请求头的Authorization字段传递给后端
    • 在JWT身份认证的方式下,Authorization字段值必须以Bearer 开头

<token>:JWT加密字符串

1
Authorization: Bearer <token>

JWT的加解密

  • JWT的加解密是在后段完成的,加解密时需要提供预先设定的密钥,只有相同密钥能进行对应Token的解密

完成

参考文献

哔哩哔哩——黑马程序员
稀土掘金——焗猪扒饭
哔哩哔哩——go圈里最会写js的奇淼
哔哩哔哩——楠哥教你学Java