详解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中的两个内置模块介绍
Apr 05 Python
Python实现购物程序思路及代码
Jul 24 Python
在双python下设置python3为默认的方法
Oct 31 Python
Python WEB应用部署的实现方法
Jan 02 Python
python爬取cnvd漏洞库信息的实例
Feb 14 Python
PyCharm安装Markdown插件的两种方法
Jun 24 Python
python变量的存储原理详解
Jul 10 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
Jan 20 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
Mar 31 Python
Python中pass的作用与使用教程
Nov 13 Python
Pytorch1.5.1版本安装的方法步骤
Dec 31 Python
Python数据模型与Python对象模型的相关总结
Jan 26 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
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
扩展你的 PHP 之入门篇
2006/12/04 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
PHP7 弃用功能
2021/03/09 PHP
比Jquery的document.ready更快的方法
2010/04/28 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
python实现监控windows服务并自动启动服务示例
2014/04/17 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
Python理解递归的方法总结
2019/01/28 Python
以SQLite和PySqlite为例来学习Python DB API
2020/02/05 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
python可以用哪些数据库
2020/06/22 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
H5离线存储Manifest原理及使用
2020/04/28 HTML / CSS
班队活动设计方案
2014/01/30 职场文书
入股协议书范本
2014/04/14 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
对照检查剖析材料
2014/09/30 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
2015年党员承诺书
2015/01/21 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
redis哨兵常用命令和监控示例详解
2021/05/27 Redis
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技