如何解析並理解JWT Token

開發者

學習JSON Web Token(JWT)包含的內容、如何解析它以讀取負載,以及如何在不使用函式庫的情況下驗證其結構。

什麼是 JWT?

JSON Web Token(JWT)是一種緊湊、URL 安全的「身份憑證」格式,由 RFC 7519 標準化,已成為現代 API 與單一登入(SSO)流程的預設選擇。一個 JWT 是一串文字,內含一小段 JSON 資料與一份加密簽章——任何收到它的人都能讀到內容,但只有持有簽章金鑰的伺服器能產生有效的 JWT。這個特性讓它非常適合「無狀態」驗證:伺服器不必再維持 session,因為使用者身分、權限、到期時間都寫在 token 本身。

常見應用場景

  • API 身份驗證

    使用者登入一次後取得 JWT,之後每次請求都在 Authorization: Bearer 標頭帶上此 token。API 驗證簽章後即可信任其中的身份與權限,不必再查資料庫。

  • 單一登入(SSO)

    OpenID Connect 建立在 JWT 之上:身份提供者發出 ID Token 描述使用者,各下游應用透過公開的 JWKS 端點驗證簽章即可共享登入。

  • 短期一次性授權

    密碼重設連結、Email 驗證連結、簽章下載 URL 都很適合用 JWT。只要在 exp 欄位設到期時間,連結過期後自動失效。

步驟指南

1

了解JWT結構

JWT由三個以點分隔的Base64URL編碼部分組成:標頭.負載.簽名。標頭指定演算法,負載包含聲明(資料),簽名用於驗證完整性。

2

解析標頭

取第一部分(第一個點之前),進行Base64URL解碼。您將得到一個JSON物件,例如:{"alg":"HS256","typ":"JWT"}。這告訴您使用的簽名演算法。

3

解析負載

取第二部分進行Base64URL解碼。您將看到聲明,例如:sub(主題/用戶ID)、exp(過期Unix時間戳)、iat(發行時間)、iss(發行者)和自定義聲明。

4

檢查過期時間

exp聲明是Unix時間戳。與當前時間比較以查看token是否仍然有效。例如:exp: 1700000000 = 2023年11月14日 22:13 UTC。

5

使用JWT解析工具

將您的JWT貼入JWT解析工具。它立即以格式化JSON顯示解碼後的標頭、負載和簽名部分——無需伺服器,一切在您的瀏覽器中運行。

使用免費工具

JWT 解析工具

常見問題

Q: 在瀏覽器中解析JWT安全嗎?

A: 安全——解碼(讀取負載)是安全的。JWT是Base64URL編碼,不是加密的。切勿將您的JWT分享給不信任的第三方網站,因為token會授予存取權限。

Q: 沒有密鑰可以驗證JWT簽名嗎?

A: 不行。簽名驗證需要密鑰(用於HMAC)或公鑰(用於RSA/ECDSA)。我們的解析器顯示結構,但沒有密鑰就無法驗證簽名。

Q: 「JWT已過期」是什麼意思?

A: 這表示exp時間戳已在過去。伺服器會拒絕過期的token。您需要重新整理或重新驗證以獲取新token。