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二分法实现实例
Nov 21 Python
理解python多线程(python多线程简明教程)
Jun 09 Python
深入理解python中的atexit模块
Mar 07 Python
利用python实现xml与数据库读取转换的方法
Jun 17 Python
python基础学习之如何对元组各个元素进行命名详解
Jul 12 Python
Django管理员账号和密码忘记的完美解决方法
Dec 06 Python
Python中psutil的介绍与用法
May 02 Python
Python正则表达式实现简易计算器功能示例
May 07 Python
教你如何编写、保存与运行Python程序的方法
Jul 12 Python
python中re模块知识点总结
Jan 17 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
Jun 22 Python
Python必备技巧之字符数据操作详解
Mar 23 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
php2html php生成静态页函数
2008/12/08 PHP
php cli 小技巧
2013/06/03 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
开启PHP的伪静态模式
2015/12/31 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
用jquery等比例控制图片宽高的具体实现
2014/01/28 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
浅谈JS继承_借用构造函数 & 组合式继承
2016/08/16 Javascript
简单的js计算器实现
2016/10/26 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
js获取form表单中name属性的值
2019/02/27 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
理解python多线程(python多线程简明教程)
2014/06/09 Python
python中split方法用法分析
2015/04/17 Python
Python中垃圾回收和del语句详解
2018/11/15 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
Love, Bonito国际官网:新加坡女装品牌
2021/03/13 全球购物
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
C语言笔试题回忆
2015/04/02 面试题
NULL是什么,它是怎么定义的
2015/05/09 面试题
为什么要做架构设计
2015/07/08 面试题
《老王》教学反思
2014/02/23 职场文书
报告会主持词
2014/04/02 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
先进基层党组织材料
2014/12/25 职场文书
研究生简历自我评
2015/03/11 职场文书
tomcat默认最大连接数及相关调整方法
2022/05/06 Servers
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers