科技與技術系列 - 3: JSON Web Token

科技與技術系列 - 3: JSON Web Token

更新於 發佈於 閱讀時間約 2 分鐘

簡介

JWT(JSON Web Token)是一種基於 JSON 格式的開放標準(RFC 7519),主要用於簡單的加密與認證,通常用來儲存身份與權限信息。在實際應用中,JWT 通常會被儲存在前端,並在發送請求時將其附加在 HTTP 標頭中(通常為 Authorization 標頭),伺服器則利用這個 JWT 來進行身份驗證和權限檢查。

結構

JWT 的結構由三個部分組成,中間使用點(.)分隔:

  • 標題(Header):包含兩個主要內容,分別是 token 類型(通常為 JWT)與所使用的加密算法(如 SHA256 或 RSA)。
  • 負載(Payload):包含儲存在 JWT 中的聲明(Claims),這些聲明描述了實體和其他相關數據,例如註冊聲明、公開聲明和私有聲明等。
  • 簽名(Signature):將上述兩部分資料,結合密鑰和指定的加密算法,進行加密處理生成簽名。

特點

  1. 降低資料庫壓力:JWT 在 payload 中攜帶了所有必要的資料(例如使用者權限),因此避免了頻繁查詢資料庫進行身份驗證與授權。
  2. 靈活性:JWT 支援自定義 payload 內容,並且可選擇多種加密算法。
  3. 無狀態性:JWT 為無狀態的,這意味著伺服器不需要儲存任何資料,只需在需要時進行驗證。因此,JWT 特別適用於分佈式系統,如微服務架構。然而,這也代表伺服器無法隨意撤銷 JWT,因此若有撤銷需求,需額外設計相應機制。

使用情境

  • 身份驗證:JWT 最常見的用途之一是用於用戶登錄後的身份驗證。
  • API 認證:JWT 可以用來保護 Web API,確保只有經過身份驗證的用戶才能訪問。
  • 單點登錄(SSO):JWT 支援在多個應用程式間進行身份共享,實現單點登錄功能。

參考資料

  1. https://en.wikipedia.org/wiki/JSON_Web_Token
  2. https://github.com/lcobucci/jwt
  3. https://jwt.io/
avatar-img
林柏宇的沙龍
2會員
41內容數
test
留言
avatar-img
留言分享你的想法!
林柏宇的沙龍 的其他內容
本文介紹了容器的基本概念、組成部分以及其在應用開發中的重要性,特別是對初階和高階工程師的影響。透過深入探討容器的優點,以及Docker、Kubernetes和ArgoCD等相關技術,幫助讀者理解容器化的應用與管理,進而簡化開發過程並提高效率。適合對容器技術感興趣的開發者從零開始學習與掌握。
本文探討自動化測試的核心理念與實際應用,涵蓋如何模擬運行環境、確保程式碼在各種情境下的穩定性,以及進行錯誤處理的方法。文中指出自動化測試的各種優點,並提到設計測試的注意事項。透過使用相關工具和方法,讀者可以有效進行功能測試,並掌握相關技巧以應對常見問題,讓開發過程更為順利。
本篇文章簡要介紹自動化測試的基本概念及相關的測試套件,並探討了在CI/CD流程中整合自動化測試的重要性,及如何使用Faker和Mockery來生成測試資料和模擬物件。最後,分享了自動化測試在後端開發中的必要性與實踐建議,旨在提升程式碼品質及降低維護成本。
本文介紹了容器的基本概念、組成部分以及其在應用開發中的重要性,特別是對初階和高階工程師的影響。透過深入探討容器的優點,以及Docker、Kubernetes和ArgoCD等相關技術,幫助讀者理解容器化的應用與管理,進而簡化開發過程並提高效率。適合對容器技術感興趣的開發者從零開始學習與掌握。
本文探討自動化測試的核心理念與實際應用,涵蓋如何模擬運行環境、確保程式碼在各種情境下的穩定性,以及進行錯誤處理的方法。文中指出自動化測試的各種優點,並提到設計測試的注意事項。透過使用相關工具和方法,讀者可以有效進行功能測試,並掌握相關技巧以應對常見問題,讓開發過程更為順利。
本篇文章簡要介紹自動化測試的基本概念及相關的測試套件,並探討了在CI/CD流程中整合自動化測試的重要性,及如何使用Faker和Mockery來生成測試資料和模擬物件。最後,分享了自動化測試在後端開發中的必要性與實踐建議,旨在提升程式碼品質及降低維護成本。