§

貼上你的 JWT

解析與簽章驗證都在本機執行。權杖的任何內容都不會傳送至伺服器。
§

標頭

json
§

酬載

json
§

驗證簽章

輸入密鑰以驗證簽章。

對台灣金融科技與 SaaS 工程師,JWT 解碼是除錯首要工具:玉山銀行、國泰世華、中國信託開放銀行 API 採 FAPI 規範,以 PS256 簽章交換 access token;LINE Login 與 Apple Sign-In Taiwan 回呼提供 id_token。健保署的虛擬健保卡(TWID)、TW FidO 聯邦識別、以及 AWS Cognito 部署於東京區域服務台灣用戶——所有 claims 都要解出 iss、aud、exp 才能除錯。數位發展部 moda 推動的 MyData 平台亦以 JWT 傳遞使用者授權同意書,符合個資法第十五條的特定目的範圍。

什麼是 JSON Web Token?

JSON Web Token(JWT)是一種精簡、可安全用於 URL 的小型宣告酬載封包格式。它是無狀態 Web 工作階段、OAuth/OIDC ID 權杖、機器對機器 API 驗證,以及已簽署魔法連結的標準憑證格式。一個 JWT 始終是由點連接的三個 base64url 片段:header.payload.signature。標頭與酬載是 JSON;簽章則是對前兩個片段所產生的二進位 MAC 或數位簽章。

JWT 是如何運作的?

當這個工具解碼權杖時,它走的是每個 JWT 函式庫都會遵循的相同三步路徑:

  1. 以點切分權杖,恰好分成三個非空片段。任何其他形狀都是格式錯誤。
  2. 對片段 0 與 1 進行 base64url 解碼,然後對各自呼叫 JSON.parse。標頭攜帶演算法(alg)與權杖類型(typ)。酬載攜帶宣告(subexpiat 與自訂鍵)。
  3. 若提供了密鑰,則使用標頭中指定的演算法,針對 <segment0>.<segment1> 重新計算 MAC,並逐位元組與第三個片段比對。
  4. 顯示驗證結果以及解碼後的宣告,並依 exp 宣告計算出人類可讀的到期指示。

為什麼在瀏覽器中解碼 JWT?

把正在使用中的真實 JWT 貼到遠端偵錯工具中,等於把這個憑證洩漏給該服務的日誌、可觀測性堆疊,以及它資料轉發給的任何合作夥伴。即使第三方網站宣稱不會記錄權杖,你也無從驗證。本工具的設計就是要讓你永遠不必做這種妥協:

  • 零網路:執行階段沒有任何 fetchXMLHttpRequestsendBeacon 呼叫。在解碼與驗證時打開 DevTools——網路面板會保持靜默。
  • 原生 Web Crypto:HMAC 驗證使用 crypto.subtle.importKeycrypto.subtle.sign,與你的執行環境會呼叫的原語完全相同。
  • 靜態部署:每個頁面都是單一靜態 HTML 檔案,沒有可入侵的伺服器端點。因為沒有伺服器可以洩漏,所以也沒有可洩漏的權杖。

此工具驗證什麼,不驗證什麼?

本工具的第 1 版僅驗證 HMAC-SHA 系列的簽章。具體而言:

  • 支援:HS256、HS384、HS512。提供共用密鑰,工具便會重新計算並比對 MAC。
  • 尚未支援:RS256/384/512(RSA)、ES256/384/512(ECDSA)、EdDSA 以及 PS256/384/512(RSA-PSS)。這些需要 PEM 或 JWK 形式的公開金鑰,會刻意延後到後續版本實作。
  • 拒絕:alg: "none"。工具仍會解碼權杖,但會明確標示其為不安全——並未進行任何簽章驗證,任何接受這種權杖的正式系統都存在嚴重的漏洞。

JWT 解碼範例是什麼樣子?

將 RFC 7519 中的標準範例權杖貼到上方的輸入欄位:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

標頭解碼為 {"alg":"HS256","typ":"JWT"},酬載則解碼為 {"sub":"1234567890","name":"John Doe","iat":1516239022}。在驗證面板中輸入 your-256-bit-secret,簽章檢查會回傳有效。若更改密鑰中任一字元,則會回傳無效。整個過程沒有任何資料離開你的瀏覽器。

這就是我們在正式環境中需要除錯權杖時,曾希望存在的 JWT 解碼器:尊重隱私、速度快,並建立在與執行階段相同的原語上。