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命令行参数解析模块getopt使用实例
Apr 13 Python
在Python的Django框架中编写编译函数
Jul 20 Python
python中datetime模块中strftime/strptime函数的使用
Jul 03 Python
python操作excel的方法
Aug 16 Python
python实现的登录与提交表单数据功能示例
Sep 25 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
Oct 14 Python
python通过实例讲解反射机制
Oct 17 Python
python读取与处理netcdf数据方式
Feb 14 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
Feb 17 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 Python
python上下文管理器异常问题解决方法
Feb 07 Python
Python基础之常用库常用方法整理
Apr 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
php木马攻击防御之道
2008/03/24 PHP
服务器web工具 php环境下
2010/12/29 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
利用“多说”制作留言板、评论系统
2015/07/14 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
解决jquery插件:TypeError:$.browser is undefined报错的方法
2015/11/21 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
2015/12/19 Javascript
理解javascript对象继承
2016/04/17 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
JS作用域链详解
2017/06/26 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
2018/03/09 jQuery
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
次世代生活态度:Hypebeast
2018/07/05 全球购物
eDreams德国:南欧领先的在线旅游公司
2020/12/07 全球购物
运动会800米加油稿
2014/02/22 职场文书
高中地理教学反思
2016/02/19 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS