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实现ip查询示例
Mar 26 Python
Python tkinter事件高级用法实例
Jan 31 Python
使用pygame模块编写贪吃蛇的实例讲解
Feb 05 Python
Python 实现使用dict 创建二维数据、DataFrame
Apr 13 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
Nov 06 Python
python小程序基于Jupyter实现天气查询的方法
Mar 27 Python
Django模板之基本的 for 循环 和 List内容的显示方式
Mar 31 Python
Python运行提示缺少模块问题解决方案
Apr 02 Python
如何在django中运行scrapy框架
Apr 22 Python
Django分组聚合查询实例分享
Apr 29 Python
Python3 pywin32模块安装的详细步骤
May 26 Python
keras 实现轻量级网络ShuffleNet教程
Jun 19 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
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
Using the TextRange Object
2006/10/14 Javascript
javascript RadioButtonList获取选中值
2009/04/09 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
Jquery判断$("#id")获取的对象是否存在的方法
2013/09/25 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
详解Vue2中组件间通信的解决全方案
2017/07/28 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
vue3.0 上手体验
2020/09/21 Javascript
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
python把1变成01的步骤总结
2019/02/27 Python
Python OpenCV 使用滑动条来调整函数参数的方法
2019/07/08 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
SQL数据库笔试题
2016/03/08 面试题
某科技软件测试面试题
2013/05/19 面试题
入党自荐书范文
2014/03/09 职场文书
《有趣的发现》教学反思
2014/04/15 职场文书
竞选班委演讲稿
2014/04/28 职场文书
小学安全教育月活动总结
2014/07/07 职场文书
导游词之山海关
2019/12/10 职场文书
利用python进行数据加载
2021/06/20 Python
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS
Nginx配置之禁止指定IP访问
2022/05/02 Servers