[原创]django+ldap+memcache实现单点登录+统一认证
前言
由于公司內(nèi)部的系統(tǒng)越來越多,為了方便用戶使用,通過django進(jìn)行了單點(diǎn)登錄和統(tǒng)一認(rèn)證的嘗試,目前實(shí)現(xiàn)了django項(xiàng)目的單點(diǎn)登錄和非django項(xiàng)目的統(tǒng)一認(rèn)證,中間波折挺多,涉及的技術(shù)包括django\memcache\ldap等,如果有時(shí)間的話,后邊會逐步更新博客分開介紹實(shí)現(xiàn)過程。
sso的實(shí)現(xiàn)相對復(fù)雜,期間也調(diào)研了如cas+ldap,最后采取了一種學(xué)習(xí)成本較低的方式,即通過mc共享session方式實(shí)現(xiàn)單點(diǎn)登錄。有興趣并且懂java的同學(xué)可以自行了解cas。應(yīng)該是一種更成熟的sso解決方案
此外,目前單點(diǎn)登錄只支持django項(xiàng)目,其他系統(tǒng)只能完成到統(tǒng)一認(rèn)證,后續(xù)還需提供一套http接口以便其他語言的項(xiàng)目可以接入
實(shí)現(xiàn)過程
請參考以下這一堆博客
ldap部署相關(guān),ldap雙機(jī)\LAM配置管理\ldap備份還原
[原創(chuàng)]django+ldap實(shí)現(xiàn)統(tǒng)一認(rèn)證部分一(django-auth-ldap實(shí)踐)
[原創(chuàng)]django+ldap實(shí)現(xiàn)統(tǒng)一認(rèn)證部分二(python-ldap實(shí)踐)
[原創(chuàng)]django+ldap實(shí)現(xiàn)單點(diǎn)登錄(裝飾器和緩存)
邏輯圖示意
效果展示
登錄首頁:可以實(shí)現(xiàn)用戶的注冊、登錄、重置密碼,實(shí)際通過python-ldap模塊來操作ldap集群
ldap集群的搭建請參考后邊博客
登錄后的用戶首頁,如接入完成的下游系統(tǒng),可以根據(jù)下游系統(tǒng)的權(quán)限自動進(jìn)行登錄,退出后全部系統(tǒng)退出
登錄判定成功后,會刷新下游系統(tǒng)的賬戶信息,以避免出現(xiàn)下游系統(tǒng)與統(tǒng)一認(rèn)證系統(tǒng)信息不一致現(xiàn)象
使用了開源的基于php開發(fā)的ldap管理工具ldap account manager(簡稱lam),用于更方便的從ldap查詢或管理用戶,包括sso系統(tǒng)自帶admin權(quán)限、和用戶是否具有登錄權(quán)限,均可通過此平臺統(tǒng)一控制
也可以使用ldap經(jīng)典的樹形結(jié)構(gòu)展示,我通過劃分成3個group(管理員、員工、黑名單),對權(quán)限進(jìn)行基礎(chǔ)控制
結(jié)語
目前已經(jīng)開發(fā)完畢并投入生產(chǎn),期間還有個稍復(fù)雜的地方,就是一些下游系統(tǒng)已經(jīng)運(yùn)行一段時(shí)間,擁有了一些賬戶,這個導(dǎo)入工作可以通過lam進(jìn)行,但lam不支持中文,還需要進(jìn)行一個utf-8的轉(zhuǎn)換。
后續(xù)會更新多篇博客對完整實(shí)現(xiàn)方式進(jìn)行介紹,希望可以給需要的人帶來一些幫助。
轉(zhuǎn)載于:https://www.cnblogs.com/caseast/p/6084124.html
總結(jié)
以上是生活随笔為你收集整理的[原创]django+ldap+memcache实现单点登录+统一认证的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用visual studio 2013
- 下一篇: kaili camera