文档章节

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

shawnplaying
 shawnplaying
发布于 2016/08/16 17:49
字数 317
阅读 1137
收藏 1
点赞 0
评论 2

我的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
博文 126
码字总数 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 ⋅ 1

pycharm中使用anaconda

source activate python34 # for Linux & Mac# 激活后,会发现terminal输入的地方多了python34的字样,实际上,此时系统做的事情就是把默认2.7环境从PATH中去除,再把3.4对应的命令加入PATH#...

h8b6pk7m7r8 ⋅ 01/07 ⋅ 0

mysql闪回工具binlog2sql 安装使用

软件包下载地址:链接:https://pan.baidu.com/s/15dDeGufVWOgVrfATGWBzaA 密码:gnz8 DBA或开发人员,有时会误删或者误更新数据,如果是线上环境会影响较大,这就需要能快速回滚;而MySQL闪回...

DB蜗牛 ⋅ 05/09 ⋅ 0

Python Scrapy 爬虫(三):部署环境搭建

当我们的爬虫程序开发完成后,应该考虑的事情就是如何将我们的爬虫程序部署到我们的服务器上来运行了。 下面就以 CentOS 作为我们的爬虫程序的部署环境来介绍部署爬虫的第一步:部署环境搭建...

雨林_a1d6 ⋅ 05/29 ⋅ 0

PyQT5速成教程-1 简介与环境搭建

PyQt简介 一个良好的界面是人机交互中十分重要的一环。 Python作为脚本语言,起初并未拥有GUI开发的部分。但随着其开放的扩展性,使得Python不断壮大,有PyQt、Tkinter,PyGUI等GUI Toolkit...

养薛定谔的猫 ⋅ 06/02 ⋅ 0

Python数据科学(八)- 资料探索与资料视觉化

传送门: Python数据科学(一)- python与数据科学应用(Ⅰ) Python数据科学(二)- python与数据科学应用(Ⅱ) Python数据科学(三)- python与数据科学应用(Ⅲ) Python数据科学(四)- 数据收...

_知几 ⋅ 05/22 ⋅ 0

大数据分析挖掘学习方向?数据分析师的就业前景怎么样?

加米谷数据分析挖掘课程明细,从理论到云端实操环境到项目实战,手把手教您从0掌握数据分析与挖掘技术,带您走进数据时代。 第一阶段(python基础) python入门:1、Python版本特性介绍2、P...

加米谷大数据 ⋅ 04/17 ⋅ 0

numpy等python相关的包安装备忘

主要备忘几个问题 1,怎么同时在一台电脑上使用python2和python3 2,怎么安装numpy,matplotlib,igraph,tensorflow等。 1, 同时安装python2和python3 有些情况下需要同时用到python2和pyt...

robin_Xu_shuai ⋅ 2016/12/27 ⋅ 0

Linux环境下的Anaconda安装及使用

Anaconda对于python就相当于Ubuntu对于Linux,即Anaconda是python的一个发行版,将python和许多常用的package打包,方便pythoners直接使用。像virtualenv、pyenv等工具管理虚拟环境,起到的作...

戴千岩 ⋅ 2017/09/24 ⋅ 0

手把手 | 哇!用R也可以跑Python了

     大数据文摘作品   编译:大茜、钱天培   R还是Python?   真是个千古难题!   如果你主要从事数据分析、统计建模和可视化,R大概是你的不二之选。但如果你还想来搞点深度学...

大数据文摘 ⋅ 04/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

说说javascript中的那些专业名词

DOM(Document Object Model) 文档对象模型 BOM(Browser Object Model) 浏览器对象模型 ECMA(European Computer Manufacturer's Association) 欧洲计算机制造商协会 W3C(World Wide Web Conso......

hang1989 ⋅ 24分钟前 ⋅ 0

Bootstrap Wizard 多步表单控件

废话 有一块需求是 有多步表单 点击下一步时触发验证一个范围内的表单,点击上一步或取消,清空表单并返回第一步,点击最后一步提交整个表单的 就找到了这个插件,本来自己写了一个原生的 fo...

无极之岚 ⋅ 39分钟前 ⋅ 0

如何利用Spring Cloud构建起自我修复型分布式系统

利用Netflix所打造的组件及各类大家熟知的工具,我们完全可以顺利应对由微服务以及分布式计算所带来的技术挑战。 在过去一年当中,微服务已经成为软件架构领域一个炙手可热的新名词,而且我们...

harries ⋅ 今天 ⋅ 0

临近实习前的感想

再过两星期就要开始新的一段实习了,想想去年的这个时候也在实习,心中不免思绪万千,也一直想写对2017做个总结,但一直迟迟没有下笔。 2017年的春节,我就开始准备开学后找份实习。那时候就...

无精疯 ⋅ 今天 ⋅ 0

Spring AOP(面向切面编程)

Spring AOP概念: Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后添加额外的功能。通常情况下,AOP把项目中需要在多处用到的功能,比如日志、安全和事物等集中到一个类中处理,而...

霍淇滨 ⋅ 今天 ⋅ 0

人工智能、机器学习、数据挖掘以及数据分析有什么联系?

人工智能是目前炙手可热的一个领域,所有的互联网公司以及各路大迦们纷纷表态人工智能将是下一个时代的革命性技术,可与互联网、移动互联网时代的变更相媲美;AlphaGo在围棋领域战胜人类最顶...

董黎明 ⋅ 今天 ⋅ 0

使用 vue-cli 搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一、 安装 node.js 首先需要安装node环境,可以直接到中...

初学者的优化 ⋅ 今天 ⋅ 0

设计模式 之 享元模式

设计模式 之 享元模式 定义 使用共享技术来有效地支持大量细粒度对象的复用 关键点:防止类多次创建,造成内存溢出; 使用享元模式来将内部状态与外部状态进行分离,在循环创建对象的环境下,...

GMarshal ⋅ 今天 ⋅ 0

SpringBoot集成Druid的最简单的小示例

参考网页 https://blog.csdn.net/king_is_everyone/article/details/53098350 建立maven工程 Pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM......

karma123 ⋅ 今天 ⋅ 0

Java虚拟机基本结构的简单记忆

Java堆:一般是放置实例化的对象的地方,堆分新生代和老年代空间,不断未被回收的对象越老,被放入老年代空间。分配最大堆空间:-Xmx 分配初始堆空间:-Xms,分配新生代空间:-Xmn,新生代的大小一...

算法之名 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部