用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中的Null模式与桥接模式编程
Feb 02 Python
Python实现可自定义大小的截屏功能
Jan 20 Python
基于windows下pip安装python模块时报错总结
Jun 12 Python
flask session组件的使用示例
Dec 25 Python
python itchat给指定联系人发消息的方法
Jun 11 Python
python 实现在一张图中绘制一个小的子图方法
Jul 07 Python
django认证系统 Authentication使用详解
Jul 22 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
Apr 29 Python
python pymysql库的常用操作
Oct 16 Python
python 读取串口数据的示例
Nov 09 Python
python 详解turtle画爱心代码
Feb 15 Python
Python之matplotlib绘制折线图
Apr 13 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学习教程之第1天
2008/06/15 PHP
PHP+ACCESS 文章管理程序代码
2010/06/21 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
ThinkPHP分组下自定义标签库实例
2014/11/01 PHP
php生成shtml类用法实例
2014/12/09 PHP
PHP生成树的方法
2015/07/28 PHP
PHP+Mysql无刷新问答评论系统(源码)
2016/12/20 PHP
详解json在php中的应用
2018/09/30 PHP
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
jquery 获取自定义属性(attr和prop)的实现代码
2012/06/27 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
Vue 父子组件、组件间通信
2017/03/08 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
python使用matplotlib绘制折线图教程
2017/02/08 Python
zookeeper python接口实例详解
2018/01/18 Python
对python 命令的-u参数详解
2018/12/03 Python
python多个模块py文件的数据共享实例
2019/01/11 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
python爬虫增加访问量的方法
2019/08/22 Python
学习Django知识点分享
2019/09/11 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
python爬虫分布式获取数据的实例方法
2020/11/26 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
2019年.net常见面试问题
2012/02/12 面试题
Python里面search()和match()的区别
2016/09/21 面试题
质检的岗位职责
2013/11/17 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
React实现动效弹窗组件
2021/06/21 Javascript
Redis keys命令的具体使用
2022/06/05 Redis
nginx七层负载均衡配置详解
2022/07/15 Servers