python-ldap实现登录案例
2024-08-29 09:37:22
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
最新文章
- jquery的each
- vertical-align 笔记
- linux 定时 svn 代码更新,配置文件不修改
- hdu 1805Expressions(二叉树构造的后缀表达式)
- CSS 高级:尺寸、分类、伪类、伪元素
- Hyper-V网络配置
- [转载]EasyUI Pagination 分页的两种做法
- spring ioc aop 原理
- PHP机器学习库php-ml的简单测试和使用
- 搭建一个属于自己的webpack config(-)
- leetcode题解 6.ZigZag Conversion
- 荣耀MagicBook黑苹果(i7)High Sierra 10.13.6
- macOS &; USB stick
- 基于Gitlab统计代码行--统计所有仓库、所有提交人的代码总行数(新增加-删除)
- HighCharts-动态配置csv格式数据
- o2o优惠券使用预测
- linux 学习之路(学linux必看)
- ELK系列三:Elasticsearch的简单使用和配置文件简介
- 深度学习RNN实现股票预测实战(附数据、代码)
- C语言printf
热门文章
- Atitit 图像处理知识点  知识体系 知识图谱
- Zabbix监控系统深度实践
- java学习笔记--this 关键字的理解
- 细数改善WPF应用程序性能的10大方法
- hadoop安装遇到的各种异常及解决办法
- vue隐藏APP启动时显示的{{}}
- KnockoutJS 3.X API 第四章 表单绑定(10) textInput、hasFocus、checked绑定
- 专为设计师而写的GitHub快速入门教程
- 手动为php安装memcached扩展模块
- 【转】“正由另一进程使用,因此该进程无法访问该文件”的问题&;解决方法