详解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监控网站运行异常并发送邮件的方法
Mar 13 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
Jul 11 Python
python实现图书管理系统
Mar 12 Python
matplotlib 纵坐标轴显示数据值的实例
May 25 Python
Python使用pymongo模块操作MongoDB的方法示例
Jul 20 Python
python 获取页面表格数据存放到csv中的方法
Dec 26 Python
python飞机大战pygame游戏框架搭建操作详解
Dec 17 Python
python读取多层嵌套文件夹中的文件实例
Feb 27 Python
Python docutils文档编译过程方法解析
Jun 23 Python
基于python图书馆管理系统设计实例详解
Aug 05 Python
15个Pythonic的代码示例(值得收藏)
Oct 29 Python
python中watchdog文件监控与检测上传功能
Oct 30 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
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
PHP使用PDO调用mssql存储过程的方法示例
2017/10/07 PHP
jquery JSON的解析方式
2009/07/25 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
利用JS如何计算字符串所占字节数示例代码
2017/09/13 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
Vue.js中的组件系统
2019/05/30 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
python中的迭代和可迭代对象代码示例
2017/12/27 Python
python导入坐标点的具体操作
2019/05/10 Python
Python zip函数打包元素实例解析
2019/12/11 Python
python实现飞船大战
2020/04/24 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
小学音乐教学反思
2014/02/05 职场文书
说明书范文
2014/05/07 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
员工考勤管理制度
2015/08/06 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
用Python编写简单的gRPC服务的详细过程
2021/07/04 Python
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS