iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
自我挑戰組

API 全攻略系列 第 10

Day 10: JWT(JSON Web Token)運作方式

  • 分享至 

  • xImage
  •  

前言

昨天我們聊了 OAuth 2.0 ,知道它是一種「授權框架」。
那在這個框架或其他認證機制中,最常見的憑證格式就是 JWT(JSON Web Token)。JWT 既簡單又強大,是現代 API 認證的核心工具。


JWT 的結構

JWT 的格式是一個長字串,由 三個部分 組成:

    1. Header(標頭) -> 說明 Token 的類型和使用的加密演算法
    1. Payload(有效內容) -> 包含使用者的資訊
    1. 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 認證,讓伺服器驗證使用者身分
  • 優點:輕量、跨平台、無狀態
  • 缺點:難以即時撤銷、不要放敏感資訊

上一篇
Day 9: OAuth 2.0 簡介
系列文
API 全攻略10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言