[原创]django+ldap+memcache实现单点登录+统一认证
2016-11-22 23:44
1081 查看
前言
由于公司内部的系统越来越多,为了方便用户使用,通过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实现单点登录(装饰器和缓存)
逻辑图示意
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/17/f9494f35bf940687409838b2c1a5c886.png)
效果展示
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/17/0c77b0d213919c4ebb393356dac8bf8e.png)
登录首页:可以实现用户的注册、登录、重置密码,实际通过python-ldap模块来操作ldap集群
ldap集群的搭建请参考后边博客
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/17/01906b5ac3816be845038a50565dba56.png)
登录后的用户首页,如接入完成的下游系统,可以根据下游系统的权限自动进行登录,退出后全部系统退出
登录判定成功后,会刷新下游系统的账户信息,以避免出现下游系统与统一认证系统信息不一致现象
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/17/c096112a99e9bba1cecaead753e3a8c6.png)
使用了开源的基于php开发的ldap管理工具ldap account manager(简称lam),用于更方便的从ldap查询或管理用户,包括sso系统自带admin权限、和用户是否具有登录权限,均可通过此平台统一控制
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/17/a0f88eff56ad389cbe5e0b58ada28778.png)
也可以使用ldap经典的树形结构展示,我通过划分成3个group(管理员、员工、黑名单),对权限进行基础控制
结语
目前已经开发完毕并投入生产,期间还有个稍复杂的地方,就是一些下游系统已经运行一段时间,拥有了一些账户,这个导入工作可以通过lam进行,但lam不支持中文,还需要进行一个utf-8的转换。后续会更新多篇博客对完整实现方式进行介绍,希望可以给需要的人带来一些帮助。
相关文章推荐
- [原创]django+ldap实现统一认证部分一(django-auth-ldap实践)
- [原创]django+ldap实现单点登录(装饰器和缓存)
- 统一用户登录管理认证LDAP 服务端部署
- LDAP实现企业异构平台的统一认证
- 统一用户登录管理认证LDAP 客户端部署
- shiro实现APP、web统一登录认证和权限管理
- ldap统一认证架构方案及实现指南(一)
- LDAP实现企业异构平台的统一认证
- django 实现统一登录(未完待续)
- shiro实现APP、web统一登录认证和权限管理
- 自动化运维平台中的统一认证接入与单点登录实现 推荐
- cas+openldap实现单点登录认证一
- Django使用ldap认证登录
- [py][mx]django自定义认证类-实现邮箱作为用户名登录
- shiro实现APP、web统一登录认证和权限管理
- Python 操作LDAP实现用户统一认证密码修改功能
- 【原创】ASP.NET 安全认证(三)—— 用Form 表单认证实现单点登录(Single Sign On)(转)
- CAS+LDAP实现单点登录认证
- shiro实现APP、web统一登录认证和权限管理