天天看點

微服務項目:尚融寶(22)(後端搭建:上手通路令牌)

認清現實,放棄幻想,準備鬥争

一、使用者身份認證

1、單一伺服器模式

微服務項目:尚融寶(22)(後端搭建:上手通路令牌)

一般過程如下:

  1. 使用者向伺服器發送使用者名和密碼。
  2. 驗證伺服器後,相關資料(如使用者名,使用者角色等)将儲存在目前會話(session)中。
  3. 伺服器向使用者傳回session_id,session資訊都會寫入到使用者的Cookie。
  4. 使用者的每個後續請求都将通過在Cookie中取出session_id傳給伺服器。
  5. 伺服器收到session_id并對比之前儲存的資料,确認使用者的身份。

缺點:

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

session共享方案:

session廣播:性能瓶頸,不推薦

redis代替session:推薦,性能高

2、SSO(Single Sign On)模式

CAS單點登入、OAuth2

微服務項目:尚融寶(22)(後端搭建:上手通路令牌)

分布式,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模式

微服務項目:尚融寶(22)(後端搭建:上手通路令牌)

優點:

  • 無狀态: token是無狀态,session是有狀态的
  • 基于标準化:你的API可以采用标準化的 JSON Web Token (JWT)
  • 占用帶寬
  • 無法在伺服器端銷毀
Token是 服務端生成的一串字元串,以作用戶端進行請求的一個令牌,當第一次登入後, 
伺服器生成-個Token便将此Token傳回給用戶端後,用戶端隻需帶上這個Token前來請求資料即可,
無需再次帶上域名和密碼。