用ldap作为django后端用户登录验证的实现


Posted in Python onDecember 07, 2020

每个公司在运维平台化过程中,如果以开始没有规划,免不了全面开花,会做成好多个平台,然后每个平台都有自己的认证体系,等平台多了,记录这些账号就变得非常烦人,如果用不同的密码,对人的记忆力是个挑战,所以基于此,大部分公司会有部署Ldap系统,来统一运维系统的账号管理,像我们常用的jenkins也可以做对接到ldap上,这样所有的系统就可以统一用ldap来认证,然后根据不同的人来设置不同的权限,那django怎么使用ldap来做后端验证呢,操作接入非常简单,整个过程可以几乎不改我们之前的代码任何逻辑。

我们先进行第一步,安装依赖,ldap和django-auth-ldap,django-auth-ldap这个安装没有任何问题, 我们不多说了,直接pip即可,但ldap这玩意儿在Linux系统上安装没啥问题,但如果你是windows系统,安装准报错,而且报的错能让你崩溃,你要是顺着报错的信息去搜去解决问题,会浪费大量的时间,但你又不能不安装,不然你本地怎么调试?(mac的忽略),不能每次改完代码提交到服务器上验证吧?不过大家别担心,我已把路给大家趟平了,按以下步骤去安装就绝对没问题,首先访问:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap

然后根据自己的版本需求下载对应的文件,以下是我下载的:

用ldap作为django后端用户登录验证的实现

如果你用的虚拟环境,需要进入到你虚拟环境目录然后进行安装,进入windows虚拟环境下,执行: active.bat,进入虚拟环境:然后运行:

用ldap作为django后端用户登录验证的实现

等安装完,就能正常使用了,下面我们来编辑settings.py文件,加入内容:

首先导入需要的模块:

import ldap
from django_auth_ldap.config import LDAPSearch,GroupOfNamesType

指定后端验证为ldap:

AUTHENTICATION_BACKENDS = [
  'django_auth_ldap.backend.LDAPBackend',
  'django.contrib.auth.backends.ModelBackend',
]

然后设置ldap的ip地址连接配置:

# LDAP Setting
AUTH_LDAP_SERVER_URI = "ldap://10.1.1.1:389"
AUTH_LDAP_BIND_DN = "cn=admin,dc=xxx,dc=xxx,dc=xx"
AUTH_LDAP_BIND_PASSWORD = "mypassword"
 
AUTH_LDAP_USER_SEARCH = LDAPSearch(
'ou=users,dc=xxx,dc=xxx,dc=xx',
ldap.SCOPE_SUBTREE,
'(uid=%(user)s)',
)
 
# 跟django中的auth_user对应
AUTH_LDAP_USER_ATTR_MAP = {
  "first_name": "uid",
  "last_name": "sn",
  "email": "mail"
}

完毕运行工程,这时候登录就是Ldap方式了,相对还是比较简单

到此这篇关于用ldap作为django后端用户登录验证的实现的文章就介绍到这了,更多相关django 登录验证内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python list使用示例 list中找连续的数字
Jan 27 Python
python和C语言混合编程实例
Jun 04 Python
python每隔N秒运行指定函数的方法
Mar 16 Python
利用Python如何生成hash值示例详解
Dec 20 Python
浅谈Python2获取中文文件名的编码问题
Jan 09 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
Keras搭建自编码器操作
Jul 03 Python
Python CategoricalDtype自定义排序实现原理解析
Sep 11 Python
python实现ROA算子边缘检测算法
Apr 05 Python
Django cookie和session的应用场景及如何使用
Apr 29 Python
Django中使用Celery的方法步骤
Dec 07 #Python
python集合的新增元素方法整理
Dec 07 #Python
python进行二次方程式计算的实例讲解
Dec 06 #Python
paramiko使用tail实时获取服务器的日志输出详解
Dec 06 #Python
python中二分查找法的实现方法
Dec 06 #Python
python中判断数字是否为质数的实例讲解
Dec 06 #Python
Django搭建项目实战与避坑细节详解
Dec 06 #Python
You might like
php中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
php对数组排序的简单实例
2013/12/25 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
js鼠标移动时禁止选中文字
2017/02/19 Javascript
JavaScript和jQuery制作光棒效果
2017/02/24 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
python正则爬取某段子网站前20页段子(request库)过程解析
2019/08/10 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
英国网上花店:Bunches
2016/11/29 全球购物
德国家具在线:Fashion For Home
2017/03/11 全球购物
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
2014年底个人工作总结
2015/03/10 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
交通安全学习心得体会
2016/01/18 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android