逐段查看依据 · 每个结论都标明验证范围
能解码,不代表已验证。
读出 Header 和 Payload,只能证明三段式 JWS/JWT 的前两个 Base64URL 段可以解析为 JSON。真正的信任还需要固定允许的算法、匹配的密钥、有效的时间窗口,以及符合应用配置的 issuer 与 audience。
Header
{ "alg": "HS256", "typ": "JWT" }Payload
{ "sub": "123", "aud": "devsexy-api", "exp": 1766073600 }Signature
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c解码并验证公开测试令牌
两个实例使用同一份公开 HS256 测试数据,对照可读载荷与指定算法、密钥、签发者、受众和时间下的验证。
载入实例会替换令牌和全部选项,包括密钥。该公开测试数据不提供任何访问权限,密钥不能用于真实应用。
读取声明,不信任签名
解码 · HS256 · 不提供密钥。此令牌已在 2024 年过期,解码仍可读取声明。
输入
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkZW1vLXVzZXIiLCJpc3MiOiJodHRwczovL2lzc3Vlci5leGFtcGxlLnRlc3QiLCJhdWQiOiJkZXZzZXh5LWRlbW8iLCJuYmYiOjE3MTAwMDAwMDAsImV4cCI6MTcxMDAwMzYwMH0.gAP2idduo9EHFyecHJohqwzl7F3g8Bvp3xDvVWyCHsI
主体是 demo-user,输出明确表示没有检查签名。
"sub": "demo-user" Signature: not checked — decoding never proves authenticity
在有效期内的固定时间验证
验证 · HS256 · 公开测试密钥 devsexy-public-example-key-do-not-use-in-production · 签发者 https://issuer.example.test · 受众 devsexy-demo · 验证时间 1710001800 秒 · 时钟偏差 0。
输入
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkZW1vLXVzZXIiLCJpc3MiOiJodHRwczovL2lzc3Vlci5leGFtcGxlLnRlc3QiLCJhdWQiOiJkZXZzZXh5LWRlbW8iLCJuYmYiOjE3MTAwMDAwMDAsImV4cCI6MTcxMDAwMzYwMH0.gAP2idduo9EHFyecHJohqwzl7F3g8Bvp3xDvVWyCHsI
在指定历史时刻验证通过。清空验证时间后会使用当前时钟,此令牌已过期;历史通过不代表当前有访问权限。
Signature: verified with the selected HS256 key, claim, and clock policy Issuer policy: https://issuer.example.test Audience policy: devsexy-demo
信任阶梯
每一级只证明紧接着的那件事。
Compact 结构
正好包含三个非空的 URL-safe 段
JSON 已解码
Header 与 Claims 可读,但尚不可信
签名已校验
在预期算法和正确密钥下证明完整性
时间有效
按明确的时钟偏差策略检查 exp / nbf
Issuer 与 Audience 匹配
应用配置与对应 Claims 一致
业务策略通过
角色、租户、scope、nonce 与撤销规则均满足要求
算法 / 密钥契约
Token 里的 alg 是输入,不是安全策略。
HS256 / 384 / 512共享密钥签发方与校验方持有同一密钥
此工作台支持
RS256 / 384 / 512 · PS256 / 384 / 512RSA 公钥私钥签名,公钥校验
支持;PEM 密钥类型与算法必须匹配
ES256 / 384 / 512EC PEM 密钥密钥类型和曲线必须匹配
支持;PEM 密钥类型与算法必须匹配
JWK / JWKS / none / EdDSA不接受不读取远程密钥,也不接受无签名 JWT
不在此工作台允许列表中
NumericDate 时钟
JWT 时间 Claims 使用 Unix 时间戳秒数。
当前 · 1,716,073,600
iat1,716,070,000签发于 60 分钟前nbf1,716,072,700已生效 15 分钟exp1,716,075,400将在 30 分钟后过期把毫秒误当秒会让日期偏到数万年以后。时钟偏差应是校验器中明确且有限的容差设置,不能成为忽略过期时间的理由。
Issuer 与 Audience 检查点
即使签名有效,签发方不受信任或受众不匹配也必须拒绝。
isshttps://id.example.test/与受信任的签发方精确匹配
aud["devsexy-api", "account"]按应用策略包含要求的 audience
tenantproduction-eu由业务策略检查的私有 Claim
scopetools:read授权决策仍由资源服务器负责
Debugger 风险台
把调试器当作可能接触 Bearer Token 的敏感工作台。
Bearer Token 泄漏
高风险URL、截图、日志、剪贴板历史和工单中的 Token 都可能被重放。
弱 HMAC 密钥
高风险过短或可猜测的共享密钥可能被离线暴力破解。
算法混淆
严重必须固定算法 allowlist,绝不能让攻击者控制的 alg 决定校验策略。
不可信的 kid / JWK URL
高风险Header 中的密钥提示不能触发不受限制的文件读取或网络请求。
浏览器内密钥处理
需评估DevSexy 不会上传密钥;仍应只用测试密钥,生产签名密钥应留在受控基础设施。
检查令牌周围的证据
不是完整三段 JWT 的编码文本,可使用 Base64 工具。
核对 UTC 时刻,避免把秒误当成浏览器毫秒。
单独核对查询转义;URL 解析不能验证令牌身份。
使用离线工具箱重复检查,并坚持使用测试凭据。