用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使用range函数计算一组数和的方法
May 07 Python
Python的装饰器模式与面向切面编程详解
Jun 21 Python
python 开发的三种运行模式详细介绍
Jan 18 Python
Python学习笔记之解析json的方法分析
Apr 21 Python
Python解决八皇后问题示例
Apr 22 Python
Python列表切片操作实例总结
Feb 19 Python
Python实现性能自动化测试竟然如此简单
Jul 30 Python
Python实现线性判别分析(LDA)的MATLAB方式
Dec 09 Python
Python面向对象中类(class)的简单理解与用法分析
Feb 21 Python
详解Pytorch显存动态分配规律探索
Nov 17 Python
Python打包exe时各种异常处理方案总结
May 18 Python
Python基本数据类型之字符串str
Jul 21 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
PHP中集成PayPal标准支付的实现方法分享
2012/02/06 PHP
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
javascript object array方法使用详解
2012/12/03 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
轻松实现js图片预览功能
2016/01/18 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
jQuery图片轮播功能实例代码
2017/01/29 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
python多重继承新算法C3介绍
2014/09/28 Python
详解Python中expandtabs()方法的使用
2015/05/18 Python
python logging日志模块的详解
2017/10/29 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
2014/10/10 HTML / CSS
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
市场部管理制度
2014/02/02 职场文书
社区维稳工作方案
2014/06/06 职场文书
社区两委对照检查材料
2014/08/23 职场文书
医疗专业毕业生求职信
2014/08/28 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书
python将图片转为矢量图的方法步骤
2021/03/30 Python
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python
Java设计模式中的命令模式
2022/04/28 Java/Android