用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中条件选择和循环语句使用方法介绍
Mar 13 Python
windows下python模拟鼠标点击和键盘输示例
Feb 28 Python
在python中的socket模块使用代理实例
May 29 Python
Python连接DB2数据库
Aug 27 Python
python模拟登录并且保持cookie的方法详解
Apr 04 Python
详解django中自定义标签和过滤器
Jul 03 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
Aug 28 Python
Python numpy数组转置与轴变换
Nov 15 Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 Python
Python爬虫实现自动登录、签到功能的代码
Aug 20 Python
Python+OpenCV图像处理——实现直线检测
Oct 23 Python
pandas apply使用多列计算生成新的列实现示例
Feb 24 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版本不同可能诱发的问题
2015/12/22 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
2013/01/27 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
javascript的数组和常用函数详解
2014/05/09 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
JS控制弹出新页面窗口位置和大小的方法
2015/03/02 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
JavaScript实现简单进度条效果
2020/03/25 Javascript
[46:23]完美世界DOTA2联赛PWL S2 FTD vs Magma 第一场 11.20
2020/11/23 DOTA
Python学习笔记之常用函数及说明
2014/05/23 Python
对Python中内置异常层次结构详解
2018/10/18 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
举例讲解Python常用模块
2019/03/08 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
2020/06/08 Python
python 实现端口扫描工具
2020/12/18 Python
Python实现疫情地图可视化
2021/02/05 Python
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
东方通信股份有限公司VC面试题
2014/08/27 面试题
总经理岗位职责范本
2014/02/02 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
和睦家庭事迹
2014/05/14 职场文书
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android
详解Vue router路由
2021/11/20 Vue.js
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js
原生JS实现分页
2022/04/19 Javascript
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS