什麼是 JWT 以及它是如何運作的?
8 min read
JWT, Security, Authentication
JSON Web Token 簡介
JSON Web Token (JWT) 是一個開放標準 (RFC 7519),已成為現代 Web 應用程式中安全資訊交換的事實標準。在 2025 年,JWT 繼續成為在分散式系統、微服務架構和雲端原生應用程式中實施身分驗證和授權的關鍵技術。這份綜合指南將探討您需要瞭解的關於 JWT 的一切,從基本概念到進階實施策略。
JWT 的結構
JWT 由三個部分組成,用點 (.) 分隔:
- 標頭 (Header):包含權杖的類型和簽章演算法
- 酬載 (Payload):包含聲明 - 關於實體的陳述和額外的中繼資料
- 簽章 (Signature):確保權杖未被竄改
1. 標頭 (Header)
標頭通常由兩部分組成:權杖的類型(JWT)和使用的簽章演算法(如 HS256、RS256 或 ES256)。在 2025 年,EdDSA (Ed25519) 因其卓越的效能和安全特性而越來越受歡迎。
{
"alg": "HS256",
"typ": "JWT"
}
2. 酬載 (Payload)
酬載包含聲明,這些是關於實體(通常是使用者)和額外資料的陳述。有三種類型的聲明:
- 註冊聲明:預定義的聲明,如 iss(發行者)、exp(過期時間)、sub(主題)
- 公開聲明:可以由使用 JWT 的人定義
- 私有聲明:同意使用它們的各方之間共享資訊的自訂聲明
3. 簽章 (Signature)
要建立簽章部分,您必須取得編碼的標頭、編碼的酬載、一個密鑰、標頭中指定的演算法,並對其進行簽章。
JWT 如何運作
在認證中,當使用者使用其憑證成功登入時,將返回 JSON Web Token。由於權杖是憑證,必須非常小心以防止安全問題。一般來說,您不應該將權杖保留超過所需的時間。
最佳實踐
- 始終使用 HTTPS 來防止中間人攻擊
- 保持權杖過期時間短暫
- 切勿在 JWT 中儲存敏感資訊
- 實施適當的權杖撤銷機制
- 使用強簽章演算法(在 2025 年,推薦使用 RS256、ES256 或 EdDSA)
結論
JWT 提供了一種強大而靈活的方式來處理現代應用程式中的認證和授權。透過瞭解其結構和正確的實施,您可以建立安全且可擴充的認證系統。