[原创]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的转换。
后续会更新多篇博客对完整实现方式进行介绍,希望可以给需要的人带来一些帮助。
[原创]django+ldap+memcache实现单点登录+统一认证的更多相关文章
- IdentityServer4实现单点登录统一认证
什么是单点登录统一认证:假如某公司旗下有10个网站(比如各种管理网站:人事系统啊,财务系统啊,业绩系统啊等),我是该公司一管理员或者用户,按照传统网站模式是这样:我打开A网站 输入账号密码 然后进入到 ...
- [原创]django+ldap实现统一认证部分一(django-auth-ldap实践)
前言 接之前我的文章,django+ldap+memcache实现单点登录+统一认证 ,ldap部署相关,ldap双机\LAM配置管理\ldap备份还原,目前来说,我们已经有了高可用性的ldap环境了 ...
- [原创]django+ldap实现统一认证部分二(python-ldap实践)
前言 接上篇文章 [原创]django+ldap实现统一认证部分一(django-auth-ldap实践) 继续实现我们的统一认证 python-ldap 我在sso项目的backend/lib/co ...
- [原创]django+ldap实现单点登录(装饰器和缓存)
前言 参考本系列之前的文章,我们已经搭建了ldap并且可以通过django来操作ldap了,剩下的就是下游系统的接入了,现在的应用场景,我是分了2个层次,第一层次是统一认证,保证各个系统通过ldap来 ...
- SSO单点登录统一身份认证系统
什么是单点登录 简单点说就是公司有A,B两个系统,我登录了A系统之后再跳转到B系统可以直接访问,而不需要再次登录B系统. 几种常见的单点登录实现方式 在讲解单点登录之前先讲解几个基本的概念: Cook ...
- 单点登录--CAS认证--web.xml配置详解
参考网址: https://blog.csdn.net/zhurhyme/article/details/29349543 https://blog.csdn.net/shzy1988/article ...
- cas单点登录-jdbc认证(三)
前言 本节的内容为JDBC认证,查找数据库进行验证,其中包括: 密码加密策略(无密码,简单加密,加盐处理) 认证策略(jdbc) 一.业务需求 不同的公司,需求业务需求或者架构不一样导致我们实现验证的 ...
- 单点登录 - API 认证系统 Passport(二)
安装 composer require laravel/passport=~4.0 notes: 1)确保系统安装unzip.zip等命令. 2)composer 安装出现 Authenticatio ...
- 开例外!微信小程序登录绕过CAS单点登录(SSO)认证检查
1 为了让微信API能够绕过CAS认证检查,将微信api入口部分设计为独立的模块.放入controller目录下,命名为wechat.java文件为WechatController.java 文件大体 ...
随机推荐
- C# i=0;i=i++,i的值是多少?
昨天看群里dalao们聊天,有一个人出来问这个问题 这个题应该是挺常见的 int i = 0, t; for(t = 0;t <= 5;t++) { ...
- ExtJS 4.2 介绍
本篇介绍ExtJS相关知识,是以ExtJS4.2.1版本为基础进行说明,包括:ExtJS的特点.MVC模式.4.2.1GPL版本资源的下载和说明以及4种主题的演示. 目录 1. 介绍 1.1 说明 1 ...
- Android 6.0 权限知识学习笔记
最近在项目上因为6.0运行时权限吃了亏,发现之前对运行时权限的理解不足,决定回炉重造,重新学习一下Android Permission. 进入正题: Android权限 在Android系统中,权限分 ...
- Angular企业级开发(3)-Angular MVC实现
1.MVC介绍 Model-View-Controller 在20世纪80年代为程序语言Smalltalk发明的一种软件架构.MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并 ...
- 【Java每日一题】20170103
20161230问题解析请点击今日问题下方的"[Java每日一题]20170103"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 关键帧动画:@keyframes
关键帧动画:@keyframes: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- Configure a bridge interface over a VLAN tagged bonded interface
SOLUTION VERIFIED February 5 2014 KB340153 Environment Red Hat Enterprise Linux 6 (All Versions) Red ...
- .NET跨平台之旅:将示例站点升级至 .NET Core 1.1 Preview 1
今天微软发布了 .NET Core 1.1 Preview 1(详见 Announcing .NET Core 1.1 Preview 1 ),紧跟 .NET Core 前进的步伐,我们将示例站点 h ...
- ZeroMQ:云时代极速消息通信库
ZeroMQ:云时代极速消息通信库(大规模|可扩展|低成本|高效率解决之道,大规模分布式|多线程应用程序|消息传递架构构建利器) [美]Pieter Hintjens(皮特.亨特金斯)著 卢涛 李 ...
- 我为NET狂~群福利:逆天书库
我为NET狂-官方群① 238575862 爱学习,爱研究,福利不断,技能直彪~~ 最近更新:2016-08-30,欢迎补充 暂缺PDF: │ SQL Server 2012 Analysis Ser ...