AD用户登录验证,遍历OU(LDAP)
先安装python-ldap模块
1.验证AD用户登录是否成功
import sqlite3,ldapdomainname='cmr\\' username='zhangsan' ldapuser = domainname + username ldappass='password' ldappath='ldap://192.168.200.20:389/' baseDN='OU=ouname,DC=d1,DC=d2,DC=com'l=ldap.initialize(ldappath) l.protocol_version = ldap.VERSION3 try:l.simple_bind_s(ldapuser,ldappass)#print l.simple_bind_s(ldapuser,ldappass) except Exception,err: #ldap.LDAPErrorprint err.message['desc'] #DC无法连通,或凭据错误,报错也不同
2.验证用户queryusername是否存在
import ldap domainname='dname\\' username='authname' queryusername ='queryusername' ldapuser = domainname + username ldappass='password' ldappath='ldap://192.168.200.20:389/' baseDN='OU=拍,DC=d1,DC=d2,DC=com'try:l = ldap.initialize(ldappath)l.protocol_version = ldap.VERSION3#l.simple_bind(ldapuser,ldappass) l.bind_s(ldapuser,ldappass)searchScope = ldap.SCOPE_SUBTREEsearchFiltername = "sAMAccountName" #通过samaccountname查找用户retrieveAttributes = NonesearchFilter = '(' + searchFiltername + "=" + queryusername +')' #searchFilter = '(' + searchFiltername + "=" + username +'*)' 加星号表示模糊查找ldap_result =l.search_s(baseDN, searchScope, searchFilter, retrieveAttributes) #返回结果为list或None#searchFilter = '(&(objectClass=person)(sAMAccountName=username))'#ldap_result =l.search(baseDN, searchScope, searchFilter, retrieveAttributes)#ldap_result =l.search_ext_s(baseDN, searchScope, searchFilter, retrieveAttributes)#print ldap_resultif len(ldap_result) == 0:print queryusername + ' Doesnot Exist' except ldap.LDAPError, e:print e finally:l.unbind_s() #解除ldap bindingdel l
3.遍历某个OU下所有用户
# -*- coding: UTF-8 -*-import ldap domainname='umr\\' username='authusername' ldapuser = domainname + username ldappass='password' ldappath='ldap://192.168.200.20:389/' baseDN='OU=ServerAdmin,DC=umr,DC=uu,DC=com'try:l = ldap.initialize(ldappath)l.protocol_version = ldap.VERSION3#l.simple_bind(ldapuser,ldappass) l.bind_s(ldapuser,ldappass)searchScope = ldap.SCOPE_SUBTREEretrieveAttributes = NonesearchFilter = '(&(objectClass=person))' #遍历该OU下所有用户,包含子OUldap_result =l.search_s(baseDN, searchScope, searchFilter, retrieveAttributes) #返回结果为list或Nonefor pinfor in ldap_result:#pinfor是一个tuple,第一个元素是该用户的CN,第二个元素是一个dict,包含有用户的所有属性if pinfor[1]:p=pinfor[1]sAMAccountName = p['sAMAccountName'][0] #返回值是一个listdisplayName = p['displayName'][0]#如果用户的某个属性为空,则dict中不会包含有相应的keyif 'department' in p:department = p['department'][0]else:department = Noneprint sAMAccountName,displayName,departmentif len(ldap_result) == 0:print queryusername + ' Doesnot Exist' except ldap.LDAPError, e:print e finally:l.unbind_s() #解除ldap bindingdel l
参考:http://blog.sina.com.cn/s/blog_69ac00af01012e0g.html
http://www.vpsee.com/2012/11/use-python-ldap-to-create-read-delete-upgrade-ldap-entries/
https://www.python-ldap.org/doc/html/ldap.html#ldap.LDAPObject.search
AD用户登录验证,遍历OU(LDAP)相关推荐
- linux 加入ad 用ssh,使用samba验证AD用户,允许AD用户登录到linux
使用samba验证AD用户,允许AD用户登录到linux 2007年06月26日 星期二 14:10 1.先把samba加入到AD域中 2.在smb.conf中添加一行,让登录进来的用户使用bash ...
- 根据当前登录域账号 获取AD用户姓名和所在OU目录
根据当前登录域账号 获取AD用户姓名和所在OU目录 #region 根据当前登录域账号 获取AD用户姓名和所在OU目录/// <summary>/// 根据当前登录域账号 获取AD用户姓名 ...
- 使用SSH框架实现用户登录验证
今天,写一个非常简单的通过struts+hibernate+spring的集成来实现用户登录验证的例子,让大家了解一下三者是如何是整合的. 我们可以通过myeclipse的向导,生成相应的环境搭建,如 ...
- ajax登录验证的原理,ajax用户登录验证-get和post提交方式,与工作原理—2018-8-15...
ajax用户登录验证: 实例 html> Ajax实战:表单验证 用户登录 邮箱: 密码: 提交 let btn = document.getElementsByTagName('button' ...
- python登录验证程序_Python模拟用户登录验证
本文实例为大家分享了Python模拟用户登录验证的具体代码,供大家参考,具体内容如下 1.功能简介 此程序模拟用户登录验证的过程,实现用户名输入.黑名单检测.用户有效性判别.密码输入及验证等.用户在3 ...
- php 语法验证_PHP用户登录验证模块
这篇文章介绍的内容是关于PHP用户登录验证模块 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 实现用户登录 >>>1 创建登录表单 登录表单的HTML代码如下: U ...
- JavaWeb 实验 Servlet用户登录验证
实验2.2 Servlet用户登录验证 实验内容: 编写JSP程序,实现用户提交登录表单给Servlet,由Servlet 查询数据库(模拟查询,不用真的连接数据库查询),对用户是否存在进行验证. 实 ...
- 数据库用户登录验证及注册功能实现
数据库用户登录验证及注册功能实现 1.mysql数据库安装 2.解决navicat连接mysql的密码错误问题 3.创建数据库.用户表.插入数据 (1)进入mysql数据库 (2) 创建数据库dnn_ ...
- 基于 JSP + Servlet 的用户登录验证
综合案例--基于 JSP + Servlet 的用户登录验证 [例6-1] 实现一个简单的用户登录验证程序,如果用户名是 abc ,密码是 123,则显示欢迎用户的信息,否则显示"用户名或密 ...
最新文章
- FastDFS安装与使用
- Win7环境下搭建GO开发平台——SublimeText 2
- 交换机的端口工作模式
- Redis 热点 Key 如何发现?又该如何解决?
- 【算法】一个简单的线性判别分析(LDA)原理
- Objective-C Memory Management Being Exceptional 异常处理与内存
- python字符串处理函数总结
- Sql 语句里 As后的竟然可以和前边的字段重名
- 4.3 数值分析: 简单迭代法的构造和收敛条件
- “头号电脑黑客” 凯文.米特尼克 与 中国台湾的”电脑鬼才“陈盈豪
- 一个屌丝程序猿的人生(三十二)
- python 制作淘宝秒杀脚本
- 熬夜慢性自杀全过程曝光 | 程序员入坑必读
- 【项目合作】寻视频监控智慧城管相关技术 SDK
- matlab方程求解的实验报告,用matlab对微分方程求解实验报告.doc
- 【JDK编译】Centos7编译OpenJDK7
- 超级表格教你怎样“零”成本制作签到系统
- js-图片的轮播-设置主要界面-和鼠标点击进行切换图片
- 2013版VBA帮助文档
- 【Axure视频教程】拖拉拽移动地图
热门文章
- Python缓存提高递归代码性能lru_cache
- php茶餐厅销售管理系统的设计与实现
- Ajax+MySQL+PHP+jQuery实现异步请求页面并显示数据
- 彻底卸载 Visual Studio 2019【完整版】
- 掘金万亿二手市场,闲鱼、转转已占据90.9%市场份额
- 工业相机的传感器靶面大小
- 传统数据库走向消亡?
- 《Unsupervised Learning of Depth and Ego-Motion from Video》读书笔记
- cn2.php中文,Python使用cn2an实现中文数字与阿拉伯数字的相互转换
- echarts 堆叠柱状图label显示总和