一、什么是JWT

  • JWT简介
    • JSON网络令牌 是为了在网络应用环境间传递声明而指定的一种基于JSON的开放标准(RFC 7518)JWT是一个轻便的安全跨平台传输格式 定义了一个紧凑的自包含的方式用于通信双方之间以JSON对象行使安全的传递西悉尼 因为数字签名的存在 这些信息是可信的
  • JWT官网: https://jwt.io/introduction
  • session认证和token认证的区别
    • session认证的步骤
      • 客户端发起账号密码
      • 服务端校验
    • session认证存在的问题
      • 存储,session保存到服务器端开销大
      • 多台服务器之间的共享
  • token认证的步骤
    • 客户端发起账号密码认证
    • 服务端校验,正确后,生成一个token的字符串返回给客户端
    • 客户端收到token后保存到本地,后续请求将token放到请求头一并发送
    • 服务端收到token后,对token进行验证,判断是否合法
  • JWT的构成
    • header
      • JSON字符串
      • 保存JWT的元数据
        • image.png
    • payload
      • json字符串
      • 保存有效信息
        • 标准中注册的声明
          • 公共的声明
            • iss:发行人
            • sub:到期时间
            • aud:用户
            • nbf:在此之前不可用
            • iat:发布时间
            • jti:JWT ID用于标识该JWT
          • 私有的声明
            • usrname
            • id
    • signature
      • 编码后的Header
      • 编码后的Payload
      • secret
  • JWT的使用
    • 客户端
      • 保存在localStorage
      • Authorization:Bearer Token
    • 服务端
      • 对第一部分解码,得到Header
      • 得到加密方式,使用这种加密方式和secrect对1、2加密,得到了一个签名,如果结果一致,则认为token合法
      • 再对第二部分解码,得到对应的数据