用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的ORM框架SQLObject入门实例
Apr 28 Python
Python中动态检测编码chardet的使用教程
Jul 06 Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 Python
python3实现域名查询和whois查询功能
Jun 21 Python
python实现二维插值的三维显示
Dec 17 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
很酷的python表白工具 你喜欢我吗
Apr 11 Python
Python Pandas分组聚合的实现方法
Jul 02 Python
纯python进行矩阵的相乘运算的方法示例
Jul 17 Python
基于Python爬取51cto博客页面信息过程解析
Aug 25 Python
Python通过队列来实现进程间通信的示例
Oct 14 Python
教你使用pyinstaller打包Python教程
May 27 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使用PDO连接ACCESS数据库
2015/03/05 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
PHP 爬取网页的主要方法
2018/07/13 PHP
Laravel 实现数据软删除功能
2019/08/21 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
给Function做的OOP扩展
2009/05/07 Javascript
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
2014/05/04 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
javaScript 实现重复输出给定的字符串的常用方法小结
2020/02/20 Javascript
vue 扩展现有组件的操作
2020/08/14 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
python中yaml配置文件模块的使用详解
2018/04/27 Python
python利用tkinter实现屏保
2019/07/30 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
IBatis持久层技术
2016/07/18 面试题
安全协议书范本
2014/04/21 职场文书
园林技术专业求职信
2014/07/28 职场文书
关于运动会的广播稿(10篇)
2014/09/12 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
python 经纬度求两点距离、三点面积操作
2021/06/03 Python
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
2022/08/05 Servers
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技