详解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写xml文件的操作实例
Oct 05 Python
django传值给模板, 再用JS接收并进行操作的实例
May 28 Python
Python使用googletrans报错的解决方法
Sep 25 Python
使用Python的toolz库开始函数式编程的方法
Nov 15 Python
详解Python的数据库操作(pymysql)
Apr 04 Python
python Django 创建应用过程图示详解
Jul 29 Python
Django ORM 自定义 char 类型字段解析
Aug 09 Python
使用python批量修改文件名的方法(视频合并时)
Mar 24 Python
python3多线程知识点总结
Sep 26 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
Sep 16 Python
Python Socket编程详解
Apr 25 Python
Python日志模块logging用法
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
点评山进PR-D3L三波段收音机
2021/03/02 无线电
可定制的PHP缩略图生成程式(需要GD库支持)
2007/03/06 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
2014/05/08 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
js判断字符长度以及中英文数字等
2013/12/31 Javascript
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
javascript函数特点实例分析
2015/05/14 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
JS中type="button"和type="submit"的区别
2017/07/04 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
基于Vue过渡状态实例讲解
2017/09/14 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python中的作用域规则详解
2015/01/30 Python
python如何实现反向迭代
2018/03/20 Python
Python实现查找数组中任意第k大的数字算法示例
2019/01/23 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
如何爬取通过ajax加载数据的网站
2019/08/15 Python
python 实现按对象传值
2019/12/26 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
浅谈django 重载str 方法
2020/05/19 Python
python opencv实现简易画图板
2020/08/27 Python
python实现定时发送邮件到指定邮箱
2020/12/23 Python
日语翻译个人求职的自我评价
2013/10/14 职场文书
大学生表扬信范文
2014/01/09 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
电子信息工程自荐信
2014/05/26 职场文书
职代会闭幕词
2015/01/28 职场文书
申论不会写怎么办?教您掌握这6点思维和原则
2019/07/17 职场文书
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL
一条 SQL 语句执行过程
2022/03/17 MySQL