需要提前安装python-ldap模块

python接入ldap其实分了几个步骤:

1、使用一个管理员账户登陆到ldap

2、使用一个字段值是唯一的字段,去搜索到要验证用户的DN值(ldap搜索到的单个用户信息是一个元祖数据,DN值就是元祖数据的第一位数据,"cn=x,ou=xx,ou=xxx,ou=xxxx,dc=xxxxx,dc=com"这个就是DN值)

3、然后使用搜索到的用户的DN值和用户的密码再去登陆一把ldap

Backend.py

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import ldapclass LDAPBackend:def authenticate(self, username=None, password=None, **kwargs):AUTH_LDAP_SERVER_URI = "ldap://0.0.0.0:389"AUTH_LDAP_BIND_DN = 'cn=管理员账号,dc=域名,dc=com'AUTH_LDAP_BIND_PASSWORD = '管理员密码' AUTH_LDAP_BASE_DN = 'dc=域名,dc=com'if username and password:# 初始化ldap连接ldapconn = ldap.initialize(AUTH_LDAP_SERVER_URI)# 设置连接协议为version3ldapconn.protocol_version = ldap.VERSION3# 使用管理员账号,密码登陆ldapldapconn.simple_bind_s(AUTH_LDAP_BIND_DN, AUTH_LDAP_BIND_PASSWORD)# 根据我们需要的字段(此处的字段是值ldap查询到的数据的字段)搜索到指定的账户,sn是我用的,不同公司的可能不一样,需要根据自己的实际情况确定ldap_result_id = ldapconn.search(AUTH_LDAP_BASE_DN, ldap.SCOPE_SUBTREE, "(sn={})".format(username), None)# 获取到查询的结果数据result_type, result_data = ldapconn.result(ldap_result_id,1)# 如果查询到了用户就继续验证if(not len(result_data) == 0):try:# 初始化ldap连接ldapconn = ldap.initialize(AUTH_LDAP_SERVER_URI)# 使用刚刚查到的登陆用的DN信息和密码再次登陆一下ldap# 1、如果登陆成功会返回一个类似于右边的一个元祖数据(97, [], 1, [])# 2、如果登陆失败就会抛出一个ldap.INVALID_CREDENTIALS的异常ldapconn.simple_bind_s(result_data[0][0], password)logger.debug("ldap auth success")return self._get_or_create_user(result_data[0])except ldap.INVALID_CREDENTIALS:return Nonereturn Noneelse:return Nonedef _get_or_create_user(self, user_info=()):# 此处去应用的数据库查询用户的权限等信息,如果数据库没有这个用户,需要将用户信息持久化到数据库中去####return user

引用

user = LDAPBackend().authenticate(username=username, password=password)

python实现ldap接入相关推荐

  1. 基于python实现微信接入ChatGpt进行自动回复

    基于python实现微信接入ChatGpt进行自动回复 教程说明 下载和使用python库 如何下载python库 如何使用python库 导入python库 chatgpt部分 申请openai的k ...

  2. Python使用LDAP做用户认证

    LDAP(Light Directory Access Portocol)是轻量目录访问协议,基于X.500标准,支持TCP/IP. LDAP目录以树状的层次结构来存储数据.每个目录记录都有标识名(D ...

  3. Python免费快速接入图灵机器人接口

    图灵机器人相信大家并不陌生.通过图灵机器人,开发者和厂商能够以高效的方式创建专属的聊天机器人.客服机器人.领域对话问答机器人.儿童/服务机器人等.下面给大家见到那介绍如何通过Python(2.7版本) ...

  4. SubversionEdge安装及ldap接入

    系统版本:centos 7 软件版本:CollabNetSubversionEdge-5.2.3_linux-x86_64.tar.gz JDK:要求1.6以上 python:Python 2.4 t ...

  5. python 天猫精灵_GitHub - IsMrX/ioT: Python MQTT oauth2 接入到天猫精灵

    ioT MQTT 接入到天猫精灵 1.带完整oauth2认证 2.访问api接口,可自定义添加多种物联网设备 依赖: python版本: 3.5 django版本: 2.2.2 mysqlclient ...

  6. python自动回复qq消息_基于python使用qqbot接入qq做一个简单的文字消息自动回复

    qqbot是一个免费开源的基于smartqq的python插件,如果默认安装有pip,则可以直接在命令行下执行:pip install qqbot安装qqbot,安装成功后可以在命令行输入qqbot ...

  7. python对接ldap

    ldap简介: LDAP(Light Directory Access Portocol),它是基于X.500标准的轻量级目录访问协议 目录是一个为查询.浏览和搜索而优化的数据库,它成树状结构组织数据 ...

  8. Python使用微信接入图灵机器人

    1.wxpy库介绍 wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展. 文档地址:https://wxpy.readthedocs.io 从 PYPI 官 ...

  9. Python通过LDAP验证、查找用户(class,logging)

    定义一个类,用于初始化ldap连接,验证.查找用户等功能 # -*- coding: UTF-8 -*- import sys reload(sys) sys.setdefaultencoding(' ...

最新文章

  1. oracle 查重复_日常答疑|MySQL删除重复数据踩过得坑
  2. java 套娃_【leetcode编程题目354】俄罗斯套娃
  3. rsa 模数 指数转换 c语言_模数转换,你必须知道的8个经典ADC转换电路方案
  4. asp.net html2canvas,Vue 结合html2canvas和jsPDF实现html页面转pdf
  5. No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? 问题
  6. linux的一些基本命令
  7. matlab练习程序(径向模糊1)
  8. 还在担心快应用没流量?全场景新玩法来袭!
  9. SQL语句如何判断某字段是以字母开头而不是汉字开头
  10. jQuery知识(转)
  11. Vue源码后记-vFor列表渲染(3)
  12. knn约会_出色的在线约会预订系统应具备的5个功能
  13. tensorflow CNN常用函数汇总
  14. matlab语言定义变量类型,matlab定义变量-MATLAB,变量
  15. C语言贪心算法——找钱
  16. Ant Design Vue+vue2.x图片上传数量限制(亲测有效)
  17. 战略管理学习---第2章 战略目标
  18. 为什么 securely empty 那么慢?
  19. PHP中文转换为数组,PHP文本处理之中文汉字字符串转换为数组
  20. 中小企业常遇到这些问题,看APS系统是如何解决的

热门文章

  1. 页面性能的基础因素 - 《Designing for Performance》
  2. Silverlight 5 RC新特性探索系列:13.Silverlight 5 RC 新增对并行任务库(TPL)的支持
  3. 网交会引发的新交易机会
  4. SAP BW BEx工具集简单介绍【AV+PPT】
  5. 如何做好生产现场管理及信息化应用
  6. 电脑硬件故障的几种简单检查方法
  7. 校内网用户为什么那么多?
  8. 【ABAP】获取程序中的Include
  9. 【转:SAP学习篇】Fiori 的基本架构
  10. 【MM模块】Source Lists 货源清单