用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装饰器使用方法实例
Nov 21 Python
Python的Django框架中从url中捕捉文本的方法
Jul 20 Python
利用标准库fractions模块让Python支持分数类型的方法详解
Aug 11 Python
python实现word 2007文档转换为pdf文件
Mar 15 Python
Python基于生成器迭代实现的八皇后问题示例
May 23 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
Jun 01 Python
windows 10 设定计划任务自动执行 python 脚本的方法
Sep 11 Python
python多线程并发及测试框架案例
Oct 15 Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 Python
python通过matplotlib生成复合饼图
Feb 06 Python
Python BeautifulReport可视化报告代码实例
Apr 13 Python
详解Python牛顿插值法
May 11 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中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
PHP递归算法的详细示例分析
2013/02/19 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
2016/03/25 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
2013/06/12 Javascript
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
javascript 处理null及null值示例
2014/06/09 Javascript
AngularJS内置指令
2015/02/04 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
2020/07/31 Javascript
python 中的列表解析和生成表达式
2011/03/10 Python
Python查询Mysql时返回字典结构的代码
2012/06/18 Python
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
对Python中DataFrame按照行遍历的方法
2018/04/08 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
python按比例随机切分数据的实现
2019/07/11 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
python实现高斯投影正反算方式
2020/01/17 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
python与idea的集成的实现
2020/11/20 Python
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
单位人事专员介绍信
2014/01/11 职场文书
法制报告会主持词
2014/04/02 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
2014年电厂工作总结
2014/12/04 职场文书
电力培训学习心得体会
2016/01/11 职场文书