JWT 解码能看清所填声明,签名验证和应用授权需要服务端证据。下面全部是合成材料,没有真实令牌、账号或请求。只在自己的隔离测试环境核对服务端行为,不把真实访问令牌粘贴到示例中。
先核对文本结构
打开JWT解码工具,填入下面三段文本。第三段只编码了synthetic,没有密码学有效性。
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJleGFtcGxlLXVzZXIiLCJleHAiOjB9.c3ludGhldGlj
header为对象,alg是HS256;payload为对象,sub是example-user,exp是数字0。结果的exp UTC时间应为1970-01-01T00:00:00.000Z,nbf和iat保持missing。缺失是否可接受由应用策略决定,不能从样例推断。
本工具只接受三段JWS JWT文本、无填充Base64url、UTF-8和对象结构;上限32 KiB。两段或多余段不会被截断,五段可能是JWE,不能在此解密。分离载荷及b64/crit扩展超出支持范围;拒绝不代表其他JOSE工具也不支持。
alg:none配合空第三段可用于阅读无签名材料,工具会明确提示;这种材料不提供身份真实性证明。算法名称只是输入内容,本站不根据它自动选密钥或许可算法。JWS结构与算法字段,2026-10-04复核。
时间转换与接受令牌分开
exp、nbf、iat采用NumericDate数字秒。JWT时间声明,2026-10-04复核。工具输出完整UTC时间,不自动比较可信服务器时钟;小于毫秒的精度不会完整显示。
| 合成对照 | 文本工具预期 | 下一步 |
|---|---|---|
| exp为数字0 | 转换为1970年UTC时间 | 按服务器当前时间及应用策略核对拒绝过期令牌 |
| exp为字符串“0” | invalid_type,保留声明并提示 | 核对签发端类型,不能在客户端改值冒充有效 |
| nbf为未来时间 | 只显示其UTC时间 | 在隔离环境核对尚未生效的拒绝行为与时钟偏差 |
| exp超出显示范围 | out_of_range,不使整次解码崩溃 | 核对原始声明与服务端可接受范围 |
| exp/nbf/iat缺失 | missing | 核对该应用必需声明,不自动补时间 |
修改原始文本再运行后,旧结果应失效;重新下载时确认对应新输入。用时间戳工具独立按Unix秒模式复核,时区转换不证明签发时间真实。
服务端证据决定鉴权结论
在隔离环境准备测试账号A/B和受限对象,仅保存脱敏状态、关联标识、版本、操作与时间。不同服务错误码有差异,以下是验收情境,不是假定固定错误响应。
| 测试情境 | 应核对的服务端证据 | 停止条件 |
|---|---|---|
| 签名或允许算法不符 | 验证器拒绝;业务处理未被执行 | 仅能解码时不得批准登录 |
| 签发方或受众不符 | 与预期iss/aud及配置版本对照 | 缺配置或日志时保留未知 |
| 已过期或尚未生效 | 可信时钟、容差、拒绝记录 | 不通过改客户端时钟解除拒绝 |
| 身份有效但读取其他账号对象 | 对象授权拒绝,敏感字段未返回 | 跨账号数据可读即停止发布并修复 |
| 账号停用或权限收回 | 现有会话、缓存及敏感操作复查 | 页面隐藏按钮不能替代服务端拒绝 |
验证需约束算法、签发方和受众等条件;不同用途的令牌应有明确的验证规则。JWT安全最佳实践,2026-10-04复核。本地工具没有验证密钥、签名、会话或任何业务权限。
保存排查与交接材料
在排查记录填写操作、预期、实际观察、未知与下一步,保留脱敏的验证器结果和部署版本。Markdown用于交接,JSON草稿用于恢复;导入预览只能核对填写内容,不能证明记录真实性。
完成本地练习的标准是能解释三个层次:结构能否解析、声明有什么问题、哪些服务端证据尚未取得。继续按认证接入验收核对退出、权限变化和账号停用。解码成功不等于登录或授权成功。
