使用CAS整合LDAP實現單點登錄(SSO)-從0到1-基於Django實現SSO

上一篇: 部署cas-management https://blog.csdn.net/lwlfox/article/details/106865629

簡介

CAS服務端已經部署好,現在就是要基於CAS來做SSO的實現了。CAS的客戶端每個語言都有,我使用的是python裏面的django-cas-ng來完成,因爲這個組件已經封裝好了客戶端的實現,比較簡單,主要是爲了展示實現的流程。

對於不熟悉django框架的同學,可以一步一步照着做,熟悉這個框架的同學看重點配置步驟就好了。

步驟

1. 在pycharm中講代碼clone下來,git地址 :  https://gitee.com/kevinliu_CQ/django-cas-ng-example.git

2. 安裝django-cas-ng, 這個項目裏面包含requirements.txt文件,如果你的pycharm已經安裝了相關的插件,pycharm會自動提示安裝,點擊"install requirements“就會自動安裝,如果沒有插件,就手動pip安裝。

手動安裝:pip的安裝,已經pycharm中虛擬環境的配置,如果不知道,自己百度一下吧。

pip install -r requirements.txt   

 3. 簡述settings.py,詳細的參數配置,請參考: https://djangocas.dev/docs/latest/configuration.html

CAS_SERVER_URL = 'https://mycas.yourdomain.cn:7998/cas/' #你的cas服務器的地址
CAS_VERSION = '3' #cas服務器的版本
CAS_REDIRECT_URL = "/index" #客戶端認證成功或者退出後redirect的地址,一般都是業務系統的主頁
CAS_LOGOUT_COMPLETELY=True #本應用登出以後,是否完全銷燬cas服務器裏面的相關數據,主要是ticket

4. 啓動項目,並驗證SSO。可以用cas-management 和django-cas-ng完成

   場景1: cas-management 登錄成功後訪問 django-cas-ng的頁面   期望值: django-cas-ng不會跳轉到cas的登錄頁面,直接登錄成功了

  場景2: django-cas-ng 登錄成功後 訪問cas-management    期望值: cas-management不會跳轉到cas的登錄頁面,直接登錄成功,可以開始管理service。

需要先將需要認證的服務地址添加到cas中,我以127.0.0.1啓動django的項目,添加服務如下:

5. 開始驗證

會跳轉到cas的登錄頁面,認證完成後,輸出用戶的名稱。

登錄成功以後訪問: https://mycas.yourdomain.cn:8443/cas-management ,直接就不需要登錄了。SSO就實現了

場景二的驗證,大家自己完成吧。

 

結束語

 到此整個SSO的實現就完成了,在我測試中SLO(Single Log Out) 會有點問題,就是django-cas-ng或者cas-management登出以後,另外一個系統還是登錄的狀態,但是SLO的需求,沒有SSO那麼強烈。一般的使用場景,用戶不會主動去登出的,所以就沒有花時間去研究了。還有就是Chrome瀏覽器有時候會卡在cas登錄,換成Firefox就行了,或者清除所有緩存數據就可以。

另外cas-server的高可用也沒有涉及到,後期準備把cas-server遷移到K8S中,利用容器和K8S的優點來保障cas-server的可用性,cas-server的監控也可以在K8S中用prometheus完成

最後cas-server登錄界面的自定義還需要自己去完成,這一塊就需要具備SpringBoot 的知識了,留給其他同學完成吧。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章