解碼 JSON Web Token
JSON Web Token (JWT) 是一種緊湊的字串,用於在系統之間傳遞身分與權限資訊——最常見的用法是在登入後,作為 Authorization: Bearer 標頭傳送。它看起來像隨機文字,但實際上是由三個經過 Base64URL 編碼的部分組成:標頭、包含聲明的酬載,以及簽章。這個 JWT 解碼工具會將 Token 拆分,把前兩個部分解碼成易讀的 JSON 格式,並說明重要的聲明內容。解碼與驗證過程皆在本地端完成,您的 Token 絕不會被傳送出去。
功能特色
- 標頭與酬載:解碼並格式化輸出,且皆附有複製按鈕。
- 時間聲明說明:將
iat、nbf、exp與auth_time從 Epoch 秒數轉換為您所在時區的日期與時間。 - 過期檢查:讓您一眼看出 Token 是否已過期或尚未生效。
- HMAC 簽章驗證:使用瀏覽器的 Web Crypto API 驗證 HS256、HS384 與 HS512 簽章。
- 支援離線使用:網頁載入後即可離線運作,不會將任何資料傳送至外部。
適用時機
除錯身分驗證問題。 當請求失敗並回傳 401 Unauthorized 時,您可以解碼 Token 來檢查它是否已過期、是否核發給正確的受眾(aud),或是是否帶有預期的角色與權限範圍(scopes)。
開發與測試 API。 在上線前,驗證您的伺服器是否將預期的聲明內容與正確的過期時間放入 Token 中。
學習 OAuth 與 OpenID Connect 的運作原理。 來自身分提供者的 ID Token 與 Access Token 通常是 JWT。解碼測試用的 Token,可以了解提供者分享了哪些關於使用者的資訊。
JWT 結構
header.payload.signature
- Header — Token 類型與簽章演算法,例如
{"alg":"HS256","typ":"JWT"}。 - Payload — 包含聲明 (claims)。已註冊的聲明包含
iss(發行者)、sub(主題,通常為使用者 ID)、aud(受眾)、exp、nbf、iat以及jti(Token ID)。應用程式可加入自訂聲明,例如name或role。 - Signature — 使用密鑰 (HMAC) 或私鑰 (RSA、ECDSA、EdDSA) 對
header.payload進行簽章而產生。只要 Header 或 Payload 被更改了任何一個字元,簽章就會不符。
由於 Payload 僅經過編碼,絕對不要將密碼等機密資訊放入 JWT 中。若要解碼其他 Base64 資料,請使用 Base64 工具;若要查看任何時間戳記,請使用 Unix 時間戳記轉換器。