用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 相关文章推荐
Google开源的Python格式化工具YAPF的安装和使用教程
May 31 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
Nov 15 Python
Python把csv数据写入list和字典类型的变量脚本方法
Jun 15 Python
对python For 循环的三种遍历方式解析
Feb 01 Python
使用Python Pandas处理亿级数据的方法
Jun 24 Python
python如何实现从视频中提取每秒图片
Oct 22 Python
详解python中的数据类型和控制流
Aug 08 Python
postman传递当前时间戳实例详解
Sep 14 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
Mar 05 Python
pycharm最新激活码有效期至2100年(亲测可用)
Feb 05 Python
能让Python提速超40倍的神器Cython详解
Jun 24 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 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
escape unescape的php下的实现方法
2007/04/27 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
javascript 事件绑定问题
2011/01/01 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
Node.js文件操作详解
2014/08/16 Javascript
javascript折半查找详解
2015/01/26 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
jQuery插件MovingBoxes实现左右滑动中间放大图片效果
2017/02/28 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
2019/05/05 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
Eclipse + Python 的安装与配置流程
2013/03/05 Python
Python中字典映射类型的学习教程
2015/08/20 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
使用python实现unix2dos和dos2unix命令的例子
2019/08/13 Python
关于python字符串方法分类详解
2019/08/20 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
Python实现弹球小游戏
2020/08/01 Python
美国牛仔品牌:True Religion
2018/11/16 全球购物
某个公司的Java笔面试题
2016/03/11 面试题
酒店秘书求职信范文
2014/02/17 职场文书
2014年网管工作总结
2014/12/11 职场文书
护理工作心得体会
2016/01/22 职场文书
Python中itertools库的四个函数介绍
2022/04/06 Python