未填 Secret;簽章會保留原值,編輯後的 Token 通常無法通過驗證
工具說明
關於 JWT 解析器
JWT Parser 用來解碼 JSON Web Token 的 Header 與 Payload,查看 alg、typ、簽章狀態,以及 iss、sub、aud、iat、nbf、exp 等常見 claims。
此工具在瀏覽器本機解析 Token,也可用本機 HMAC 密鑰重新簽署編輯後的 Header/Payload;不會把 Token 上傳到 wetool.site。
如何使用 JWT Parser
- 貼上完整 JWT,格式應為 header.payload.signature 三段。
- 點擊 Decode,查看 Header、Payload 與常見 claims 摘要。
- 檢查 exp、nbf、iat 是否符合預期;它們通常是以秒為單位的 Unix 時間。
- 若要測試編輯後的 HMAC token,輸入 secret 後會在瀏覽器本機重新簽署。
常見使用場景
- 除錯登入狀態時快速確認 token 是否已過期或尚未生效。
- 檢查 alg、typ、iss、aud、sub 是否符合 API 閘道或後端約定。
- 把 payload 格式化成可讀 JSON,定位 scope、role、tenant_id 等業務欄位。
- 修改測試 token 的 claim 後,用本機 secret 重新簽署供開發環境驗證。
JWT 結構、claims 與簽章邊界
JWT 通常由三個 Base64URL 片段組成: Header、Payload、Signature。解碼 Header/Payload 不需要 secret,但判斷簽章可信必須在服務端或持有正確 key 的環境完成。
- Header: 通常包含 alg 與 typ,描述簽章演算法與 token 類型。
- Payload: 保存 claims,例如 iss、sub、aud、iat、nbf、exp 與業務欄位。
- 簽章:用來防止 Header/Payload 被竄改;只解碼 Token 不代表簽章有效。
- 時間類宣告:iat、nbf、exp 通常以秒為單位,而不是毫秒。
JWT 解析常見問題
- Decode JWT 等於驗證 JWT 嗎?
- 不等於。解碼只是讀取 Header 與 Payload;驗證需要用正確的密鑰或公開金鑰檢查簽章。
- 為什麼 payload 可以直接看到?
- JWT 的 Header 與 Payload 是 Base64URL 編碼,不是加密。不要把祕密資訊放進普通 JWT payload。
- exp、iat、nbf 是什麼?
- exp 是到期時間,iat 是簽發時間,nbf 是生效時間,常見格式是以秒為單位的 Unix 時間。
- 修改 Payload 後 token 還能用嗎?
- 沒有重新簽署通常不能用。此工具填入 HMAC secret 後可在本機重新簽署測試 token。
- JWT 會上傳嗎?
- 不會。解碼、編輯與 HMAC 重新簽署都在瀏覽器本機執行,不會上傳到 wetool.site。
JWT 與 Session 的差異
工作階段通常把狀態保存在伺服器端,只給瀏覽器一個工作階段 ID。JWT 把宣告放在 Token 中,適合跨服務傳遞身分資訊,但更需要控制過期時間、簽章密鑰和酬載內容。
JWT 簽章驗證與 alg 排錯清單
JWT 能被 decode 不代表可信。真正驗證必須確認 algorithm、key 來源、issuer、audience 與 signature 都符合後端策略。
- 不要依 token 自帶的 alg 盲目選驗證演算法;伺服器應使用設定好的 allowlist。
- 看到 alg=none、HS256/RS256 混用或 kid 指向外部位址時,要以高風險設定處理。
- 此工具適合查看與產生 HMAC 測試 token,正式環境驗證仍應在後端或驗證閘道完成。
exp、nbf、iat 時間排錯
JWT 的時間類宣告通常以秒為單位。到期判斷異常時,先排除秒與毫秒混用、時鐘偏移與時區顯示的問題。
- exp 早於目前的 Unix 時間(秒)時 Token 已過期;nbf 晚於目前時間時 Token 尚未生效。
- 把 13 位的毫秒當成秒,會得到遙遠的未來時間;把 10 位的秒當成毫秒,則會落在 1970 年附近。
- 伺服器之間應保持 NTP 同步並允許少量 clock skew,但不要用過長的寬限期掩蓋設定問題。