如何快速在 Postman 中检查并解码 JWT(正确方式)
Source: Dev.to

介绍
如果你是一名使用现代 API 的开发者,JWT(JSON Web Token)已经是你的日常。你一定经历过这样的情形:一次 API 调用失败,你只能抓耳挠腮,猜测是 token 本身、过期时间还是声明(claims)出了问题。
常见的工作流是使用 Postman(或类似的工具如 Insomnia)来测试 API,但当需要解码刚收到的 JWT 时,Postman 的原生功能往往让你不得不打开另一个浏览器标签页去调试。
本文将介绍在 Postman 中检查 token 的简便原生方法,并展示一种工具,帮助你在不切换工具的情况下完成深度、安全的解码与验证。
方法一:快速且粗糙的 Postman 检查(局限性)
在控制台查看 Token
如果 JWT 出现在响应体或响应头中,Postman Console 是快速预览的最佳选择:
- 打开 Postman Console(视图 → 显示 Postman Console 或
Ctrl/Cmd + Alt + C)。 - 发送请求。
- 在 Console 中点击请求/响应,查看原始头部和正文。
- 复制 token(由三个用点分隔的 Base64 块组成的长字符串)。
注意点: 你仍然得到的是 Base64 编码的字符串。虽然可以手动对中间部分(payload)进行 Base64 解码,但无法轻松验证签名、以人类可读的方式检查过期时间,或立即验证 token 的结构。
使用前置请求/测试脚本
对于更高级的用户,可以编写 Postman 脚本手动解码 payload 部分,但这需要写代码并引入库。
// Example of a Postman Test Script to inspect a received JWT
pm.test("Check JWT Expiration", function () {
const token = pm.response.json().access_token; // Adjust path as needed
// Split the token into its parts (Header, Payload, Signature)
const [header, payload, signature] = token.split('.');
// Decode the payload part (Base64URL safe decoding)
const decodedPayload = Buffer.from(payload, 'base64').toString('utf8');
const claims = JSON.parse(decodedPayload);
// Log the claims to the Console for inspection
console.log("JWT Payload:", claims);
// Example: Check if the token is already expired
const isExpired = claims.exp < Date.now() / 1000;
pm.expect(isExpired).to.be.false;
});
这能工作,但它是你每次请求都必须编写的模板代码,而且仍然不处理签名验证。
方法二:正确的做法 – 使用专用 JWT 解码工具
在主动调试时,你需要速度、安全性和验证。最高效的工作流是把 token 从 Postman 复制出来,粘贴到专门面向开发者的工具中。
一个高质量的工具应当即时完成以下三件事:
- 即时解码: 将 header 与 payload 转换为人类可读的 JSON。
- 签名验证: 使用提供的 secret(如果适用)验证签名。
- 错误标记: 高亮常见问题,如 token 已过期或签名无效。
为什么专用工具优于 Postman 调试
- 100 % 客户端解码: 最好的工具在浏览器中完成全部解码,确保你的 secret 和 token 永不离开本机。这正是 DevCenterTools JWT Decoder 的实现方式。
- 内置验证: 自动检查
exp(过期时间)、iat(签发时间)等注册声明,若无效或已过期会以红色提示。 - 算法支持: 正确处理 HS256、RS256 等不同算法,并指引你提供所需的 secret 或公钥。
- 速度快: 复制 token、粘贴即可立即看到结果,无需编写(或维护)自定义 Postman 脚本。
你的调试工作流升级
- 在 Postman 中发送请求并获取 JWT。
- 复制完整的 JWT 字符串。
- 将其粘贴到 DevCenterTools JWT Decoder。
- 立即看到解码后的 header 与 payload,并可提供 secret 进行签名验证。
这一步骤可以立刻帮助你定位问题:是 payload/claims 本身有误,还是 API 的 token 处理出了问题?
结论
虽然 Postman 是 API 测试的基础工具,但将 JWT 解码与验证等复杂任务交给专门的工具,能够显著加快调试周期。如果你经常在 Postman 与浏览器标签页之间切换进行解码,请务必选用既快速又安全(客户端完成!)且能自动验证 token 的工具。