用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 内置函数complex详解
Oct 23 Python
Centos 升级到python3后pip 无法使用的解决方法
Jun 12 Python
python实现将读入的多维list转为一维list的方法
Jun 28 Python
Selenium(Python web测试工具)基本用法详解
Aug 10 Python
python制作英语翻译小工具代码实例
Sep 09 Python
Python如何基于rsa模块实现非对称加密与解密
Jan 03 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
Feb 28 Python
Python实现进度条和时间预估的示例代码
Jun 02 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
Aug 07 Python
python接口自动化框架实战
Dec 23 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
Oct 16 Python
Python自动操作神器PyAutoGUI的使用教程
Jun 16 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 和 COM
2006/10/09 PHP
php5.2时间相差8小时
2007/01/15 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
基于PHP CURL获取邮箱地址的详解
2013/06/03 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
分享PHP守护进程类
2015/12/30 PHP
php操作mongodb封装类与用法实例
2018/09/01 PHP
jqPlot Option配置对象详解
2009/07/25 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
Angular2 路由问题修复详解
2017/03/01 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
Vue项目中使用Vux的安装过程
2018/05/01 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
js实现无限层级树形数据结构(创新算法)
2020/02/27 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
在Python中使用HTMLParser解析HTML的教程
2015/04/29 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
keras tensorflow 实现在python下多进程运行
2020/02/06 Python
python 爬虫请求模块requests详解
2020/12/04 Python
美国购车网站:TrueCar
2016/10/19 全球购物
J2EE面试题集锦(附答案)
2013/08/16 面试题
毕业生医学检验求职信
2013/10/16 职场文书
2014两会优秀的心得体会范文
2014/03/17 职场文书
会员活动策划方案
2014/08/19 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书