選擇語言

JWT 解碼器:即時解析 JWT 標頭與負載內容

本地解碼 JWT,顯示格式化標頭與負載、自動轉換時間戳,並支援一鍵複製。無需上傳,資料不離開瀏覽器。

Mehmet Demiray 發佈日期 更新日期
分享
將exp、iat和nbf宣告轉換為易讀的日期

JWT 的結構剖析:標頭、載荷與簽章

JSON Web Token(JWT)由三個以點號(.)分隔的部分組成:標頭(Header)、載荷(Payload)與簽章(Signature)。這三部分皆採用 Base64URL 編碼,因此可安全地在網絡上傳輸。標頭通常包含演算法(如 HS256 或 RS256)與令牌類型(固定為「JWT」);載荷則承載實際資料,例如使用者識別碼、角色或過期時間;簽章用於驗證令牌完整性,但 JWT 解碼器不會驗證它。當您將一串 JWT 貼入 JWT 解碼器時,工具會在瀏覽器本地將前兩段解碼為可讀的 JSON 格式,方便您快速檢視內容。值得注意的是,即使沒有密鑰也能解碼 JWT,這意味著任何人都能讀取其內容——因此敏感資訊不應直接存放於載荷中。若需進一步處理原始編碼,可搭配 Base64 解碼 工具進行驗證。

標準 JWT 宣告(Claims)詳解

JWT 載荷中的宣告(Claims)分為註冊宣告、公開宣告與私有宣告三類。其中最常見的是七個註冊宣告:iss(簽發者)、sub(主題)、aud(受眾)、exp(過期時間)、nbf(生效時間)、iat(簽發時間)與 jti(唯一識別碼)。例如,當 exp 值為 1,717,020,800 時,JWT 解碼器會自動轉換為人類可讀的日期時間,如 2024年5月30日,方便開發者判斷令牌是否已失效。在台灣常見的應用情境中,若您的 API 伺服器位於台北,而用戶端裝置時間偏差超過 nbf 設定範圍,可能導致「尚未生效」錯誤。這些時間戳皆以 Unix 時間(秒)表示,而非毫秒。理解這些宣告有助於設計更穩健的認證流程。若需美化解碼後的 JSON 結構,可同步使用 JSON 格式化 工具提升可讀性。

解碼不等於驗證:JWT 安全觀念釐清

許多開發者誤以為只要能成功解碼 JWT,就代表該令牌有效且可信。事實上,JWT 解碼器僅執行「解碼」動作,完全不涉及簽章驗證。換句話說,即使令牌已被竄改或偽造,只要格式正確,仍可被解碼顯示內容。真正的驗證需比對簽章——這需要伺服器端持有對應的金鑰(對稱或非對稱),並重新計算簽章值進行比對。因此,在除錯階段使用 JWT 解碼器是安全的,但絕不能以此作為信任依據。所有生產環境的 JWT 驗證都必須在伺服器完成。此外,由於此工具全程在瀏覽器執行,您的令牌不會傳送到任何遠端伺服器,適合用於初步診斷。若懷疑編碼格式異常,亦可交叉檢查 Base64 編碼 規則是否正確套用。

使用 JWT 解碼器診斷認證問題

當前端應用無法通過 API 認證時,JWT 解碼器是快速定位問題的利器。常見錯誤包括:令牌已過期(exp 時間早於當前時間)、受眾(aud)不符(例如後端預期為「mobile-app」但收到「web-client」)、或裝置時鐘偏移導致 nbf 尚未到達。假設您在台北測試時發現登入失敗,貼入 JWT 後發現 iat 為 2024年6月1日,而本地時間為 2024年5月31日,此時若 nbf 設為 1,717,200,000(即 2024年6月1日 UTC),則令牌確實尚未生效。建議開發者在本地環境同步網路時間協定(NTP)以減少時差干擾。此外,確認載荷中是否包含必要角色或權限欄位,也是常見除錯步驟。透過即時解碼,無需重啟服務即可驗證令牌內容是否符合預期。

常見疑問:關於 JWT 解碼的安全性與限制

使用者常問:「能否安全地貼上生產環境的 JWT?」答案取決於內容敏感度。由於 JWT 解碼器僅在瀏覽器本地運作,且不傳送資料至伺服器,因此技術上不會外洩。然而,若該令牌包含個人識別資訊(如身分證字號、電子信箱),仍建議避免在共用電腦操作。另一常見問題是「為何我的 JWT 無法解碼?」可能原因包括:缺少兩個點號、使用標準 Base64 而非 Base64URL(例如含「+」或「/」符號)、或載荷非合法 JSON。請確認您的 JWT 符合 RFC 7519 規範。至於「如何查看過期時間?」只需貼入令牌,JWT 解碼器會自動將 exp 欄位轉為易讀格式,例如顯示「過期時間:2024 年 6 月 15 日 14:30(UTC+8)」。若需手動驗證編碼正確性,可輔助使用 Base64 解碼 功能逐一檢視各段內容。

最常被問到的問題

JWT 解碼器能驗證我的 token 是否有效嗎?

不能。JWT 解碼器僅會將 token 的 header 與 payload 部分解碼為可讀的 JSON,但不會驗證簽章(signature)是否合法或未被竄改。解碼後的內容僅供參考,絕不可視為可信資訊。若需驗證 token 真偽,請使用伺服器端的金鑰進行簽章驗證。

如何用 JWT 解碼器查看 token 的到期時間?

只要將完整的 JWT 字串貼入 JWT 解碼器,工具會自動將 exp(過期時間)、iat(簽發時間)與 nbf(生效時間)等標準宣告轉換為人類可讀的本地時間格式,方便您快速確認 token 是否已過期或尚未生效。

把正式環境的 JWT 貼到這個工具安全嗎?

安全。JWT 解碼器完全在您的瀏覽器中執行,token 不會傳送到任何伺服器,也不會儲存或記錄。但請注意:即使解碼過程安全,也不代表解碼後的內容可信——任何人都能解碼 JWT,只有經過簽章驗證的 token 才應被系統接受。

為什麼我的 JWT 無法成功解碼?

常見原因包括:token 格式不正確(非標準的 header.payload.signature 三段式結構)、某一段不是有效的 base64url 編碼,或 payload/header 本身不是合法 JSON。請確認 token 完整無缺,並可搭配 Base64 解碼 工具手動檢查各段內容。

解碼出來的 payload 是亂碼,該怎麼辦?

這通常表示該段 base64url 編碼有誤,或原始內容並非 UTF-8 編碼的 JSON。JWT 標準(RFC 7519)要求 header 與 payload 必須是 base64url 編碼的 JSON 物件。若仍無法解析,建議檢查 token 來源是否符合規範,或使用 JSON 格式化 工具輔助驗證結構。

JWT 解碼器和線上其他解碼工具有什麼不同?

本工具專為繁體中文使用者設計,自動將時間宣告轉為本地時區顯示,並強調「解碼不等於驗證」的安全觀念。所有處理均在客戶端完成,無資料外洩風險,且輸出格式清晰易讀,適合開發者快速除錯 API 認證問題。