2024年腾讯开发者必看:JWT解析全攻略

Posted by

JWT是什么?——从概念到结构的快速拆解

JSON Web Token(JWT)是一种基于 JSONToken 方案,常用于 身份认证信息交换。它由三段 Base64Url 编码的字符串组成:HeaderPayloadSignature,用点号 . 连接。

结构细节

部分作用典型字段
Header声明 token 类型及签名算法alg、typ
Payload携带业务数据(claims)sub、exp、iat、nbf、aud、custom claim
Signature防篡改校验HMACSHA256、RS256 等

实战:使用在线工具和 Python 完成 JWT 解析

下面以 JWT 在线解析 为例,展示如何快速获取 token 的 Header 与 Payload 信息。

步骤概览
  1. 打开在线解析页面,粘贴你的 JWT。
  2. 点击「解析」按钮,即可看到解码后的 JSON。
  3. 若需要验证签名,可在页面提供的 Secret 输入框中填入密钥。

在实际项目中,往往需要在后端进行同样的解析与校验。下面给出一个简洁的 Python 示例,演示如何使用 PyJWT 完成 JWT 解码校验

import jwt

# 示例 JWT(请替换为真实 token)
token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTYiLCJleHAiOjE3MDU2MDAwMDAsImlhdCI6MTY5OTk5OTk5OX0.5K4YVJZz8X3aGzKk9lXU5tQ9V6A7c3W2tV5l2Z8Y9sU"

# 服务器端密钥(HS256 场景)
secret = "your-secret-key"

# 解码并校验 token(若签名不匹配或已过期会抛异常)
try:
    payload = jwt.decode(token, secret, algorithms=["HS256"])
    print("✅ Payload:", payload)
except jwt.ExpiredSignatureError:
    print("⚠️ Token 已过期")
except jwt.InvalidTokenError as e:
    print("❌ Invalid token:", e)

上述代码展示了三个关键点:

  • 使用 jwt.decode 同时完成 解码签名校验
  • 捕获 ExpiredSignatureError 以处理 token 失效 场景。
  • 通过异常捕获确保 非法 token 不会导致系统崩溃。

结合在线解析工具与后端代码,你可以快速完成 JWT 解析解密(若使用对称加密)以及 TOKEN 验证,为业务系统提供可靠的身份鉴权。

Leave a Reply