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 相关文章推荐
安装dbus-python的简要教程
May 05 Python
用tensorflow构建线性回归模型的示例代码
Mar 05 Python
Django框架实现逆向解析url的方法
Jul 04 Python
Python数据类型之Set集合实例详解
May 07 Python
python实现通过队列完成进程间的多任务功能示例
Oct 28 Python
numpy:np.newaxis 实现将行向量转换成列向量
Nov 30 Python
Python pandas如何向excel添加数据
May 22 Python
使用Keras构造简单的CNN网络实例
Jun 29 Python
Python 如何对文件目录操作
Jul 10 Python
Python 多进程原理及实现
Dec 21 Python
python 使用openpyxl读取excel数据
Feb 18 Python
python 基于pygame实现俄罗斯方块
Mar 02 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中的串行化变量和序列化对象
2006/09/05 PHP
php 删除cookie和浏览器重定向
2009/03/16 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
推荐20家国外的脚本下载网站
2011/04/28 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
JavaScript实现图片轮播的方法
2015/07/31 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
实现微信小程序的wxml文件和wxss文件在webstrom的支持
2017/06/12 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
js实现轮播图特效
2020/05/28 Javascript
解决vue页面渲染但dom没渲染的操作
2020/07/27 Javascript
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
Python中的匿名函数使用简介
2015/04/27 Python
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
Jupyter加载文件的实现方法
2020/04/14 Python
英国独特礼物想法和个性化礼物网站:notonthehighstreet.com
2018/04/16 全球购物
2013年大学生的自我鉴定
2013/10/24 职场文书
英语自荐信范文
2013/12/11 职场文书
倡议书格式模板
2014/05/13 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python