首頁/部落格/JWT Token 完全指南:從原理到實作,開發者必讀教學
教學

JWT Token 完全指南:從原理到實作,開發者必讀教學

深入了解 JSON Web Token (JWT) 的運作原理、結構組成、安全性考量和實際應用場景。從 Header、Payload 到 Signature,一步步帶你掌握 JWT 認證機制。

奧特線上工具2026/2/138 分鐘閱讀2 次瀏覽
JWT Token 完全指南:從原理到實作,開發者必讀教學

JWT Token 完全指南:從原理到實作

什麼是 JWT?

JSON Web Token (JWT) 是一種開放標準(RFC 7519),用於在各方之間安全地傳輸資訊。JWT 由三個部分組成,以「.」分隔:Header(標頭)、Payload(負載)和 Signature(簽名)。

JWT 被廣泛應用於 Web 應用程式的身份驗證和資訊交換,是現代 API 認證的主流方案之一。

JWT 的結構

1. Header(標頭)

Header 通常包含兩個部分:Token 的類型(JWT)和使用的簽名演算法(如 HMAC SHA256 或 RSA)。

json
{
  "alg": "HS256",
  "typ": "JWT"
}

2. Payload(負載)

Payload 包含聲明(Claims),即關於實體(通常是用戶)和其他數據的陳述。聲明分為三種類型:

  • Registered Claims:預定義的聲明,如 iss(簽發者)、exp(過期時間)、sub(主題)、aud(受眾)
  • Public Claims:自定義的公開聲明
  • Private Claims:自定義的私有聲明
json
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022,
  "exp": 1516242622
}

3. Signature(簽名)

簽名用於驗證消息的完整性和發送者的身份:

HMACSHA256(
  base64UrlEncode(header) + "." + base64UrlEncode(payload),
  secret
)

JWT 的工作流程

  1. 用戶使用帳號密碼登入
  2. 伺服器驗證成功後,生成 JWT 並返回給客戶端
  3. 客戶端將 JWT 儲存(通常在 localStorage 或 Cookie 中)
  4. 後續請求在 Authorization Header 中攜帶 JWT
  5. 伺服器驗證 JWT 的有效性,處理請求

安全性最佳實踐

不要在 Payload 中存放敏感資訊

JWT 的 Payload 是 Base64 編碼的,任何人都可以解碼。因此不應在其中存放密碼、信用卡號等敏感資訊。

設定合理的過期時間

  • Access Token:建議 15 分鐘到 1 小時
  • Refresh Token:建議 7 天到 30 天

使用 HTTPS

JWT 在傳輸過程中應始終使用 HTTPS,防止中間人攻擊。

選擇適當的簽名演算法

  • HS256:適用於單一伺服器場景,使用對稱密鑰
  • RS256:適用於分散式系統,使用非對稱密鑰對

常見問題

JWT 和 Session 有什麼區別?

Session 將狀態儲存在伺服器端,JWT 將狀態儲存在客戶端。JWT 更適合分散式系統和微服務架構,因為不需要共享 Session 存儲。

JWT 可以被撤銷嗎?

JWT 一旦簽發,在過期之前都是有效的。要實現撤銷,需要維護一個黑名單(Blacklist),這在一定程度上違背了 JWT 的無狀態特性。

如何處理 JWT 過期?

常見做法是使用 Refresh Token 機制:當 Access Token 過期時,使用 Refresh Token 獲取新的 Access Token,無需用戶重新登入。

實用工具推薦

使用我們的 JWT 解碼器 [blocked] 可以快速解析和檢查 JWT Token 的內容,包括 Header、Payload 和過期時間,是開發除錯的好幫手。

立即試用相關工具

馬上體驗文章中提到的功能