用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多线程编程中的join函数使用心得
Sep 02 Python
使用IPython来操作Docker容器的入门指引
Apr 08 Python
使用SAE部署Python运行环境的教程
May 05 Python
介绍Python中的fabs()方法的使用
May 14 Python
在centos7中分布式部署pyspider
May 03 Python
python+matplotlib演示电偶极子实例代码
Jan 12 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
Oct 26 Python
Python制作exe文件简单流程
Jan 24 Python
python 自动批量打开网页的示例
Feb 21 Python
浅析PEP570新语法: 只接受位置参数
Oct 15 Python
Python如何实现爬取B站视频
May 20 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
Sep 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操作mysql数据库的基本类代码
2014/02/25 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
JavaScript 大数据相加的问题
2011/08/03 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
javascript加号"+"的二义性说明
2013/03/04 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
WebPack基础知识详解
2017/01/16 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
vue移动端使用canvas签名的实现
2020/01/15 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
[34:39]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第二局
2016/03/05 DOTA
实用自动化运维Python脚本分享
2018/06/04 Python
python3.5安装python3-tk详解
2019/04/26 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
wxPython实现列表增删改查功能
2019/11/19 Python
用python的turtle模块实现给女票画个小心心
2019/11/23 Python
Python多线程的退出控制实现
2020/08/10 Python
python利用appium实现手机APP自动化的示例
2021/01/26 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
瑞典度假品牌:OAS
2019/05/28 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
物业经理求职自我评价
2013/09/22 职场文书
优秀学生事迹材料
2014/02/08 职场文书
学生偷窃检讨书
2014/09/25 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python