用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中使用urllib2防止302跳转的代码例子
Jul 07 Python
python网络编程调用recv函数完整接收数据的三种方法
Mar 31 Python
python编程之requests在网络请求中添加cookies参数方法详解
Oct 25 Python
Python字符串的全排列算法实例详解
Jan 07 Python
对python使用telnet实现弱密码登录的方法详解
Jan 26 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 Python
Python爬虫之urllib基础用法教程
Oct 12 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
TensorFlow——Checkpoint为模型添加检查点的实例
Jan 21 Python
Python configparser模块封装及构造配置文件
Aug 07 Python
python脚本第一行如何写
Aug 30 Python
Pandas自定义选项option设置
Jul 25 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
基于mysql的bbs设计(二)
2006/10/09 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
php mail to 配置详解
2014/01/16 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
奇妙的js
2007/09/24 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
VUE搭建手机商城心得和遇到的坑
2019/02/21 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
Python类和对象的定义与实际应用案例分析
2018/12/27 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
python3中类的继承以及self和super的区别详解
2019/06/26 Python
python selenium操作cookie的实现
2020/03/18 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
解决c++调用python中文乱码问题
2020/07/29 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
CSMA/CD介质访问控制协议
2015/11/17 面试题
普罗米修斯教学反思
2014/02/06 职场文书
毕业生党员个人总结
2015/02/14 职场文书
2015年社会实践个人总结
2015/03/06 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
人工作失职检讨书
2015/05/05 职场文书
公路施工安全责任书
2015/05/08 职场文书
python urllib库的使用详解
2021/04/13 Python
python开发人人对战的五子棋小游戏
2022/05/02 Python