详解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类的专用方法实例分析
Jan 09 Python
举例简单讲解Python中的数据存储模块shelve的用法
Mar 03 Python
基于Python的接口测试框架实例
Nov 04 Python
python实现用户管理系统
Jan 10 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
python读取和保存图片5种方法对比
Sep 12 Python
对Python通过pypyodbc访问Access数据库的方法详解
Oct 27 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
python hashlib加密实现代码
Oct 17 Python
Python多继承以及MRO顺序的使用
Nov 11 Python
Python接口自动化判断元素原理解析
Feb 24 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 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中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
用js的document.write输出的广告无阻塞加载的方法
2014/06/05 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
2015/05/29 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
微信小程序实现判断是分享到群还是个人功能示例
2019/05/03 Javascript
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
Python决策树分类算法学习
2017/12/22 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
python 反编译exe文件为py文件的实例代码
2019/06/27 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
饮料业务员岗位职责
2013/12/15 职场文书
公益活动策划方案
2014/01/09 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
护士个人年终总结
2015/02/13 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
Nginx进程管理和重载原理详解
2021/04/22 Servers
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
青岛市的收音机研制与生产
2022/04/07 无线电