Python ldap实现登录实例代码

下面一段代码是小编给大家介绍的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,'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中,可以使用wave模块来读取双通道(立...
简介 一个用python实现的科学计算,包括: 1、一个强大的N维...
使用爬虫利器 Playwright,轻松爬取抖查查数据 我们先分析登...
轻松爬取灰豚数据的抖音商品数据 调用两次登录接口实现模拟登...
成功绕过阿里无痕验证码,一键爬取飞瓜数据 飞瓜数据的登录接...
一文教你从零开始入门蝉妈妈数据爬取,成功逆向破解数据加密...