文档章节

使用包ldap3进行Python的LDAP操作2

shawnplaying
 shawnplaying
发布于 2016/08/16 17:49
字数 317
阅读 1307
收藏 1

我的ldap操作代码。

访问LDAP:

import os
import hashlib
import unittest

import sysmgt.sysconf as sysconf

from ldap3 import Connection,Server

#LDAP服务器信息存放在配置文件中。
_server_ip= sysconf.get_property('ldap.server')
_user_id  = sysconf.get_property('ldap.userid')
_passwd   = sysconf.get_property('ldap.passwd')
_port     = sysconf.get_property('ldap.port')
_baseDN   = sysconf.get_property('ldap.baseDN')

# bind就等于login
_connection = Connection(Server(_server_ip,port=int(_port)),user=_user_id,password=_passwd,auto_bind=True)

def test_LDAP():
	print 'server_ip = ',_server_ip
	print 'user_id   = ',_user_id
	print 'passwd    = ',_passwd
	print 'port      = ',_port
	print 'baseDN    = ',_baseDN
	server=Server(_server_ip,port=int(_port))
	conn=Connection(server,user=_user_id,password=_passwd)
	print server
	print conn
	print conn.bind()
	#print server.info
	#print server.schema
	print conn.extend.standard.who_am_i()
	print hasattr(conn,'entries')
	conn.search('ou=users,'+_baseDN,'(&(uid=hanmj1)(objectclass=person))',attributes=['uid','mail','userPassword'])
	if hasattr(conn,'entries'):
		ens=conn.entries
		for e in ens:
			print '*'*20
			print e
			print e['userPassword']
			print type(e['userPassword'])
			#print dir(e['userPassword'])
			print _checkPassword(str(e['userPassword']),'hanmj1x')
			#print dir(e)

检查密码是否正确:

def check_user(username,password):
	'''
	connection to LDAP and check whether user exists
	return str and '' means password correct, otherwise it means error message
	'''
	_connection.search('ou=users,'+_baseDN,'(&(uid='+username+')(objectclass=person))',attributes=['uid','userPassword'])
	if hasattr(_connection,'entries'):
		ens=_connection.entries
		if len(ens)==1:
			pwd=str(ens[0]['userPassword'])
			if _checkPassword(pwd,password):
				return ''
			else:
				return 'password not correct'
		elif len(ens)>1:
			return 'too many users'
	return 'user not found'


def _makeSecret(password):
    salt = os.urandom(4)
    h = hashlib.sha1(password)
    h.update(salt)
    return "{SSHA}" + encode(h.digest() + salt)

def _checkPassword(challenge_password, password):
    challenge_bytes = decode(challenge_password[6:])
    digest = challenge_bytes[:20]
    salt = challenge_bytes[20:]
    hr = hashlib.sha1(password)
    hr.update(salt)
    return digest == hr.digest()
'''
>>> challenge_password = _makeSecret('testing123')

>>> challenge_password
    '{SSHA}0c0blFTXXNuAMHECS4uxrj3ZieMoWImr'

>>> _checkPassword(challenge_password, 'testing123')
    True

>>> _checkPassword(challenge_password, 'testing124')
    False
'''

 

© 著作权归作者所有

共有 人打赏支持
shawnplaying
粉丝 14
博文 128
码字总数 70642
作品 0
海淀
系统管理员
私信 提问
加载中

评论(2)

shawnplaying
shawnplaying

引用来自“abelhu”的评论

那个 setting 里 ldap需要配置什么,可以发下吗哥?
你说啥?没明白。
abelhu
abelhu
那个 setting 里 ldap需要配置什么,可以发下吗哥?
使用包ldap3进行Python的LDAP操作

背景:我的管理平台系统需要在权限验证方面与ldap集成,所以需要使用python操作LDAP。 本来想使用python-ldap,但是安装过程中出现如下问题,而且花费很多时间精力没有解决该问题,所以放弃p...

shawnplaying
2016/08/16
1K
1
jumpserver 3.0 开源跳板机环境搭建

摘要: Jumpserver 是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。 特点: 完全开源,GPL授权 Python编写,容易再次开发 ...

YU文武貝
07/14
0
0
Python模块详解

Python为开发人员提供了丰富的模块,通过这些模块,我们就可快速开发出功能强大的程序。本笔记记录我所接触或学习过的Python模块,为想学习Python的朋友提供一个参考。 Table of Contents 1....

长平狐
2012/09/20
2.9K
0
Review board整合ldap

Review board整合ldap Review board本身已经支持ldap登录,我们需要做的就是一些安装、配置工作。首先review board需要python-ldap,如果没有安装,我们在打开ldap配置页面,就会提醒LDAP au...

youthflies
2014/07/15
0
0
python——虚拟环境之virtualenv(windows10,64位)

1 问题   当我们拥有两个甚至多个项目A、B、C......,各个项目正常运行需求的python运行环境都不相同。而默认情况下,不管哪个项目,使用的都是全局的Python环境。上述情况,造成的问题就是...

翠竹09
08/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ConcurrentHashMap源码解析

初始化 先看看ConcurrentHashMap中几个重要的属性: // 初始化容量大小static final int DEFAULT_INITIAL_CAPACITY = 16;//默认负载因子static final float DEFAULT_LOAD_FACTOR = 0.75f...

grace_233
8分钟前
0
0
java对象的浅拷贝和深拷贝

浅拷贝 java的数据类型有基本数据类型(如:int、long等)和引用数据类型。例如:对象1中有属性a(基本数据类型)和属性b(引用数据类型),在进行浅拷贝到对象2时,属性a复制属性的值给对象...

yangyangyyyy
8分钟前
0
0
SQLServer AlwaysOn在阿里云的前世今生

缘起 早在2015年的时候,随着阿里云业务突飞猛进的发展,SQLServer业务也积累了大批忠实客户,其中一些体量较大的客户在类似大促的业务高峰时RDS的单机规格(规格是按照 内存CPUIOPS 一定比例...

阿里云云栖社区
9分钟前
0
0
ubuntu16.04 LNMP搭建 php7.1

sudo apt-get update sudo apt-get install mysql-server mysql-client sudo apt-add-repository ppa:ondrej/php sudo apt-get update sudo apt-get install php7.1 php7.1-fpm php7.1-cgi p......

一千零一夜个为什么
15分钟前
0
0
阿里云高级技术专家带你全面了解云主机性能评测

钱超,花名西邪,阿里云高级技术专家,超12年老阿里,是云主机性能领域的知名专家。 在目前的云计算测评领域,很多性能测评存在营销的包装,容易引起误导:比如用瞬时性能引导读者得出结论,...

阿里云官方博客
22分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部