JWT 解析與驗簽
解碼 JSON Web Token 並驗證 HS/RS/ES/PS 簽章 —— 全程在瀏覽器完成
—
—
什麼是 JWT 解析器?
JWT(JSON Web Token)是現代 Web 應用最常見的驗證憑證,由 Header、Payload 和簽章三部分組成。Payload 裡存著使用者資訊、到期時間等資料,但看起來只是一串亂碼般的 base64 文字。這個工具能把 Header 和 Payload 解碼成易讀的 JSON,把 exp、nbf、iat 等註冊宣告翻成白話並顯示具體日期,還會用狀態徽章告訴你 token 是已過期、有效還是尚未生效。它還能驗證簽章:HS256/384/512 用共用密鑰,RS/PS/ES 用 PEM 公鑰,全部基於瀏覽器內建的 Web Crypto。開發者除錯登入流程時,不用再把正式環境的 token 貼給第三方網站。
這款工具能做什麼
- 📖 將 Header 與 Payload 解碼為格式化的 JSON
- 🏷️ 對註冊宣告逐條給出白話說明
- ⏳ exp、nbf、iat 同時顯示精確時間與相對時間
- ✅ 使用密鑰驗證 HS256/384/512 簽章
- 🔏 使用 PEM 公鑰驗證 RS/PS/ES 簽章
- 🚦 已過期 / 有效 / 尚未生效狀態徽章
- ⚠️ 對 alg 為 none 的不安全 token 提出警告
什麼時候會用到
- 排查登入介面回傳 401 的原因
- 檢查某個 token 為什麼突然失效
- 信任第三方身分提供者簽發的 token 之前先驗證
- 查看重新整理權杖裡到底有哪些宣告
隱私:token 和密鑰都在瀏覽器本地處理,不會上傳到任何伺服器,貼上真實憑證也完全放心。
三段結構到底是什麼
JWT 是用點號串起的三段 base64url:
- header 寫明演算法;payload 裝著宣告;signature 用金鑰把前兩段綁在一起。
- header/payload 完全沒有加密——任何拿到權杖的人都能讀出全部宣告。這是設計使然:JWT 是簽章容器,不是保險箱。
- 驗證需要簽署金鑰且只應發生在你的伺服器上;本頁在本機解碼,讓你不必把權杖交給遠端就能檢查內容。
解碼不等於驗證
聲明變成真實日期
標頭與載荷以可讀 JSON 呈現,exp、nbf、iat 等註冊聲明會轉成真實日期,並明確給出已過期、有效或尚未生效的判定。
HS、RS、PS、ES 簽章驗證
HS256/384/512 可用明文或 base64 形式的共用密鑰驗證,RS、PS、ES 令牌可用 PEM 公鑰驗證,全部透過頁面內的 Web Crypto 完成。
格式錯誤的令牌有明確說明
結構問題會被精確報告——缺少分隔點、標頭無效、載荷無法讀取——聲稱使用 none 演算法的令牌會被標記出來而非直接信任。
常見問題
我的 token 會被傳送到伺服器嗎?⌄
不會。解碼和簽章驗證全部使用瀏覽器的 Web Crypto API 在本機完成。你的 token、金鑰和公鑰絕不離開裝置,因此可以安全地檢查正式環境 token。
支援驗證哪些簽章演算法?⌄
支援帶共享金鑰的 HS256/384/512(金鑰可為 UTF-8 或 base64url),以及非對稱的 RS256/384/512、PS256/384/512、ES256/384/512——貼上 PEM 公鑰即可。非對稱 token 只需公鑰,絕不需要私鑰。
JWT 並未加密,這意味著什麼?⌄
標準 JWT 只是 base64url 編碼並簽章,並未加密,因此任何人都能讀取其 Payload。切勿在 JWT 中放入機密資訊。簽章只能證明 token 未被無金鑰者竄改。
顯示簽章無效——是權杖被偽造了嗎?⌄
多半是三個平淡的原因之一:權杖由另一個環境的金鑰簽發;簽發方輪換了金鑰而你手上的還是舊的;或 header 的演算法與驗證端預期不符(惡名昭彰的 alg=none 把戲)。先用這裡解碼看 header,再與後端實際使用的金鑰核對。