用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 返回汉字的汉语拼音
Feb 27 Python
CentOS中使用virtualenv搭建python3环境
Jun 08 Python
Python内建模块struct实例详解
Feb 02 Python
python 日期操作类代码
May 05 Python
Python中pip更新和三方插件安装说明
Jul 08 Python
Python读取csv文件分隔符设置方法
Jan 14 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 Python
简单了解python变量的作用域
Jul 30 Python
python批量处理txt文件的实例代码
Jan 13 Python
Python多线程 Queue 模块常见用法
Jul 04 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
重置版战役片段
2020/04/09 魔兽争霸
PHP 文件类型判断代码
2009/03/13 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
PHP如何使用Memcached
2016/04/05 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
JavaScript 动态创建VML的方法
2009/10/14 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
2013/03/04 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
jQuery内容过滤选择器用法分析
2015/02/10 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
详解将Django部署到Centos7全攻略
2018/09/26 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
python matplotlib库绘制散点图例题解析
2019/08/10 Python
Python代码执行时间测量模块timeit用法解析
2020/07/01 Python
python实现单机五子棋
2020/08/28 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
python中os.remove()用法及注意事项
2021/01/31 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
美国最大的团购网站:Groupon
2016/07/23 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
电气技术员岗位职责
2013/11/19 职场文书
汽车维修专业个人求职信范文
2014/01/01 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
六查六看自查报告
2014/10/14 职场文书
酒店前台岗位职责
2015/04/16 职场文书
员工年度工作总结2015
2015/05/18 职场文书
紫日观后感
2015/06/05 职场文书