代码改变世界

JWT

2023-11-29 10:23  默默不语  阅读(12)  评论(0编辑  收藏  举报
  • 结构: xxx.yyy.zzz

    • Header(头部): 对 header 进行 base64 编码就得到 jwt 第一部分
      • typ: token 类型
      • alg: 签名的加密算法
    • Payload(载荷): 对 payload 进行 base64 编码就得到 jwt 第二部分
      • RFC 7519 标准定义的字段
      • iss: Issuer 的简写, token 的举办发着
      • sub: Subject 的简写, token 的主题
      • aud: Audience 的简写, token 的接收目标
      • exp: Expiration Time 的简写, token 的过期时间,时间戳格式
      • nbf: Not Before 的简写, token 在这个时间之前不能被处理, 主要是纠正服务器时间偏差问题
      • iat: Issue At 的简写, token 的颁发时间
      • jti: JWT id的简写, 代表 token 的 id, 通常当不同用户认证时, 他们的 token jti 是不同的
      • 用户可以在 payload 中添加自定义字段, 通常存一些全局的, 经常使用的, 安全要求不高的数据
    • Signature(签名)
      • 为得到签名,需要有编码过的 header, 编码过的 payload, 一个密钥以及在 header 中指定的加密算法, 然后对他们签名.
      • 例如, 加密算法使用 HMAC SHA256, signature = HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)