用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实现Linux下守护进程的编写方法
Aug 22 Python
python批量提取word内信息
Aug 09 Python
python跳过第一行快速读取文件内容的实例
Jul 12 Python
python分批定量读取文件内容,输出到不同文件中的方法
Dec 08 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
python basemap 画出经纬度并标定的实例
Jul 09 Python
python用线性回归预测股票价格的实现代码
Sep 04 Python
python框架django项目部署相关知识详解
Nov 04 Python
Python ORM编程基础示例
Feb 02 Python
TensorFlow实现指数衰减学习率的方法
Feb 05 Python
解决jupyter运行pyqt代码内核重启的问题
Apr 16 Python
解决pytorch 保存模型遇到的问题
Mar 03 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+javascript制作带提示的验证码源码分享
2014/05/28 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
PHP异常类及异常处理操作实例详解
2018/12/19 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
用roll.js实现的图片自动滚动+鼠标触动的特效
2007/03/18 Javascript
jqgrid 简单学习笔记
2011/05/03 Javascript
js简单抽奖代码
2015/01/16 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
Angularjs实现下拉框联动的示例代码
2017/08/22 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
Python语言进阶知识点总结
2019/05/28 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
python怎么提高计算速度
2020/06/11 Python
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
策划主管的工作职责
2013/11/24 职场文书
领导干部廉政承诺书
2014/03/27 职场文书
2014法制宣传日活动总结
2014/07/09 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
工程索赔意向书
2014/08/30 职场文书
Javascript中Microtask和Macrotask鲜为人知的知识点
2022/04/02 Javascript