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 相关文章推荐
使用Python编写类UNIX系统的命令行工具的教程
Apr 15 Python
python输出当前目录下index.html文件路径的方法
Apr 28 Python
Python之日期与时间处理模块(date和datetime)
Feb 16 Python
Python字符串格式化的方法(两种)
Sep 19 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
如何用Python合并lmdb文件
Jul 02 Python
python中的decimal类型转换实例详解
Jun 26 Python
对Python中class和instance以及self的用法详解
Jun 26 Python
Python 多线程共享变量的实现示例
Apr 17 Python
Python内存泄漏和内存溢出的解决方案
Sep 26 Python
python日志通过不同的等级打印不同的颜色(示例代码)
Jan 13 Python
python爬虫selenium模块详解
Mar 30 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
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
PHP实现链表的定义与反转功能示例
2018/06/09 PHP
Yii1.1框架实现PHP极光推送消息通知功能
2018/09/06 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
JavaScript 学习笔记(四)
2009/12/31 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
js实现仿百度瀑布流的方法
2015/02/05 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
Vue结合路由配置递归实现菜单栏功能
2020/06/16 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
[52:06]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
PyCharm设置护眼背景色的方法
2018/10/29 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
2020/01/10 Python
TensorFlow实现checkpoint文件转换为pb文件
2020/02/10 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
php优化查询foreach代码实例讲解
2021/03/24 PHP
教师求职自荐信
2014/03/09 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
会议主持词通用版
2019/04/02 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python