详解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中使用HTMLParser解析html实例
Feb 08 Python
Python操作MySQL数据库9个实用实例
Dec 11 Python
pycharm远程调试openstack代码
Nov 21 Python
Jupyter notebook远程访问服务器的方法
May 24 Python
使用Python来开发微信功能
Jun 13 Python
Python中的CSV文件使用"with"语句的方式详解
Oct 16 Python
python制作简单五子棋游戏
Jun 18 Python
python实现修改固定模式的字符串内容操作示例
Dec 30 Python
tensorflow查看ckpt各节点名称实例
Jan 21 Python
利用Python如何实时检测自身内存占用
May 09 Python
总结Pyinstaller的坑及终极解决方法(小结)
Sep 21 Python
解决virtualenv -p python3 venv报错的问题
Feb 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
用PHP发电子邮件
2006/10/09 PHP
php读取远程gzip压缩网页的方法
2014/12/29 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
jQuery + Flex 通过拖拽方式动态改变图片的代码
2011/08/03 Javascript
IE6、IE7中获取Button元素的值的bug说明
2011/08/28 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
2013/12/18 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
jQuery中trigger()与bind()用法分析
2015/12/18 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
浅述Javascript的外部对象
2016/12/07 Javascript
Sequelize中用group by进行分组聚合查询
2016/12/12 Javascript
使用DeviceOne实现微信小程序功能
2016/12/29 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
Express 配置HTML页面访问的实现
2020/11/01 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
python使用arp欺骗伪造网关的方法
2015/04/24 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
Python中XlsxWriter模块简介与用法分析
2018/04/24 Python
django_orm查询性能优化方法
2018/08/20 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
python字符串常用方法及文件简单读写的操作方法
2020/03/04 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
Madda Fella官网:美国冒险家服装品牌
2020/01/16 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
Java语言程序设计测试题改错题部分
2014/07/22 面试题
大学学生会竞选稿
2015/11/19 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书
浅析python中特殊文件和特殊函数
2022/02/24 Python
再谈python_tkinter弹出对话框创建
2022/03/20 Python