Python ldap实现登录实例代码

 更新时间:2016年09月30日 13:59:26   作者:张瑜  
今天给大家分享python idap实现登录的实例代码,代码简单易懂,需要的朋友一起看看吧

下面一段代码是小编给大家介绍的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

相关文章

  • pyecharts如何实现显示数据为百分比的柱状图

    pyecharts如何实现显示数据为百分比的柱状图

    这篇文章主要介绍了pyecharts如何实现显示数据为百分比的柱状图,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Python如何快速上手? 快速掌握一门新语言的方法

    Python如何快速上手? 快速掌握一门新语言的方法

    Python如何快速上手? 这篇文章主要为大家详细介绍了快速掌握一门新语言的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Mac下PyCharm快捷键分享

    Mac下PyCharm快捷键分享

    这篇文章主要介绍了Mac下PyCharm快捷键,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 用Python做一个简单的图书管理系统

    用Python做一个简单的图书管理系统

    这篇文章主要介绍了用Python做一个简单的图书管理系统,有“还书““借阅”“添加书籍”等功能,文中提供了部分实现代码和解决思路,有一定的参考价值,需要的朋友快来一起看看吧
    2023-04-04
  • python实现控制电脑鼠标和键盘,登录QQ的方法示例

    python实现控制电脑鼠标和键盘,登录QQ的方法示例

    这篇文章主要介绍了python实现控制电脑鼠标和键盘,登录QQ的方法,涉及Python基于Button,Controller,Key模块针对键盘、鼠标的控制相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • Python机器学习应用之基于决策树算法的分类预测篇

    Python机器学习应用之基于决策树算法的分类预测篇

    所谓决策树,就是一个类似于流程图的树形结构,树内部的每一个节点代表的是对一个特征的测试,树的分支代表该特征的每一个测试结果,而树的每一个叶子节点代表一个类别。树的最高层是就是根节点
    2022-01-01
  • 使用python搭建代理IP池实现接口设置与整体调度

    使用python搭建代理IP池实现接口设置与整体调度

    在网络爬虫中,代理IP池是一个非常重要的组件,由于许多网站对单个IP的请求有限制,因此,我们需要一个代理IP池,在本文中,我们将使用Python来构建一个代理IP池,然后,我们将使用这个代理IP池来访问我们需要的数据,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2023-12-12
  • Python splitlines使用技巧

    Python splitlines使用技巧

    Python中的splitlines用来分割行。当传入的参数为True时,表示保留换行符 \n。通过下面的例子就很明白了
    2008-09-09
  • 10行Python代码助你整理杂乱无章的文件

    10行Python代码助你整理杂乱无章的文件

    这篇文章主要和大家分享一个简单的小程序,只需要10行Python代码,就能助你整理杂乱无章的文件,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-02-02
  • python字符串排序方法

    python字符串排序方法

    这篇文章主要介绍了python字符串排序方法,基于lambda实现,是非常实用的技巧,需要的朋友可以参考下
    2014-08-08

最新评论