详解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基于二分查找实现求整数平方根的方法
May 12 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
一些常用的Python爬虫技巧汇总
Sep 28 Python
python定时利用QQ邮件发送天气预报的实例
Nov 17 Python
微信跳一跳自动运行python脚本
Jan 08 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
Jul 12 Python
决策树剪枝算法的python实现方法详解
Sep 18 Python
python生成器用法实例详解
Nov 22 Python
python isinstance函数用法详解
Feb 13 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
May 15 Python
python 删除系统中的文件(按时间,大小,扩展名)
Nov 19 Python
python palywright库基本使用
Jan 21 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 adodb连接mssql解决乱码问题
2009/06/12 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
php获取bing每日壁纸示例分享
2014/02/25 PHP
php-msf源码详解
2017/12/25 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
能说明你的Javascript技术很烂的五个原因分析
2011/10/28 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
jquery 模板的应用示例
2013/11/12 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
vue-cli V3.0版本的使用详解
2018/10/24 Javascript
JS实现返回上一页并刷新页面的方法分析
2019/07/16 Javascript
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
Python对wav文件的重采样实例
2020/02/25 Python
Python实现屏幕录制功能的代码
2020/03/02 Python
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
会计专业毕业生自我评价
2013/09/25 职场文书
服装公司总经理岗位职责
2013/11/30 职场文书
教师评优事迹材料
2014/01/10 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
2014年个人工作总结范文
2014/11/07 职场文书
司机个人年终总结
2015/03/03 职场文书
周末问候语大全
2015/11/10 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
Python基础之元组与文件知识总结
2021/05/19 Python
redis数据结构之压缩列表
2022/03/21 Redis
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技