详解Django-auth-ldap 配置方法


Posted in Python onDecember 10, 2018

使用场景

公司内部使用Django作为后端服务框架的Web服务,当需要使用公司内部搭建的Ldap 或者 Windows 的AD服务器作为Web登录认证系统时,就需要这个Django-auth-ldap第三方插件

插件介绍

Django-auth-ldap是一个Django身份验证后端,可以针对LDAP服务进行身份验证。有许多丰富的配置选项可用于处理用户,组和权限,便于对页面和后台的控制 插件介绍地址:Django-auth-ldap

安装方法

注意:需先正确安装python3环境、pip3 和 Django环境

前提: 需要先安装python-ldap > = 3.0

第一步:安装Django-auth-ldap

pip install django-auth-ldap

第二步:在setting.py中配置django-auth-ldap 模块

要在Django项目中使用auth认证,请将django_auth_ldap.backend.LDAPBackend添加 到AUTHENTICATION_BACKENDS。不要向INSTALLED_APPS添加任何内容。 添加完效果如下:

AUTHENTICATION_BACKENDS = [

'django_auth_ldap.backend.LDAPBackend' ,

]

第三步:在django项目的settings.py中配置如下代码:

#Django-auth-ldap 配置部分
import ldap
from django_auth_ldap.config import LDAPSearch,GroupOfNamesType
 
#修改Django认证先走ldap,再走本地认证
AUTHENTICATION_BACKENDS = [
 'django_auth_ldap.backend.LDAPBackend',
 'django.contrib.auth.backends.ModelBackend',
]
 
#ldap的连接基础配置
AUTH_LDAP_SERVER_URI = "ldap://xxx.xxx.xxx.xxx:389" # ldap or ad 服务器地址
AUTH_LDAP_BIND_DN = "CN=administrator,CN=Users,DC=test,DC=com" # 管理员的dn路径
AUTH_LDAP_BIND_PASSWORD = 'testpassword' # 管理员密码
 
#允许认证用户的路径
AUTH_LDAP_USER_SEARCH = LDAPSearch("OU=test,DC=test,DC=intra",
     ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)")
 
#通过组进行权限控制
AUTH_LDAP_GROUP_SEARCH = LDAPSearch("ou=groups,ou=test,dc=test,dc=intra",
 ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)"
)
 
AUTH_LDAP_GROUP_TYPE = GroupOfNamesType()
 
#is_staff:这个组里的成员可以登录;is_superuser:组成员是django admin的超级管理员;is_active:组成员可以登录django admin后台,但是无权限查看后台内容
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
 "is_staff": "cn=test_users,ou=groups,OU=test,DC=test,DC=com",
 "is_superuser": "cn=test_users,ou=groups,OU=tset,DC=test,DC=com",
}
#通过组进行权限控制end
 
#如果ldap服务器是Windows的AD,需要配置上如下选项
AUTH_LDAP_CONNECTION_OPTIONS = {
 ldap.OPT_DEBUG_LEVEL: 1,
 ldap.OPT_REFERRALS: 0,
}
 
#当ldap用户登录时,从ldap的用户属性对应写到django的user数据库,键为django的属性,值为ldap用户的属性
AUTH_LDAP_USER_ATTR_MAP = {
 "first_name": "givenName",
 "last_name": "sn",
 "email": "mail"
}
 
#如果为True,每次组成员都从ldap重新获取,保证组成员的实时性;反之会对组成员进行缓存,提升性能,但是降低实时性
# AUTH_LDAP_FIND_GROUP_PERMS = True

以上配置完毕后,登录服务器后台地址:http://serverurl:8080/admin 使用ldap or ad中指定的group里的用户进行登录认证。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
利用Python中的mock库对Python代码进行模拟测试
Apr 16 Python
Python版微信红包分配算法
May 04 Python
Python 基于Twisted框架的文件夹网络传输源码
Aug 28 Python
详解Python nose单元测试框架的安装与使用
Dec 20 Python
Python 错误和异常代码详解
Jan 29 Python
致Python初学者 Anaconda入门使用指南完整版
Apr 05 Python
Python JSON格式数据的提取和保存的实现
Mar 22 Python
pytorch实现CNN卷积神经网络
Feb 19 Python
Python使用Chrome插件实现爬虫过程图解
Jun 09 Python
python怎么判断模块安装完成
Jun 19 Python
Python中常用的os操作汇总
Nov 05 Python
TensorFlow的环境配置与安装方法
Feb 20 Python
Python网页正文转换语音文件的操作方法
Dec 09 #Python
python 使用 requests 模块发送http请求 的方法
Dec 09 #Python
Python实现八皇后问题示例代码
Dec 09 #Python
python中的tcp示例详解
Dec 09 #Python
python数据处理 根据颜色对图片进行分类的方法
Dec 08 #Python
Python发送邮件测试报告操作实例详解
Dec 08 #Python
Python自动发送邮件的方法实例总结
Dec 08 #Python
You might like
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
新手简单了解vue
2019/05/29 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
jstree中的checkbox默认选中和隐藏示例代码
2019/12/29 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[44:40]Serenity vs Pain 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python的dataframe和matrix的互换方法
2018/04/11 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
解决PyCharm控制台输出乱码的问题
2019/01/16 Python
Python中psutil的介绍与用法
2019/05/02 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
2013/01/09 HTML / CSS
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
军校大学生个人的自我评价
2014/02/17 职场文书
生活委员竞选稿
2015/11/21 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python