DSH 生态奉行“一切皆插件”的理念。在智能体开发的后端场景中,开发者常遇到需要解析、伪造或验证 JWT 的情况:手动解码 header/payload 并计算过期时间效率低;联调时手拼签名容易出错;心算验证签名和有效期不可靠。dsh-tool-jwt 插件为这些场景提供了确定性的解决方案。
核心能力¶
dsh-tool-jwt 是由 chenxuhl 维护的 DSH 插件,提供 HS256 JWT 的解析(不验签)、签发与完整验签。该插件不依赖外部运行时库,仅使用 Node 内置 crypto 模块。
1. 解析(Decode)¶
解析 header 和 payload 为 JSON,并按当前时钟计算过期状态(valid / expired / no-exp-claim)。此功能不验签,仅做结构解析与过期状态计算,用于快速排查 token 内容。
2. 签发(Sign)¶
签发 token。会自动填充 iat(签发时间)和 exp(过期时间),支持通过 expiresInSeconds 参数指定有效期。
3. 验证(Verify)¶
完整校验链路:
* 算法检查:仅接受 alg=HS256,拒绝 alg=none 或其他算法。
* 签名验证:使用常数时间签名比较(crypto.timingSafeEqual),防止时序攻击。
* 过期判定:支持 leewaySeconds 参数,允许一定的时钟偏差容忍。
安装¶
使用 DSH 的 Profile Bundle 方式安装,插件会自动加入 profile 的 layer stack。
交互式(web)Profile 安装:
dsh plugin --profile web add github:chenxuhl/dsh-tool-jwt
一次性任务(headless)Profile 安装:
dsh plugin --profile headless add github:chenxuhl/dsh-tool-jwt
典型用法¶
以下命令展示了三个核心动作的具体调用方式。
解析 Token¶
查看 token 内容及过期状态,不验签。
dsh run "jwt { action: \"decode\", token: \"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1MSJ9.sig\" }"
签发 Token¶
构造测试用的 token,自动填充时间戳。
dsh run "jwt { action: \"sign\", payload: {\"sub\":\"u1\",\"role\":\"admin\"}, secret: \"topsecret\", expiresInSeconds: 3600 }"
验证 Token¶
校验签名与有效期,支持容错时间。
dsh run "jwt { action: \"verify\", token: \"...\", secret: \"topsecret\", leewaySeconds: 30 }"
适用场景与注意事项¶
本插件面向开发与联调场景(解码排查、生成测试 token、验签)。请勿在生产环境的不可信会话中粘贴生产环境密钥。
安全模型¶
- 算法强制:
verify模式强制要求alg=HS256,拒绝其他算法(如alg=none),防止算法降级攻击。 - 输入限制:插件对输入大小有严格限制,超限直接拒绝,不进行截断处理:
- Token 长度 ≤ 16KB
- Secret 长度 ≤ 4KB
- Payload 序列化后 ≤ 8KB
- 互斥检测:
secret(字符串密钥)与secretBase64url(二进制密钥)参数互斥,同时传入会报错。
生态背景¶
DSH 是 DeepSeek Harness 的简称,其插件生态与社区目录(https://www.skillhub.cn/plugins/chenxuhl/dsh-tool-jwt)独立运作,与 DeepSeek 或幻方无官方从属关系。
更多细节与源码,请访问 GitHub 仓库。