关于 jwt-decode
jwt-decode 是用于查看 JWT 内容的 skill,不验证签名。它展示声明和时间信息,并提示多种安全风险;签名验证应使用 jwt-validate。
主要功能
- 01解码 JWT 头部和负载
- 02显示原始签名
- 03将令牌时间转换为 UTC
- 04标记常见安全风险
- 05递归解码嵌套 JWT
适用场景
- 01检查 JWT 中的声明
- 02查看令牌是否过期
- 03发现声明中的敏感数据
- 04检查嵌套 JWT
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jsonwebtoken/ jwt-skills --skill jwt-decode安装后在 Claude Code 中输入/jwt-decode确认已加载。
详细介绍
JWT 解码
通过 base64url 解码 JWT 的标头和载荷。不会验证签名——验证请使用 jwt-validate。
步骤
- 按
.将令牌拆分为三部分(标头、载荷、签名)。 - 对第 1 和第 2 部分进行 base64url 解码,并将其解析为 JSON。
- 显示标头、载荷(包含所有声明)以及原始签名字符串。
- 对于
exp、nbf、iat,同时显示 Unix 时间戳和人类可读的 UTC 时间。如果exp已过期,注明 已过期 以及过期时长。 - 运行安全检查(见下文)。
输出格式
## Header
{ "alg": "RS256", "typ": "JWT", "kid": "abc123" }
## Payload
{ "iss": "https://auth.example.com/", "sub": "user|12345", "exp": 1735689600 }
exp: 2025-01-01T00:00:00Z — EXPIRED (3 months ago)
iat: 2024-12-31T00:00:00Z
## Signature
Algorithm: RS256 | Signature: [base64url string]
(Not verified — use jwt-validate to verify)
安全检查
发现以下情况时,醒目地标出:
alg: none— 令牌未签名。警告:“此令牌没有签名,无法信任。任何人都可以创建或修改它。”这是已知的攻击途径(CVE-2015-9235),攻击者会移除签名以绕过验证。- 载荷中包含敏感数据 — JWT 是编码而非加密的。如果在声明中发现密码、机密信息、API 密钥或个人身份信息(PII),请发出警告。
- 缺少
exp— 令牌永不过期。将其标记为安全风险。 - 标头中包含
jku/jwk/x5u— 这些字段可能被用于诱骗验证器获取攻击者控制的密钥。如存在,请标记。
备注
- 如果
cty标头为 "JWT",则载荷是一个嵌套 JWT——请递归解码。 - 解码失败时,报告具体错误(base64 格式错误、JSON 无效、分段数量错误)。
- 此技能只会显示令牌内容,不会说明其真实性。请引导用户使用
jwt-validate进行验证。
评论
支持 Markdown