在 DSH 环境下开发智能体时,调试外部 API 请求常涉及 JWT 令牌。开发者需要快速查看令牌的头部、负载以及过期时间等声明,而不需要编写额外的解码脚本或手动操作 Base64。dsh-jwt 插件直接在 DSH 环境中提供了解码与检查能力。
这是什么¶
这是一个由 ZhijiangTang 维护的 DSH 插件,归类于联网工具,采用 MIT 许可证。它专注于将 JWT 令牌拆分为三段并解码,同时解析时间相关的声明,用于调试和检查。
核心功能¶
- JWT 解码:将
header.payload.signature拆分,并对 header 与 payload 进行 Base64url 解码。 - 时间声明解读:解析
exp(过期)、iat(签发)、nbf(生效)时间,支持 UTC 和本地时间显示。 - 状态检查:检查令牌是否已过期、剩余有效时间等。
安装与启用¶
使用以下命令将插件添加到指定的 profile:
dsh plugin --profile <你的 profile> add file:./plugins/dsh-jwt
安装完成后,通常需要重启 profile 以加载插件。
使用方法¶
注册工具 jwt_decode,参数为 token(字符串类型,必填)。输入一个完整的 JWT 令牌字符串即可执行解码。
输出字段¶
| 字段 | 类型 | 说明 |
|---|---|---|
ok |
boolean | 是否成功解析(header 与 payload 均为合法 JSON) |
parts |
integer | 按 . 切分得到的段数(2 或 3) |
header |
object / null | 解码后的 JOSE header |
payload |
object / null | 解码后的 payload(claims) |
signaturePresent |
boolean | 是否存在签名段(仅存在性判断,不校验) |
issuedAt |
object? | iat 声明:包含值、UTC 时间、本地时间 |
notBefore |
object? | nbf 声明:包含值、UTC 时间、本地时间、是否生效 |
expiresAt |
object? | exp 声明:包含值、UTC 时间、本地时间、是否过期、剩余秒数 |
expired |
boolean? | 是否已过期(依据 exp) |
remainingSeconds |
number? | 距过期的剩余秒数(已过期时为负) |
errors |
string[] | 解码或解析过程中的错误信息(解析失败时不抛异常) |
适用场景与注意¶
- 调试用途:适合在开发调试阶段快速查看令牌结构、时间声明和 payload 内容。
- 安全警告:不验签。插件不校验签名有效性、密钥匹配或
iss/aud等声明。请勿依据本工具的输出做任何安全决策(如身份认证、授权、信任来源等)。需要可信校验时,请使用具备密钥校验能力的库。 - 容错处理:如果令牌格式错误或 JSON 解析失败,工具会返回
ok: false及errors列表,而不会抛出异常中断流程。
总结¶
dsh-jwt 为 DSH 开发者提供了一个轻量级的 JWT 调试工具,专注于结构解析与时间检查。如需了解更多或查看源码,请访问 GitHub。