微服務安全-單點登錄


一、用戶身份認證

1、單一服務器模式(單體應用)

一般過程如下:

  1. 用戶向服務器發送用戶名和密碼。
  2. 驗證服務器后,相關數據(如用戶名,用戶角色等)將保存在當前會話(session)中。
  3. 服務器向用戶返回session_id,session信息都會寫入到用戶的Cookie。
  4. 用戶的每個后續請求都將通過在Cookie中取出session_id傳給服務器。
  5. 服務器收到session_id並對比之前保存的數據,確認用戶的身份。

缺點:

  • 單點性能壓力,無法擴展。
  • 分布式架構中,需要session共享方案,session共享方案存在性能瓶頸。

2、SSO(Single Sign On)模式(分布式應用)

分布式,SSO(single sign on)模式:單點登錄英文全稱Single Sign On,簡稱就是SSO。它的解釋是:在多個應用系統中,只需要登錄一次,就可以訪問其他相互信任的應用系統。

  • 如圖所示,圖中有3個系統,分別是業務A、業務B、和SSO。
  • 業務A、業務B沒有登錄模塊。
  • 而SSO只有登錄模塊,沒有其他的業務模塊。

一般過程如下:

  1. 當業務A、業務B需要登錄時,將跳到SSO系統。
  2. SSO從用戶信息數據庫中獲取用戶信息並校驗用戶信息,SSO系統完成登錄。
  3. 然后將用戶信息存入緩存(例如redis)。
  4. 當用戶訪問業務A或業務B,需要判斷用戶是否登錄時,將跳轉到SSO系統中進行用戶身份驗證,SSO判斷緩存中是否存在用戶身份信息。
  5. 這樣,只要其中一個系統完成登錄,其他的應用系統也就隨之登錄了。這就是單點登錄(SSO)的定義。

優點 :

用戶身份信息獨立管理,更好的分布式管理。可以自己擴展安全策略

缺點:

認證服務器訪問壓力較大。

3、Token模式

優點:

  • 無狀態: token是無狀態,session是有狀態的
  • 基於標准化:你的API可以采用標准化的 JSON Web Token (JWT)

缺點:

  • 占用帶寬
  • 無法在服務器端銷毀


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM