[原创]django+ldap+memcache实现单点登录+统一认证

摘要:
前言随着公司内部系统越来越多,为了方便用户使用,我们尝试了通过django进行单点登录和统一身份验证。目前,我们已经实现了单点登录和非django项目的统一认证。在中间有很多曲折。所涉及的技术包括djangomecacheldap等。如果有时间,我们将逐步更新博客,分别介绍实现过程。

前言

由于公司内部的系统越来越多,为了方便用户使用,通过django进行了单点登录和统一认证的尝试,目前实现了django项目的单点登录和非django项目的统一认证,中间波折挺多,涉及的技术包括djangomemcacheldap等,如果有时间的话,后边会逐步更新博客分开介绍实现过程。
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实现单点登录(装饰器和缓存)

逻辑图示意

[原创]django+ldap+memcache实现单点登录+统一认证第1张

效果展示

[原创]django+ldap+memcache实现单点登录+统一认证第2张
登录首页:可以实现用户的注册、登录、重置密码,实际通过python-ldap模块来操作ldap集群
ldap集群的搭建请参考后边博客
[原创]django+ldap+memcache实现单点登录+统一认证第3张
登录后的用户首页,如接入完成的下游系统,可以根据下游系统的权限自动进行登录,退出后全部系统退出
登录判定成功后,会刷新下游系统的账户信息,以避免出现下游系统与统一认证系统信息不一致现象
[原创]django+ldap+memcache实现单点登录+统一认证第4张
使用了开源的基于php开发的ldap管理工具ldap account manager(简称lam),用于更方便的从ldap查询或管理用户,包括sso系统自带admin权限、和用户是否具有登录权限,均可通过此平台统一控制
[原创]django+ldap+memcache实现单点登录+统一认证第5张
也可以使用ldap经典的树形结构展示,我通过划分成3个group(管理员、员工、黑名单),对权限进行基础控制

结语

目前已经开发完毕并投入生产,期间还有个稍复杂的地方,就是一些下游系统已经运行一段时间,拥有了一些账户,这个导入工作可以通过lam进行,但lam不支持中文,还需要进行一个utf-8的转换。
后续会更新多篇博客对完整实现方式进行介绍,希望可以给需要的人带来一些帮助。

免责声明:文章转载自《[原创]django+ldap+memcache实现单点登录+统一认证》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IIS 5.0/5.1 进程回收霍夫变换(一)霍夫线性变换下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

LDAP入门

LDAP入门 首先要先理解什么是LDAP,当时我看了很多解释,也是云里雾里,弄不清楚。在这里给大家稍微捋一捋。 首先LDAP是一种通讯协议,LDAP支持TCP/IP。协议就是标准,并且是抽象的。在这套标准下,AD(Active Directory)是微软出的一套实现。那AD是什么呢?暂且把它理解成是个数据库。也有很多人直接把LDAP说成数据库(可以把LD...

一则 Oracle 和 SqlServer 语法区别 (原创)

Sql Server /Oracle--返回第一行数据SELECT TOP 1 * FROM TableName / SELECT * FROM TableName WHERE ROWNUM=1--返回前五行数据SELECT TOP 5 * FROM TableName/SELECT * FROM TableName WHERE ROWNUM <=...

跨域单点登录实现(使用iframe)_勇敢的心_百度空间

跨域单点登录实现(使用iframe)_勇敢的心_百度空间 跨域单点登录实现(使用iframe) 2011-12-26 18:15 目前来说,据我的认识貌似必须使用iframe 提交表单的方式,ajax方式下无法写cookie(get请求除外)。 原理上很简单,但实现起来还是走了不少弯路,各种浏览器处理方式不一样也增加了调试的难度;几经曲折终于找到了一个...

[原创]浅谈对任务分解法WBS应用

[原创]浅谈对任务分解法WBS应用 1、WBS是什么? 即Work Breakdown Structure如何进行WBS分解:目标→任务→工作→活动 2、WBS分解的原则:将主体目标逐步细化分解,最底层的任务活动可直接分派到个人去完成;每个任务原则上要求分解到不能再细分为止。 3、WBS分解的方法:至上而下与至下而上的充分沟通;一对一个别交流;小组讨论。...

jenkins使用ldap权限管理

https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_liunx_52_ldap_for_jenkins.html ldap 原来有一套phpLDAPadmin的用户管理系统 创建一个ou,直接导入以下模板 dn: ou=jenkins_test,ou=App,dc=xx,dc=com objectclass:...

初识Fastjson漏洞(环境搭建及漏洞复现)

目前网上的资源整理不是针对入门玩家,都需要一定的java漏洞调试基础,本文从一个简单的FastJson 漏洞开始,搭建漏洞环境,分析漏洞成因,使用条件等。从入门者的角度看懂并复现漏洞触发,拥有属于自己的一套漏洞调试环境。 0x01 Fastjson简介 Fastjson 是Alibaba的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Ja...