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 25 Python
Python将xml和xsl转换为html的方法
Mar 10 Python
Python分治法定义与应用实例详解
Jul 28 Python
PyQt5固定窗口大小的方法
Jun 18 Python
如何使用Python实现斐波那契数列
Jul 02 Python
Python3.7安装keras和TensorFlow的教程图解
Jun 18 Python
python 遍历pd.Series的index和value
Nov 26 Python
Django 限制访问频率的思路详解
Dec 24 Python
OpenCV图片漫画效果的实现示例
Aug 18 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
Sep 29 Python
python实现自动打卡的示例代码
Oct 10 Python
Python实现给PDF添加水印的方法
Jan 25 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
牡丹941资料
2021/03/01 无线电
深入php self与$this的详解
2013/06/08 PHP
如何使用php判断所处服务器操作系统的类型
2013/06/20 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
Smarty模板类内部原理实例分析
2019/07/03 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
xmlHTTP实例
2006/10/24 Javascript
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
jquery uaMatch源代码
2011/02/14 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
原生js代码能实现call和bind吗
2019/07/31 Javascript
ElementUI radio组件选中小改造
2019/08/12 Javascript
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
python判断字符串是否包含子字符串的方法
2015/03/24 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
Python基于WordCloud制作词云图
2019/11/29 Python
新西兰廉价汽车租赁:Snap Rentals
2018/09/14 全球购物
SQL Server面试题
2013/04/04 面试题
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
中药学自荐信
2014/06/15 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
2014年售票员工作总结
2014/11/19 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
导游词之介休绵山
2019/12/31 职场文书
Nginx 常用配置
2022/05/15 Servers