先安装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)相关推荐

  1. linux 加入ad 用ssh,使用samba验证AD用户,允许AD用户登录到linux

    使用samba验证AD用户,允许AD用户登录到linux 2007年06月26日 星期二 14:10 1.先把samba加入到AD域中 2.在smb.conf中添加一行,让登录进来的用户使用bash ...

  2. 根据当前登录域账号 获取AD用户姓名和所在OU目录

    根据当前登录域账号 获取AD用户姓名和所在OU目录 #region 根据当前登录域账号 获取AD用户姓名和所在OU目录/// <summary>/// 根据当前登录域账号 获取AD用户姓名 ...

  3. 使用SSH框架实现用户登录验证

    今天,写一个非常简单的通过struts+hibernate+spring的集成来实现用户登录验证的例子,让大家了解一下三者是如何是整合的. 我们可以通过myeclipse的向导,生成相应的环境搭建,如 ...

  4. ajax登录验证的原理,ajax用户登录验证-get和post提交方式,与工作原理—2018-8-15...

    ajax用户登录验证: 实例 html> Ajax实战:表单验证 用户登录 邮箱: 密码: 提交 let btn = document.getElementsByTagName('button' ...

  5. python登录验证程序_Python模拟用户登录验证

    本文实例为大家分享了Python模拟用户登录验证的具体代码,供大家参考,具体内容如下 1.功能简介 此程序模拟用户登录验证的过程,实现用户名输入.黑名单检测.用户有效性判别.密码输入及验证等.用户在3 ...

  6. php 语法验证_PHP用户登录验证模块

    这篇文章介绍的内容是关于PHP用户登录验证模块 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 实现用户登录 >>>1 创建登录表单 登录表单的HTML代码如下: U ...

  7. JavaWeb 实验 Servlet用户登录验证

    实验2.2 Servlet用户登录验证 实验内容: 编写JSP程序,实现用户提交登录表单给Servlet,由Servlet 查询数据库(模拟查询,不用真的连接数据库查询),对用户是否存在进行验证. 实 ...

  8. 数据库用户登录验证及注册功能实现

    数据库用户登录验证及注册功能实现 1.mysql数据库安装 2.解决navicat连接mysql的密码错误问题 3.创建数据库.用户表.插入数据 (1)进入mysql数据库 (2) 创建数据库dnn_ ...

  9. 基于 JSP + Servlet 的用户登录验证

    综合案例--基于 JSP + Servlet 的用户登录验证 [例6-1] 实现一个简单的用户登录验证程序,如果用户名是 abc ,密码是 123,则显示欢迎用户的信息,否则显示"用户名或密 ...

最新文章

  1. FastDFS安装与使用
  2. Win7环境下搭建GO开发平台——SublimeText 2
  3. 交换机的端口工作模式
  4. Redis 热点 Key 如何发现?又该如何解决?
  5. 【算法】一个简单的线性判别分析(LDA)原理
  6. Objective-C Memory Management Being Exceptional 异常处理与内存
  7. python字符串处理函数总结
  8. Sql 语句里 As后的竟然可以和前边的字段重名
  9. 4.3 数值分析: 简单迭代法的构造和收敛条件
  10. “头号电脑黑客” 凯文.米特尼克 与 中国台湾的”电脑鬼才“陈盈豪
  11. 一个屌丝程序猿的人生(三十二)
  12. python 制作淘宝秒杀脚本
  13. 熬夜慢性自杀全过程曝光 | 程序员入坑必读
  14. 【项目合作】寻视频监控智慧城管相关技术 SDK
  15. matlab方程求解的实验报告,用matlab对微分方程求解实验报告.doc
  16. 【JDK编译】Centos7编译OpenJDK7
  17. 超级表格教你怎样“零”成本制作签到系统
  18. js-图片的轮播-设置主要界面-和鼠标点击进行切换图片
  19. 2013版VBA帮助文档
  20. 【Axure视频教程】拖拉拽移动地图

热门文章

  1. Python缓存提高递归代码性能lru_cache
  2. php茶餐厅销售管理系统的设计与实现
  3. Ajax+MySQL+PHP+jQuery实现异步请求页面并显示数据
  4. 彻底卸载 Visual Studio 2019【完整版】
  5. 掘金万亿二手市场,闲鱼、转转已占据90.9%市场份额
  6. 工业相机的传感器靶面大小
  7. 传统数据库走向消亡?
  8. 《Unsupervised Learning of Depth and Ego-Motion from Video》读书笔记
  9. cn2.php中文,Python使用cn2an实现中文数字与阿拉伯数字的相互转换
  10. echarts 堆叠柱状图label显示总和