详解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中的函数用法入门教程
Sep 02 Python
讲解Python中for循环下的索引变量的作用域
Apr 15 Python
理解Python中的类与实例
Apr 27 Python
windows及linux环境下永久修改pip镜像源的方法
Nov 28 Python
Python编写Windows Service服务程序
Jan 04 Python
django限制匿名用户访问及重定向的方法实例
Feb 07 Python
Python实现的合并两个有序数组算法示例
Mar 04 Python
Pytorch之保存读取模型实例
Dec 30 Python
python with语句的原理与用法详解
Mar 30 Python
在python中求分布函数相关的包实例
Apr 15 Python
python线程池如何使用
May 28 Python
Python使用20行代码实现微信聊天机器人
Jun 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入门
2006/10/09 PHP
php 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
php通用防注入程序 推荐
2011/02/26 PHP
php编写一个简单的路由类
2011/04/13 PHP
php中文验证码实现示例分享
2014/01/12 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
javascript 面向对象编程 聊聊对象的事
2009/09/17 Javascript
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
深入理解选择框脚本[推荐]
2016/12/13 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
vue抽出组件并传值实例
2020/07/31 Javascript
python中base64加密解密方法实例分析
2015/05/16 Python
python搭建微信公众平台
2016/02/09 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
2014年感恩母亲演讲稿
2014/05/27 职场文书
校车安全责任书
2014/08/25 职场文书
百年校庆感言
2015/08/01 职场文书
安全教育主题班会总结
2015/08/14 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
python实现的web监控系统
2021/04/27 Python