一. 基本概念
1. sso
單點登入 (single sign-on) 是目前比較流行的服務於企業多系統整合的解決方案之一,使得在多個系統中,使用者只需要登入/退出一次就可以訪問/退出所有相互信任的應用系統。
2. cas
認證中心 (central authentication service) 是sso的一種實現,yale大學開源了乙個cas專案(感興趣的可以自行學習),本文實現了乙個簡化版的cas(github原始碼位址)
二. 原理
基礎模式sso訪問流程主要有以下步驟:
1) 訪問服務:使用者首次傳送請求cas客戶端訪問服務資源
2) 重定向認證:cas客戶端驗證使用者沒有登入,重定向使用者請求到cas伺服器
3) 使用者認證:使用者輸入賬號登入
4) 發放令牌:使用者登入成功後,cas伺服器會生成乙個隨機的token,並攜帶這個token,重定向回redirecturl
5) 驗證令牌:cas客戶端從位址列中獲取到token後,為了防止偽造token,要再次向cas伺服器驗證合法性(後台請求)
6) 傳輸使用者資訊:cas伺服器驗證token通過後,返回cas客戶端登入使用者資訊
三. 執行專案
,目錄如下:
a. 修改專案配置檔案為自己配置
b. 修改host檔案,新增如下配置
127.0.0.1 www.sso.com www.tb.com www.tm.com
2. 啟動
本專案中用的spring session,且用redis儲存session資訊,所以支援同一服務多點部署,為了測試簡單,這裡只演示單例項部署
依次啟動sso-server,sso-client-tm,sso-client-tb專案
3. 驗證
單點登入:
1) 訪問 並登入
2) 訪問 看是否能不用登入直接訪問
單點退出:
1) 退出tb
2) 重新整理tm頁面,看是否退出
4. 時序圖
CAS實現SSO 單點登入
cas分為兩部分,cas server和cas client 假設我們現在有應用系統a 應用系統b cas認證系統 首先,我們來分析下單web應用系統登入登出的實現機理。web系統登入登出功能,通常屬於系統安全管理模組的一部分。如上篇所說,登入,意味著使用者與系統之間的一次會話開始,登出,意味著本次...
cas單點登入 SSO 的實現原理
單點登入sso single sign on 說得簡單點就是在乙個多系統共存的環境下,使用者在一處登入後,就不用在其他系統中登入,也就是使用者的一次登入能得到其他所有系統的信任。單點登入在大型 裡使用得非常頻繁,例如像阿里巴巴這樣的 在 的背後是成百上千的子系統,使用者一次操作或交易可能涉及到幾十個...
SSO 單點登入CAS與OAuth2
在系統開發初期,系統很少,每個系統都有自己的登入模組,使用者直接使用自己的賬號進行登入即可。但當功能不斷完善,為了合理利用資源並降低耦合性,往往需要將單系統拆分為多個子系統。以阿里系的 為例,乙個 背後有眾多的子系統,使用者的一次交易或操作往往可能需要十多甚至幾十個子系統的協作,如果每個子系統都需要...