在 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。