JWT消息构成

一个token分3部分,按顺序:

  • 头部(header)
  • 载荷(payload)
  • 签证(signature)

头部

  • 声明类型,这里是jwt
  • 声明加密的算法 通常直接使用 HMAC SHA256

载荷

Payload 部分也是一个 JSON 对象,用来存放实际需要传递的数据。JWT 规定了7个官方字段,供选用。

  • iss (issuer):签发人
  • exp (expiration time):过期时间
  • sub (subject):主题
  • aud (audience):受众
  • nbf (Not Before):生效时间
  • iat (Issued At):签发时间
  • jti (JWT ID):编号

除以上默认字段外,我们还可以自定义私有字段,如下例:

{ 
"sub": "1234567890", 
"name": "chongchong", 
"admin": true
 }

注意,JWT 默认是不加密的,任何人都可以读到,所以不要把秘密信息放在这个部分。

签名

Signature 部分是对前两部分的签名,防止数据篡改。 首先,需要指定一个密钥(secret)。这个密钥只有服务器才知道,不能泄露给用户。然后,使用 Header 里面指定的签名算法(默认是 HMAC SHA256)

算出签名以后,把 Header、Payload、Signature 三个部分拼成一个字符串,每个部分之间用"点"(.)分隔,就构成整个JWT对象TOKEN, 就可以返回给用户。

上一篇:java学习笔记(序列化初步+数据流+处理流的个人理解)


下一篇:Python_文件操作(文件打开形式,与文件常见方法(读取中文文件),拆分文件任务)