[原創]django+ldap+memcache實現單點登錄+統一認證


前言

由於公司內部的系統越來越多,為了方便用戶使用,通過django進行了單點登錄和統一認證的嘗試,目前實現了django項目的單點登錄和非django項目的統一認證,中間波折挺多,涉及的技術包括django\memcache\ldap等,如果有時間的話,后邊會逐步更新博客分開介紹實現過程。
sso的實現相對復雜,期間也調研了如cas+ldap,最后采取了一種學習成本較低的方式,即通過mc共享session方式實現單點登錄。有興趣並且懂java的同學可以自行了解cas。應該是一種更成熟的sso解決方案
此外,目前單點登錄只支持django項目,其他系統只能完成到統一認證,后續還需提供一套http接口以便其他語言的項目可以接入

實現過程

請參考以下這一堆博客
ldap部署相關,ldap雙機\LAM配置管理\ldap備份還原
[原創]django+ldap實現統一認證部分一(django-auth-ldap實踐)
[原創]django+ldap實現統一認證部分二(python-ldap實踐)
[原創]django+ldap實現單點登錄(裝飾器和緩存)

邏輯圖示意

效果展示


登錄首頁:可以實現用戶的注冊、登錄、重置密碼,實際通過python-ldap模塊來操作ldap集群
ldap集群的搭建請參考后邊博客

登錄后的用戶首頁,如接入完成的下游系統,可以根據下游系統的權限自動進行登錄,退出后全部系統退出
登錄判定成功后,會刷新下游系統的賬戶信息,以避免出現下游系統與統一認證系統信息不一致現象

使用了開源的基於php開發的ldap管理工具ldap account manager(簡稱lam),用於更方便的從ldap查詢或管理用戶,包括sso系統自帶admin權限、和用戶是否具有登錄權限,均可通過此平台統一控制

也可以使用ldap經典的樹形結構展示,我通過划分成3個group(管理員、員工、黑名單),對權限進行基礎控制

結語

目前已經開發完畢並投入生產,期間還有個稍復雜的地方,就是一些下游系統已經運行一段時間,擁有了一些賬戶,這個導入工作可以通過lam進行,但lam不支持中文,還需要進行一個utf-8的轉換。
后續會更新多篇博客對完整實現方式進行介紹,希望可以給需要的人帶來一些幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM