用 JWT Decoder 讀懂 JSON Web Token
這個解碼器的功能
JSON Web Token 由三個以句點串接、經過 Base64URL 編碼的部分組成,也就是 header、payload 與 signature。這個解碼器會依那些句點切分字串,把 header 和 payload 還原成可讀的 JSON,並原樣顯示 signature 片段。它會讀取 header 裡的 alg 欄位,接著把標準的註冊宣告(sub、iss、aud、jti)和時間相關宣告一併列出,讓你一眼看出這個 token 主張了什麼。
貼上 token 的當下就會開始解碼,不需要另外按送出。若你只是想看看解碼後的結構長什麼樣子,也可以載入範例 token。
什麼時候用
每當帶驗證的請求出現非預期行為,而你需要看清 token 實際攜帶了什麼時,它就派得上用場。常見情況是一個你想不通的 401:貼上 token,狀態列會立刻告訴你它是已過期、尚未生效,還是仍在有效期間內。
在搭建登入流程時也很方便,可以確認 issuer、audience 與 subject 是否和後端預期的一致,或檢查你在伺服器端加入的自訂宣告是否真的進到了 payload。
範例:讀取三個部分
以 eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.SflKx... 這種形式的 token 為例,第一段會解碼成類似 {"alg":"HS256","typ":"JWT"} 的 header,第二段解碼成類似 {"sub":"1234","iat":1700000000,"exp":1700003600} 的 payload,第三段則維持為不透明的 signature。解碼器會把數值 iat 與 exp 轉換成本地時間的日期,若 token 仍然有效,還會顯示距離過期還剩多少時間。
注意事項與邊界情況
解碼不等於驗證。這個工具從不會拿 signature 去比對密鑰或公鑰,因此解碼成功的 token 只證明它宣稱了什麼,並不代表這些宣稱可信;在依據 token 做任何處理之前,務必在伺服器端以適當的函式庫驗證 signature。由於 payload 只是經過 Base64URL 編碼,請把其中的內容視為任何持有該 token 的人都能讀取,它並未加密。基於同樣的理由,請避免貼上不屬於你的正式環境 token;另外要記得 exp 與 nbf 是以秒為單位的 Unix 時間戳,這也是為什麼 token 會在 exp 一過的瞬間就顯示為已過期。