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迭代用法实例教程
Sep 08 Python
Python使用django搭建web开发环境
Jun 09 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
对python .txt文件读取及数据处理方法总结
Apr 23 Python
python中使用 xlwt 操作excel的常见方法与问题
Jan 13 Python
Python检查ping终端的方法
Jan 26 Python
Python Pandas实现数据分组求平均值并填充nan的示例
Jul 04 Python
Python3实现汉语转换为汉语拼音
Jul 08 Python
python增加图像对比度的方法
Jul 12 Python
Python 存取npy格式数据实例
Jul 01 Python
用python进行视频剪辑
Nov 02 Python
Python jieba库分词模式实例用法
Jan 13 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
JpGraph php柱状图使用介绍
2011/08/23 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
mongodb和php的用法详解
2019/03/25 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
JS版网站风格切换实例代码
2008/10/06 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
2014/09/10 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
js制作支付倒计时页面
2016/10/21 Javascript
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
Python程序语言快速上手教程
2012/07/18 Python
Python 2与Python 3版本和编码的对比
2017/02/14 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
python 如何对logging日志封装
2020/12/02 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
临床医学应届生求职信
2013/11/06 职场文书
暑期实践思想汇报
2014/01/06 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
法律专业自荐信
2014/06/03 职场文书
民主评议党员总结
2014/10/20 职场文书
人事主管岗位职责
2015/02/04 职场文书
浅谈Python numpy创建空数组的问题
2021/05/25 Python
Golang解析JSON对象
2022/04/30 Golang