單點登錄流程
-
向W1發送請求驗證頁面,重定向到SSO
-
向SSO發送請求,如果存在cookie,則返回token
-
瀏覽器將token發送給W1,W1到SSO驗證token
-
通過後跳轉響應驗證頁面
-
向W1發送請求驗證頁面,重定向到SSO
-
向SSO發送請求,若不存在cookie,重定向到W1登錄頁
-
提交登錄信息,W1將登錄信息發送給SSO驗證身份信息
-
SSO驗證成功並生成token,返回給W1,W1將token返回給瀏覽器
-
瀏覽器將token發送到SSO,SSO創建cookie並將重定向W1的信息返回給瀏覽器
-
瀏覽器將token發送給W1,W1發送到SSO進行驗證(4,5,6也可以是返回令牌,W1將令牌再發送到SSO進行驗證)
-
驗證通過進行響應
-
向W2發送請求驗證頁面,重定向到SSO,帶cookie
-
返回重定向W2的token
-
瀏覽器將token發給W2,W2發送到SSO進行驗證
-
驗證通過並響應
分佈式session共享
- session複製到所有機器
- session綁定,利用hash使得同一個ip總是請求到同一臺服務器。無法實現高可用,機器掛了就不存在了
- 利用cookie
- 利用獨立部署的session服務器(集羣)
這種解決方案事實上是應用服務器的狀態分離,分爲無狀態的應用服務器和有狀態的session服務器,然後針對這兩種服務器的不同特性分別設計架構。
對於有狀態的session服務器,一種比較簡單的方法是利用分佈式緩存(memcached), 數據庫等。在這些產品的基礎上進行包裝,使其符合session的存儲和訪問要求。
如果業務場景對session管理有比較高的要求,比如利用session服務基層單點登錄(sso),用戶服務器等功能,需要開發專門的session服務管理平臺。