前言
昨天我們聊了 OAuth 2.0 ,知道它是一種「授權框架」。
那在這個框架或其他認證機制中,最常見的憑證格式就是 JWT(JSON Web Token)。JWT 既簡單又強大,是現代 API 認證的核心工具。
JWT 的結構
JWT 的格式是一個長字串,由 三個部分 組成:
-
- Header(標頭) -> 說明 Token 的類型和使用的加密演算法
-
- Payload(有效內容) -> 包含使用者的資訊
-
- Signature(簽章) -> 伺服器用 密鑰 對 Header + Payload 進行簽名,用來保證資料沒有被竄改。
JWT 的運作流程
1.使用者登入系統(例如輸入帳號密碼)。
2.伺服器驗證正確後,簽發一個 JWT 給使用者。
3.使用者在後續 API 請求中,將 JWT 放在 HTTP Header 。
4.伺服器收到請求,驗證 JWT 是否有效(簽章正確 & 未過期)。
5.如果通過驗證,就允許存取資源。
JWT 的優點
- 無狀態(Stateless) -> 伺服器不用存 session,所有資訊都在 Token 內。
- 跨平台 -> 前端(Web、App)、後端都能輕鬆使用。
- 安全 -> 透過簽章防止竄改,並可設定過期時間。
JWT 的缺點
- 無法立即撤銷 -> 一旦 Token 發出去,只能等到過期才失效(除非額外設計黑名單)。
- 內容是可讀的 -> Payload 只是 Base64 編碼,任何人都能解開,所以 不要放敏感資料(例如密碼)。
生活化比喻
想像你去看電影:
- 買票時(登入),售票員給你一張票(JWT)
- 之後你憑票進場,不需要每次都再驗身分(無狀態)
- 檢票員只需要看票上的資訊和防偽標記(簽章)
但注意:
- 票過期就不能用了
- 如果票被偷走,別人就能用(除非加上額外安全措施)
小結
-
JWT 是一種憑證格式 ,由 Header、Payload、Signature 三部分組成
- 主要用於 API 認證,讓伺服器驗證使用者身分
- 優點:輕量、跨平台、無狀態
- 缺點:難以即時撤銷、不要放敏感資訊