详解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 相关文章推荐
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
Python、Javascript中的闭包比较
Feb 04 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
Aug 07 Python
一篇文章入门Python生态系统(Python新手入门指导)
Dec 11 Python
基于python的Tkinter实现一个简易计算器
Dec 31 Python
Python实现端口检测的方法
Jul 24 Python
python读取Excel实例详解
Aug 17 Python
Django中自定义模型管理器(Manager)及方法
Sep 23 Python
python库skimage给灰度图像染色的方法示例
Apr 27 Python
python用opencv完成图像分割并进行目标物的提取
May 25 Python
python开发一个解析protobuf文件的简单编译器
Nov 17 Python
pip install命令安装扩展库整理
Mar 02 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 进程锁定问题分析研究
2009/11/24 PHP
smarty中js的调用方法示例
2014/10/27 PHP
Document 对象的常用方法
2009/07/31 Javascript
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
AngularJS Toaster使用详解
2017/02/24 Javascript
vue数据双向绑定原理解析(get & set)
2017/03/08 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
python字典多条件排序方法实例
2014/06/30 Python
python实现在控制台输入密码不显示的方法
2015/07/02 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
解决python 输出是省略号的问题
2018/04/19 Python
Python实现括号匹配方法详解
2020/02/10 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
毕业求职自荐信格式是什么
2013/11/19 职场文书
副总经理工作职责
2013/11/28 职场文书
房屋租赁协议书范本
2014/04/10 职场文书
安全生产标语
2014/06/06 职场文书
政工例会汇报材料
2014/08/26 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
2014年平安建设工作总结
2014/11/19 职场文书
地球上的星星观后感
2015/06/02 职场文书
创业计划书之农家乐
2019/10/09 职场文书
golang中字符串MD5生成方式总结
2021/07/04 Golang
javascript之Object.assign()的痛点分析
2022/03/03 Javascript
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL