[原创]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的轉換。
后續會更新多篇博客對完整實現方式進行介紹,希望可以給需要的人帶來一些幫助。
轉載于:https://www.cnblogs.com/caseast/p/6084124.html
總結
以上是生活随笔為你收集整理的[原创]django+ldap+memcache实现单点登录+统一认证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用visual studio 2013
- 下一篇: kaili camera