用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中的JSON模块
Apr 08 Python
python函数中return后的语句一定不会执行吗?
Jul 06 Python
python内置函数:lambda、map、filter简单介绍
Nov 16 Python
基于MTCNN/TensorFlow实现人脸检测
May 24 Python
python得到电脑的开机时间方法
Oct 15 Python
Flask框架web开发之零基础入门
Dec 10 Python
python环境路径配置以及命令行运行脚本
Apr 02 Python
Python利用全连接神经网络求解MNIST问题详解
Jan 14 Python
python计算波峰波谷值的方法(极值点)
Feb 18 Python
jupyter 使用Pillow包显示图像时inline显示方式
Apr 24 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 Python
Python爬虫入门教程01之爬取豆瓣Top电影
Jan 24 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
来自phpguru得Php Cache类源码
2010/04/15 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
2014/08/30 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
2015/04/12 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
JavaScript判断日期时间差的实例代码
2018/03/01 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
详解Vue.js中.native修饰符
2018/04/24 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
2018/05/16 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
Angular.JS读取数据库数据调用完整实例
2019/07/02 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
Python的Django框架中的Context使用
2015/07/15 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
2019/04/11 Python
django自带调试服务器的使用详解
2019/08/29 Python
python实现单链表的方法示例
2019/09/03 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
python列表推导式入门学习解析
2019/12/02 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
OpenCV图片漫画效果的实现示例
2020/08/18 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
UNIX文件系统分类
2014/11/11 面试题
市场营销专业毕业生求职信
2014/03/26 职场文书
简易离婚协议书范本
2014/10/24 职场文书
停电调休通知
2015/04/16 职场文书
国庆放假通知怎么写
2015/07/30 职场文书