Python ldap实现登录实例代码


Posted in Python onSeptember 30, 2016

下面一段代码是小编给大家介绍的Python ldap实现登录实例代码,一起看看吧

ldap_config = {
  'ldap_path': 'ldap://xx.xx.xx.xx:389',
  'base_dn': 'ou=users,dc=ledo,dc=com',
  'ldap_user': 'uid=reporttest,ou=users,dc=ledo,dc=com',
  'ldap_pass': '111111.0',
  'original_pass': '111111.0'
}
ldap_message = {
  0: 0, #'ok'
  1: 1, #'用户名或密码错误'
  2: 2, #ldap验证异常'
}
import ldap
import base64
import hashlib
from config_message import ldap_config, ldap_message
class LDAP_API(object):
  _ldap_path = ldap_config['ldap_path']
  _base_dn = ldap_config['base_dn']
  _ldap_user = ldap_config['ldap_user']
  _ldap_pass = ldap_config['ldap_pass']
  _original_pass = ldap_config['original_pass']
  # 连接ldap服务器
  def __init__(self):
    try:
      self.ldapconn = ldap.initialize(self._ldap_path)
      self.ldapconn.protocal_version = ldap.VERSION3
      self.ldapconn.simple_bind(self._ldap_user, self._ldap_pass)
    except ldap.LDAPError, e:
      print e
  # 验证用户登录
  def ldap_check_login(self, username, password):
    obj = self.ldapconn
    searchScope = ldap.SCOPE_SUBTREE
    # searchFilter = '(&(cn='+username+')(userPassword='+password+'))'
    searchFilter = 'uid=' + username
    try:
      obj.search(self._base_dn, searchScope, searchFilter, None) # id--2
      # 将上一步计算的id在下面运算
      result_type, result_data = obj.result(2, 0)
      if result_type != ldap.RES_SEARCH_ENTRY:
        return {'status': ldap_message[1], 'data': ''}
      dic = result_data[0][1]
      l_realname = dic['sn'][0]
      l_password = dic['userPassword'][0]
      md_password = LDAP_API.hash_md5(password)
      if l_password in (password, md_password):
        return {'status': ldap_message[0], 'data': l_realname}
      else:
        return {'status': ldap_message[1], 'data': ''}
    except ldap.LDAPError, e:
      return {'status': ldap_message[2], 'data': ''}
  @staticmethod
  def hash_md5(data):
    md = hashlib.md5()
    md.update(str(data))
    a = md.digest()
    b = '{MD5}' + base64.b64encode(a)
    return b
Python 相关文章推荐
vc6编写python扩展的方法分享
Jan 17 Python
Python中使用多进程来实现并行处理的方法小结
Aug 09 Python
Python数据结构与算法之列表(链表,linked list)简单实现
Oct 30 Python
Python中交换两个元素的实现方法
Jun 29 Python
python实现爬取图书封面
Jul 05 Python
Selenium定位元素操作示例
Aug 10 Python
python3 面向对象__类的内置属性与方法的实例代码
Nov 09 Python
Pandas Shift函数的基础入门学习笔记
Nov 16 Python
Python qrcode 生成一个二维码的实例详解
Feb 12 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
Feb 21 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
python用Configobj模块读取配置文件
Sep 26 Python
python之Socket网络编程详解
Sep 29 #Python
python 排序算法总结及实例详解
Sep 28 #Python
一些常用的Python爬虫技巧汇总
Sep 28 #Python
Python三级目录展示的实现方法
Sep 28 #Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 #Python
python 采集中文乱码问题的完美解决方法
Sep 27 #Python
20招让你的Python飞起来!
Sep 27 #Python
You might like
php获取网页内容方法总结
2008/12/04 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
php实现session自定义会话处理器的方法
2015/01/27 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
锋利的jQuery 要点归纳(一) jQuery选择器
2010/03/21 Javascript
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
ExtJS中设置下拉列表框不可编辑的方法
2014/05/07 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
详解webpack 热更新优化
2018/09/13 Javascript
微信小程序如何使用globalData的方法
2019/06/06 Javascript
新手如何快速理解js异步编程
2019/06/24 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
简单介绍Python中的round()方法
2015/05/15 Python
python编写Logistic逻辑回归
2020/12/30 Python
Python 爬虫实现增加播客访问量的方法实现
2019/10/31 Python
Python读取JSON数据操作实例解析
2020/05/18 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
墨尔本照明批发商店:Mica Lighting
2017/12/28 全球购物
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
妇科医生自荐信
2013/11/05 职场文书
2014信息公开实施方案
2014/02/22 职场文书
员工团队活动方案
2014/08/28 职场文书
销售人才自我评价范文
2014/09/27 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle