详解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 相关文章推荐
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
Django与JS交互的示例代码
Aug 23 Python
利用python操作SQLite数据库及文件操作详解
Sep 22 Python
Python实现PS滤镜功能之波浪特效示例
Jan 26 Python
详解Python3中的迭代器和生成器及其区别
Oct 09 Python
python3使用GUI统计代码量
Sep 18 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
Oct 30 Python
python向图片里添加文字
Nov 26 Python
Python使用monkey.patch_all()解决协程阻塞问题
Apr 15 Python
Python return语句如何实现结果返回调用
Oct 15 Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 23 Python
Python 恐龙跑跑小游戏实现流程
Feb 15 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
如何将数据从文本导入到mysql
2006/10/09 PHP
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
jquery 表单下所有元素的隐藏
2009/07/25 Javascript
safari,opera嵌入iframe页面cookie读取问题解决方法
2010/06/23 Javascript
js过滤数组重复元素的方法
2010/09/05 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
vue-autoui自匹配webapi的UI控件的实现
2020/03/20 Javascript
微信小程序国际化探索实现(附源码地址)
2020/05/20 Javascript
python实现获取序列中最小的几个元素
2014/09/25 Python
python抓取文件夹的所有文件
2018/02/27 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
Python3 修改默认环境的方法
2019/02/16 Python
python logging模块的使用总结
2019/07/09 Python
对Python生成器、装饰器、递归的使用详解
2019/07/19 Python
Python itertools.product方法代码实例
2020/03/27 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
盛大笔试题
2016/11/05 面试题
门卫人员岗位职责
2013/12/24 职场文书
公司同意接收函
2014/01/13 职场文书
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
幼儿园教师个人工作总结2015
2015/05/12 职场文书
学生会2016感恩节活动小结
2016/04/01 职场文书
销区经理年终述职报告模板
2019/11/28 职场文书
使用php的mail()函数实现发送邮件功能
2021/06/03 PHP