欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > JWT生成的token的构成部分

JWT生成的token的构成部分

2025/5/25 15:44:09 来源:https://blog.csdn.net/2301_80454352/article/details/148192662  浏览:    关键词:JWT生成的token的构成部分

JWT(JSON Web Token)生成的Token由三部分组成:​​头部(Header)​​、​​载荷(Payload)​​和​​签名(Signature)​​,各部分通过英文句点.连接。以下是具体内容及作用解析:


​1. 头部(Header)​

  • ​作用​​:声明Token类型和签名算法。
  • ​内容​​:
    • typ:固定为"JWT",表示Token类型。
    • alg:签名算法,如HS256(HMAC SHA256)、RS256(RSA SHA256)等。
  • ​编码方式​​:JSON对象通过Base64URL编码为字符串,例如:
    {"alg": "HS256", "typ": "JWT"}  // 编码后:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

​2. 载荷(Payload)​

  • ​作用​​:携带用户信息及声明(Claims),包括标准字段和自定义数据。
  • ​内容​​:
    • ​标准声明(官方建议但不强制使用)​​:
      • iss(Issuer):签发者(如服务端域名)。
      • sub(Subject):主题(如用户ID)。
      • aud(Audience):接收方(如客户端应用ID)。
      • exp(Expiration Time):Token过期时间(Unix时间戳)。
      • nbf(Not Before):生效时间。
      • iat(Issued At):签发时间。
      • jti(JWT ID):唯一标识。
    • ​自定义声明​​:开发者可添加业务相关字段,如用户角色、权限、用户名等。例如:
      {"userId": 123, "role": "admin"}  // 编码后:eyJ1c2VySWQiOjEyMywicm9sZSI6ImFkbWluIn0
  • ​编码方式​​:JSON对象通过Base64URL编码,但​​不加密​​(明文可见)。

​3. 签名(Signature)​

  • ​作用​​:验证Token完整性和真实性,防止篡改。
  • ​生成方式​​:
    1. 拼接编码后的Header和Payload:base64UrlEncode(Header) + "." + base64UrlEncode(Payload)
    2. 使用Header中声明的算法(如HS256)和服务器端密钥(Secret Key)加密生成签名。
    // 示例:使用HMAC SHA256生成签名
    signature = HMACSHA256(headerBase64 + "." + payloadBase64, secretKey);
  • ​验证方式​​:服务端用相同算法和密钥重新计算签名,与Token中的签名比对是否一致。

​完整Token示例​

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjEyMywicm9sZSI6ImFkbWluIiwiaWF0IjoxNzM1NDc4MDA1fQ.GromRG7kK90UfU_Q5iOSHs_xE-zSk0e0HLHqJQUjYMU
  • ​分解​​:
    • 头部:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9(解码后为{"alg":"HS256","typ":"JWT"})。
    • 载荷:eyJ1c2VySWQiOjEyMywicm9sZSI6ImFkbWluIiwiaWF0IjoxNzM1NDc4MDA1fQ(解码后包含用户ID、角色、签发时间)。
    • 签名:GromRG7kK90UfU_Q5iOSHs_xE-zSk0e0HLHqJQUjYMU

​注意事项​

  1. ​敏感信息​​:Payload内容未加密,避免存储密码等敏感数据。
  2. ​有效期​​:通过exp字段控制Token过期时间,建议设置较短的有效期(如2小时)。
  3. ​密钥安全​​:签名密钥(Secret Key)必须严格保密,泄露将导致Token可被伪造。

如需生成或验证JWT,可使用工具库如Java的JWTUtil(Hutool)、Node.js的jsonwebtoken或Python的PyJWT

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词