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

链接    http://blog.csdn.net/shanliangliuxing/article/details/8266267

最新文章

  1. jquery的each
  2. vertical-align 笔记
  3. linux 定时 svn 代码更新,配置文件不修改
  4. hdu 1805Expressions(二叉树构造的后缀表达式)
  5. CSS 高级:尺寸、分类、伪类、伪元素
  6. Hyper-V网络配置
  7. [转载]EasyUI Pagination 分页的两种做法
  8. spring ioc aop 原理
  9. PHP机器学习库php-ml的简单测试和使用
  10. 搭建一个属于自己的webpack config(-)
  11. leetcode题解 6.ZigZag Conversion
  12. 荣耀MagicBook黑苹果(i7)High Sierra 10.13.6
  13. macOS & USB stick
  14. 基于Gitlab统计代码行--统计所有仓库、所有提交人的代码总行数(新增加-删除)
  15. HighCharts-动态配置csv格式数据
  16. o2o优惠券使用预测
  17. linux 学习之路(学linux必看)
  18. ELK系列三:Elasticsearch的简单使用和配置文件简介
  19. 深度学习RNN实现股票预测实战(附数据、代码)
  20. C语言printf

热门文章

  1. Atitit 图像处理知识点  知识体系 知识图谱
  2. Zabbix监控系统深度实践
  3. java学习笔记--this 关键字的理解
  4. 细数改善WPF应用程序性能的10大方法
  5. hadoop安装遇到的各种异常及解决办法
  6. vue隐藏APP启动时显示的{{}}
  7. KnockoutJS 3.X API 第四章 表单绑定(10) textInput、hasFocus、checked绑定
  8. 专为设计师而写的GitHub快速入门教程
  9. 手动为php安装memcached扩展模块
  10. 【转】“正由另一进程使用,因此该进程无法访问该文件”的问题&解决方法