工作空间 / 能解码 JWT,不等于登录有效

能解码 JWT,不等于登录有效

把查看内容、验证签名和业务授权分开检查。

问题场景

网页能解出 Token 的用户 ID,时间也没有过期,但请求接口仍然返回未授权。解码结果到底说明了什么?

排查与解法按顺序复现、定位和验证

解码只能看到声明

常见三段式签名 JWT 的头部和载荷使用 Base64URL 编码。任何拿到字符串的人都可能读取内容,解码成功不表示内容可信。不要把真实生产 Token 粘贴到公开工单。

验证应在受信端完成

服务端需使用配置好的算法和密钥验证签名,不根据 Token 自己声明的算法无限制选择。还要检查 issuer、audience、有效期及业务需要的声明。

时间有效不代表授权有效

exp、nbf 使用秒级 NumericDate,不是毫秒。即使签名和时间都有效,也可能因账号停用、权限变更、退出登录或令牌撤销而失效。

// 仅供观察时间,不进行验签
const expiresAt = new Date(payload.exp * 1000);

用拒绝用例验收

至少测试过期 Token、改过载荷的 Token、错误受众、错误签发者、错误密钥和权限不足。网页解码工具只辅助查看字段,最终结果以受信端校验及授权判断为准。

参考资料

RFC 7519 · JWT ↗