用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 ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
Python线程的两种编程方式
Apr 14 Python
Python切片工具pillow用法示例
Mar 30 Python
python 二维数组90度旋转的方法
Jan 28 Python
基于Django静态资源部署404的解决方法
Jul 28 Python
python matplotlib拟合直线的实现
Nov 19 Python
简单了解python元组tuple相关原理
Dec 02 Python
Python谱减法语音降噪实例
Dec 18 Python
python如何通过twisted搭建socket服务
Feb 03 Python
CocosCreator ScrollView优化系列之分帧加载
Apr 14 Python
Python中使用subprocess库创建附加进程
May 11 Python
Python编程根据字典列表相同键的值进行合并
Oct 05 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数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
php获取参数的几种方法总结
2014/02/18 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
2014/10/30 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
PHP多态代码实例
2015/06/26 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
2013/03/19 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
python记录程序运行时间的三种方法
2017/07/14 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
Python探索之pLSA实现代码
2017/10/25 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
物流专业大学应届生求职信
2013/11/03 职场文书
文史专业毕业生自荐信
2013/11/17 职场文书
个人求职信范例
2014/01/29 职场文书
端午节粽子促销活动方案
2014/02/02 职场文书
迟到早退检讨书
2014/02/10 职场文书
小学绿色学校申报材料
2014/08/23 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
新学期感想
2015/08/10 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS
Mysql中常用的join连接方式
2022/05/11 MySQL