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 倉庫。