iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
Python

使用 Django 框架和 Wagtail,快速打造一個 CMS 網站系列 第 26

D26 - JWT token 簡介,因為接下來會用到

  • 分享至 

  • xImage
  •  

JWT Token 簡介

JWT(JSON Web Token)是一種開放標準(RFC 7519),用於在網絡應用環境間傳遞聲明安全。JWT 可以被數字簽名,因此可以驗證其中的聲明是否被篡改。

JWT Token 為什麼好用

  1. 無狀態: JWT 是自包含的,意味著所有必要的信息都在 token 本身,不需要在服務器端存儲會話信息。
  2. 跨域認證: 由於 JWT 是無狀態的,它可以輕鬆地在不同的服務之間共享,非常適合微服務架構。
  3. 安全性: JWT 可以被加密,確保了數據的安全性。
  4. 靈活性: 可以包含任意數量的自定義字段,非常靈活。
  5. 效率: 相比於某些傳統的認證方式,JWT 減少了對數據庫的查詢次數,提高了效率。

JWT Token 應用場景

  1. 單點登錄(SSO): 用戶只需登錄一次就可以訪問多個系統或服務。
  2. 授權: 一旦用戶登錄,每個後續請求將包括 JWT,允許用戶訪問該令牌允許的路由、服務和資源。
  3. 信息交換: JWT 是在各方之間安全傳輸信息的好方法,因為可以對 JWT 進行簽名。
  4. API 認證: 用於 API 的身份驗證,特別是在微服務架構中。
  5. 移動應用: 在移動應用中進行用戶認證和授權。

JWT 以外的選擇

  1. Session-based 認證:
    • 優點:更容易撤銷,安全性可能更高(如果正確實施)。
    • 缺點:需要服務器存儲,擴展性較差,不適合分佈式系統。
  2. OAuth 2.0:
    • 優點:更適合第三方授權,提供更豐富的授權流程。
    • 缺點:實現複雜度高,可能過於複雜對於簡單的應用場景。
  3. OpenID Connect:
    • 優點:建立在 OAuth 2.0 之上,提供了標準化的身份層。
    • 缺點:可能過於複雜對於簡單的應用場景。
  4. SAML:
    • 優點:廣泛用於企業環境,支持單點登錄。
    • 缺點:較為複雜,主要用於 Web 應用,不太適合移動應用。

總的來說,JWT 在簡單性、靈活性和效率方面有優勢,特別適合現代的分佈式系統和微服務架構。然而,對於需要即時撤銷訪問權限或處理複雜授權流程的場景,其他選擇可能更合適。選擇認證方法時,需要根據具體的應用場景、安全需求和系統架構來權衡。


測試的網站 jwt.io

  • jwt.io

這是最流行和廣泛使用的 JWT 解碼工具。特點:

  • 使用簡單,界面直觀
  • 可以即時解碼、驗證和生成 JWT
  • 提供了豐富的庫和SDK列表,方便開發者使用
  • 支持多種算法

使用方法:

  • 訪問 https://jwt.io/
  • 將你的 JWT token 粘貼到左側的 "Encoded" 框中
  1. 解碼後的 Header 和 Payload 會立即顯示在右側注意事項:雖然這個工具非常方便,但請記住不要在這裡粘貼包含敏感信息的真實生產環境 token。

上一篇
D25 - 做出 login api
下一篇
D27 - 在 login 成功後,會回傳 JWT token 給 client site
系列文
使用 Django 框架和 Wagtail,快速打造一個 CMS 網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言