JWT : JSON Web Token

JWT : JSON Web Token_第1张图片

JSON Web Token 是一种开放标准(RFC 7519),用于在网络应用环境中 以紧凑且自包含的方式安全地传递信息。常用于身份认证与信息交换。

JWT 实际上确实是明文的,签名只做完整性校验和身份验证。

文章目录

    • 使用场景
        • 优势
    • 结构
        • Header
        • Payload
        • Signature(签名)

使用场景

  • 身份认证(Authentication)
    • 用户登录后,服务端生成 JWT 并返回给客户端
    • 客户端将 JWT 存储在 localStorage 或 cookie 中,后续请求携带 JWT(通常放在 HTTP Header 中)
  • 信息交换
    两个系统之间安全传递信息(内容经过签名,可以验证真实性)

JWT签名只做完整性校验和身份验证,确保:
token 没有被篡改;token 确实是由服务器签发的(前提是密钥安全)
它并不会加密 payload,任何人只要拿到 token,就可以解码出其中的数据。

JWE(JSON Web Encryption 加密
):对 JWT 加密(复杂但更安全)

优势
  • 无需服务端存储状态(无状态认证)
    其实服务器生成一个 token密钥 给客户端,也能认证,不过服务器需要维护这个 token 是谁的。
  • 基于标准,跨语言、跨平台
  • 自包含(包含所需用户信息)

缺点:

  • 不易撤销(除非使用黑名单机制)
  • 长 token 可能影响传输性能
  • token 一旦泄露,安全风险高

结构

header.payload.signature
Header
{
  "alg": "HS256",
  "typ": "JWT"
}
  • alg 表示签名使用的算法(如 HS256 或 RS256)
  • typ 表示令牌类型,固定为 JWT

编码后为 Base64Url 字符串。

Payload

负载

{
  "sub": "1234567890",
  "name": "Alice",
  "iat": 1516239022
}
  • 包含用户信息(如 sub 是主题)
  • 可以包括自定义字段,也有一些标准字段(如 exp 过期时间)
Signature(签名)
HMACSHA256(
  base64UrlEncode(header) + "." + base64UrlEncode(payload),
  secret
)

用来验证消息是否被篡改,服务端用密钥对前两部分签名,接收方可验证

你可能感兴趣的:(2025,-,java,json,前端,android)