JWT 使用好處入門教學筆記 | 學習筆記

Posted by kdchang on 2023-12-21


前言

JWT(JSON Web Token) 的好處在於它是輕量、跨平台、無狀態的驗證與授權機制,特別適合用於前後端分離、微服務架構與 API 驗證。以下是它的主要優點:

一、JWT 的 7 大好處

1. 無狀態(Stateless)驗證

  • JWT 本身就包含用戶資訊與簽名,不需要在伺服器端儲存 session
  • 適合微服務或 Serverless 架構,因為伺服器不用記住誰是誰。

2. 跨平台、跨語言支援

  • JWT 是一種標準格式(RFC 7519),可用於各種語言與框架(Node.js、Python、Go、Java、PHP、.NET 等)。
  • 非常適合前後端分離的架構,或多平台應用(Web + App)。

3. 傳遞資訊方便

  • 可以在 payload 中攜帶使用者角色、權限、使用者 ID 等資料,前後端都可解碼取得。
  • 節省額外查詢資料庫的頻率(如登入後不再查資料庫即可知道使用者身份)。

4. 易於擴展與整合 OAuth

  • JWT 是 OAuth 2.0 中 Access Token 的常見格式。
  • 整合第三方登入(如 Google、Facebook、GitHub)時很常使用 JWT 作為驗證令牌。

5. 高安全性(搭配正確實作)

  • Token 是簽名過的,無法被竄改(除非持有密鑰)。
  • 可設定有效期限(exp),也支援附加自訂欄位。

6. 前端儲存與攜帶方便

  • JWT 是字串格式,可透過:

    • Authorization header:Bearer <token>
    • Cookie(推薦設為 HttpOnly + Secure)
    • localStorage(需防範 XSS)

7. 支援單一登入(SSO)

  • 多個子系統共用同一套 JWT 驗證邏輯,實現單一登入(Single Sign-On)。
  • 用於企業內部系統、微服務架構特別合適。

二、實際應用情境

應用場景 優勢
API 驗證 無狀態、易於整合
單頁應用(SPA) 可存取使用者資訊而不額外請求
手機 App 登入 移動端儲存與驗證方便
微服務架構 每個服務只需驗證簽章,無需共用 session
OAuth 第三方登入 可當作 Access Token 與 ID Token

三、與 Session 的比較

項目 JWT Session
資料儲存位置 前端(Token 傳遞) 後端(記憶體/資料庫)
可擴充性 高(無需共享記憶體) 需維護集中式 Session 儲存
實作難度 中(需處理 Token 過期、黑名單等) 簡單(有框架支援)
安全性 好(但需避免 XSS 與 Token 洩露) 好(但可能遭 CSRF 攻擊)

四、常見誤解釐清

常見誤解 釐清
JWT 是加密的 錯,預設只是簽名(不可竄改),不是加密(不可閱讀)
JWT 安全無敵 錯,若密鑰外洩,任何人都能簽 Token。需配合 HTTPS 傳輸與妥善保護密鑰
JWT 不需要過期時間 錯,若未設 exp,Token 可永久有效,極度危險

五、總結

JWT 的優勢在於簡潔、無狀態、可擴展,特別適合 API 驗證與前後端分離架構。然而,要發揮 JWT 的最大效益並保障安全,開發者需了解其限制,搭配正確實作(如過期、黑名單、HTTPS、Refresh Token 管理等)。


歡迎分享按讚給予支持和鼓勵!


Related Posts

Comments