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接收多播数据的代码
Mar 01 Python
Python yield 小结和实例
Apr 25 Python
Python入门之modf()方法的使用
May 15 Python
Python访问纯真IP数据库脚本分享
Jun 29 Python
Python多维/嵌套字典数据无限遍历的实现
Nov 04 Python
python学习必备知识汇总
Sep 08 Python
[原创]pip和pygal的安装实例教程
Dec 07 Python
Python3.x爬虫下载网页图片的实例讲解
May 22 Python
python实现简单的单变量线性回归方法
Nov 08 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
May 27 Python
python转化excel数字日期为标准日期操作
Jul 14 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
ADODB的数据库封包程序库
2006/12/31 PHP
PHP实现用户认证及管理完全源码
2007/03/11 PHP
php中定义网站根目录的常用方法
2010/08/08 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
2012/02/22 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
JavaScript OOP面向对象介绍
2010/12/02 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
vue增加强缓存和版本号的实现方法
2019/05/01 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
python读取word文档的方法
2015/05/09 Python
Python使用gensim计算文档相似性
2016/04/10 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
班级课外活动总结
2014/07/09 职场文书
2015年公司新年寄语
2014/12/08 职场文书
社会治安综合治理责任书
2015/01/29 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python