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 捕获 shell/bash 脚本的输出结果实例
Jan 04 Python
python爬取亚马逊书籍信息代码分享
Dec 09 Python
使用python爬虫获取黄金价格的核心代码
Jun 13 Python
flask中过滤器的使用详解
Aug 01 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
Python3离线安装Requests模块问题
Oct 13 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
Python使用itcaht库实现微信自动收发消息功能
Jul 13 Python
python破解同事的压缩包密码
Oct 14 Python
python如何利用paramiko执行服务器命令
Nov 07 Python
python不同版本的_new_不同点总结
Dec 09 Python
Python基础之函数嵌套知识总结
May 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
动易数据转成dedecms的php程序
2007/04/07 PHP
php 随机生成10位字符代码
2009/03/26 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
JS使用getComputedStyle()方法获取CSS属性值
2014/04/23 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
jQuery插件实现的日历功能示例【附源码下载】
2018/09/07 jQuery
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
python使用webbrowser浏览指定url的方法
2015/04/04 Python
在Django中创建动态视图的教程
2015/07/15 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
python中执行shell的两种方法总结
2017/01/10 Python
python django 增删改查操作 数据库Mysql
2017/07/27 Python
Python内置模块ConfigParser实现配置读写功能的方法
2018/02/12 Python
python实现顺时针打印矩阵
2019/03/02 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
python能做哪方面的工作
2020/06/15 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
介绍一下Java的安全机制
2012/06/28 面试题
计算机专业个人求职信范例
2013/09/23 职场文书
十佳党员事迹材料
2014/08/28 职场文书
诺贝尔奖获得者名言100句:句句启人心智,值永久收藏
2019/08/09 职场文书
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle
Python PIL按比例裁剪图片
2022/05/11 Python
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python