跳至主要内容

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

· 閱讀時間約 3 分鐘
kdchang

前言

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 的比較

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

四、常見誤解釐清

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

五、總結

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