切換語言為:簡體
前端視角下,單點登入SSO的兩種模式

前端視角下,單點登入SSO的兩種模式

  • 爱糖宝
  • 2024-09-15
  • 2071
  • 0
  • 0

單點登入 SSO ( Single Sign-On ) 的效果是“一處登入,多處登入”,用於內部多個系統共用一套登入系統。

舉個例子,你在淘寶登入,然後進入天貓,會發現也處於登入狀態。

SSO 是一種效果,即“一處登入,多處登入”,但它並不包含具體實現,業界的實現方案有 CAS、OAuth、OICD 等。

從前端視角來看,SSO 通常有一個認證中心,專門管理使用者認證和授權,所謂單點,指的就是認證中心。

具體如何管理?模式有兩種,Session 模式和Token 模式。

Session 模式

Session ( 會話 ) 模式就是認證中心用一張表格管理所有登入的使用者,Session ID 就是表格中表示已登入使用者的唯一 ID。

前端視角下,單點登入SSO的兩種模式

簡單介紹一下上圖的主要過程:

  1. 客戶端提交賬號密碼到認證中心;

  2. 認證中心驗證賬號密碼後,在 Session 表中新增一項,表示已登入;

  3. 客戶端憑 Session ID 請求資源;

  4. 伺服器請求驗證 Session,認證中心查表判斷 Session 是否有效;

  5. 驗證透過後,返回資源。

使用者持續一段時間 ( 比如 20 分鐘 ) 不訪問,只需將 Session ID 從表中刪除,即可結束會話。

Session 模式將所有使用者集中在一張表中,好處是方便管理,但這種模式也有幾個問題:

  • Session 表會非常大

  • 認證中心不能出錯,否則所有子系統都無法使用

  • 認證中心請求壓力大,所有子系統都要向它驗證 Session

為減輕認證中心的負擔,人們提出了 Token 模式。

Token 模式

token 模式的關鍵在於,認證中心頒發登入憑證,各子系統自行驗證憑證。

前端視角下,單點登入SSO的兩種模式

從上圖可以看出,使用者提交賬號密碼後,認證中心只返回一個 token,它通常是 JWT 格式,客戶端憑 token 訪問伺服器資源。

建立和驗證 token 都需要一個金鑰,認證中心只需將金鑰分發到各子系統,子系統即可自行認證 token 是否有效。

這種模式減輕了認證中心的壓力,但也大大降低了對使用者的管理能力。比如認證中心想阻止某使用者登入,它需要向所有子系統廣播這條訊息,否則只能等使用者手上的 token 過期。

雙 token 可以解決這個問題。

雙 token 模式

使用者登入後,認證中心返回兩個 token。

  1. 短期 token 過期時間短,比如 20 分鐘過期,用來訪問伺服器資源;

  2. 重新整理 token 過期時間長,用來申請新的短期 token;

  3. 短期 token 過期,則用重新整理 token 申請新的;若重新整理 token 也過期,則需重新登入。

前端視角下,單點登入SSO的兩種模式

這種做法的關鍵在於,讓客戶端每過一小段時間,就來認證中心續期,認證中心可以決定是否頒發新的 token,從而提高認證中心的管理能力。

0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.