详解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数组的处理代码
Jan 04 Python
Python的Flask框架中实现分页功能的教程
Apr 20 Python
python验证码识别的实例详解
Sep 09 Python
Django1.7+python 2.78+pycharm配置mysql数据库
Oct 09 Python
Python 中迭代器与生成器实例详解
Mar 29 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 Python
python3.6使用tkinter实现弹跳小球游戏
May 09 Python
python线程安全及多进程多线程实现方法详解
Sep 27 Python
python实现Oracle查询分组的方法示例
Apr 30 Python
python入门:argparse浅析 nargs='+'作用
Jul 12 Python
python 下划线的不同用法
Oct 24 Python
Python Flask实现进度条
May 11 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函数计算中英文字符串长度的方法
2014/11/11 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
python基础教程之元组操作使用详解
2014/03/25 Python
Python获取系统所有进程PID及进程名称的方法示例
2018/05/24 Python
python实现验证码识别功能
2018/06/07 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
django列表筛选功能的实现代码
2020/03/27 Python
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
介绍一下Python下range()函数的用法
2013/11/07 面试题
Unix控制后台进程都有哪些进程
2016/09/22 面试题
商场端午节活动方案
2014/01/29 职场文书
教师网络培训感言
2014/03/09 职场文书
关于读书的演讲稿1000字
2014/08/27 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
员工辞职信怎么写
2015/02/27 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
2019秋季运动会口号
2019/06/25 职场文书
教你nginx跳转配置的四种方式
2022/07/07 Servers