在访问LDAP数据时,我不断收到Size Limit Exceeded错误.
谷歌提出的一个解决方案要求更严格的搜索过滤器.
如何在python LDAP中组合两个或多个搜索过滤器?使用建议(|(filter1)(filter2))产生错误.
这是查询:
baseDn = "ou=active, ou=employees, ou=people, o=xxxxx.com";
searchScope = ldap.SCOPE_SUBTREE
#retrieve Certain attributes
retrieveAttributes = ["manageruid","manager","cn"]
search_query = raw_input("Enter the query :")
#This searchFilter needs to be more specific
searchFilter = "city=" + "Bangalore"
try :
ldap_result_id = l.search(baseDn, searchScope, searchFilter, retrieveAttributes)
result_set = []
while 1:
result_type, result_data = l.result(ldap_result_id, 0)
if(result_data == []):
break
else:
if result_type == ldap.RES_SEARCH_ENTRY:
result_set.append(result_data)
#print result_set
print len(result_set)
except ldap.LDAPError, e:
print …Run Code Online (Sandbox Code Playgroud) 编辑:tl; dr - search_filterSEARCH中使用的参数可能不符合RFC4515.
我在Ubuntu 14.04上运行了一个运行1.8.4版本的Django服务器.我正在使用Python 3.4,为此我正在尝试使用ldap3配置LDAP身份验证.
这是分别从1.6.2,12.04和2.7.3升级到上述版本的一部分.一切都正常,所以我认为问题出在我的最后,而不是身份验证服务器.
它的工作方式是我有一个名为authenticate_user.py的文件,它接收通过HTML表单传递的用户名和密码,如下所示.
def authenticateStudent(request):
username = request.POST.get('username','')
logger.info("User " + username + " has logged in.")
password = request.POST.get('password','')
x = Auth(username, password)
retVal = x.AuthenticatePy()
logger.info('retVale is '+str(retVal)) #this returns False
#more code and more logging
Run Code Online (Sandbox Code Playgroud)
该方法从Auth类(如下所示)实例化一个对象,在其中存储用户名和密码,然后调用该类中的AuthenticatePy()方法.
import logging
import sys
import os.path,subprocess
import ldap3 as ldap
from ldap3 import Connection, Server, SIMPLE, SYNC, SUBTREE, ALL
logger = logging.getLogger('Submission')
class Auth():
studentName = ""
studentEmail = "" …Run Code Online (Sandbox Code Playgroud) 我已经在我的flask包的virtualenv中安装了flask、flask_login和ldap(以使用我公司其他用户的用户名和密码对ldap用户进行身份验证)。
当我运行我的 Flask 应用程序时,我收到“AttributeError:‘模块’对象没有属性‘初始化’”
我尝试过“pip install python-ldap”,但收到一个红色错误(夹在其他白色文本之间),上面写着:“为 python-ldap 构建轮子失败”
我已经彻底检查了这些: How to install python-ldap on a python 2.7 virtualenv on windows without compiling
在 Windows 上的 virtualenv 中安装 python-ldap
https://www.python-ldap.org/docs.html
https://www.linuxjournal.com/article/6988?page=0,1
无济于事。我已经有这个错误好几天了...
(还:
pip 安装 openldap
给出:
正在收集 openldap 无法找到满足 openldap 要求的版本(来自版本:) 找不到 openldap 的匹配发行版
...(在我的 venv 内外)如果该信息有帮助)
我上周遇到了这个错误,在切换工作计算机后,我重新创建了 virtualenv 并成功安装了所有其他软件包和依赖项。
我的requirements.txt 文件在一行 git 内容之后包含以下行:
点击==6.7
烧瓶==0.12.2
Flask-登录==0.4.0
危险==0.24
Jinja2==2.9.6
LDAP==1.0.2
ldap3==2.2.4
标记安全==1.0
pyasn1==0.2.3
武器==0.12.2
有没有人成功地将 python-ldap 安装到 Windows 的 Flask virtualenv 中?如果是这样……怎么办?!
我正在使用Python-LDAP与 Active Directory 进行交互,并且正在努力寻找将用户添加到安全组需要编写的代码。
我已经编写了代码来搜索用户和组的 DN,我只是不确定我需要使用什么函数来添加用户。我遇到了这个:
LDAPObject.add_s(dn, modlist)
所以我已经有了 DN,但是当我搜索 modlist 时,我得到了这个:
ldap.modlist.addModlist(entry[, ignore_attr_types=[]])
我不确定我是否需要 modifyModlist 或 addModlist,并且不确定我需要发送给它的值。
我以为我只能将用户和组 DN 发送到一个函数,它会将用户添加到组中……猜猜这不是那么简单吗?
是否可以像这样导入 LDIF
dn: cn=vpupkin,cn=people,ou=company,dc=domain,dc=com
c: UA
cn: vpupkin
employeetype: Indoor Front-end developer
gidnumber: 500
givenname: Vasya
homedirectory: /home/vpupkin
host: example.com
l: Kyiv
loginshell: /bin/bash
mail: vpupkin@domain.com
o: Microsoft
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
objectclass: shadowAccount
objectclass: ldapPublicKey
objectclass: extensibleObject
labeleduri: skype://test
sn: Pupkin
sshpublickey: ssh-rsa key
st: Trudova, 15
telephonenumber: 7777777777
uid: vpupkin
uidnumber: 1000
userpassword: {SHA}fEqNCco3Yq9h5ZUglD3CZJT4lBs=
Run Code Online (Sandbox Code Playgroud)
使用 python-ldap 库(http://www.python-ldap.org/)?
是的,我可以以这种方式向 LDAP 添加新记录http://www.grotan.com/ldap/python-ldap-samples.html#add但我不确定这样的文本 ldif 文件。
附注。完整答案在这里http://pastebin.com/eQU7xBfj
背景:我正在开发一个API来集中用户创建和管理多个资源(例如Google Apps,Dropbox等).在Linux VM上,我开发了一个API和Web界面,允许我(和我的共同管理员)对这些服务的用户帐户进行身份验证和管理.我需要集成的下一件事是我们的Active Directory,它托管在远程Windows Server 2008上.
我一直在尝试使用python-ldap来连接和检索/修改信息,但是遇到了DIR_ERROR操作错误(当试图查询用户时)和NAMING_VIOLATION错误(尝试添加用户时)的问题.
*基于http://www.grotan.com/ldap/python-ldap-samples.html,stackoverflow问题和python-ldap文档的代码我相信的绑定代码:
import ldap
try:
l = ldap.open("serverip")
l.protocol_version = ldap.VERSION3
username = "myUserName@adtest.local"
password = "secret"
result = l.simple_bind(username, password)
print result
except ldap.LDAPError, e:
print e
Run Code Online (Sandbox Code Playgroud)
打印:(97,[],1,[])
查询用户脚本:(根据文章的建议尝试不绑定,但收到"为了执行此操作,必须在连接上完成成功绑定.")
import ldap
try:
l = ldap.open("serverIp", port=389)
l.protocol_version = ldap.VERSION3
username = "myUserName@adtest.local"
password = "secret"
result = l.simple_bind(username, password)
print result
except ldap.LDAPError, e:
print e
# handle error however you like
baseDN = "ou=Users, o=adtest.local"
searchScope = ldap.SCOPE_SUBTREE
retrieveAttributes = …Run Code Online (Sandbox Code Playgroud) 背景:
我一直在Linux计算机上使用python-ldap模块来管理远程Windows Server 2008上的用户帐户。除了更改用户的“ ou”外,我已经能够搜索,创建和修改用户。 。
我曾尝试使用'modify_s'和'modrdn_s',但是由于modrdn仅允许您更改dn的第一部分,因此我没有运气来修改'ou'或将用户移至新的'ou'。
临时地,我正在创建一个新用户,并从旧用户复制所有能够复制的属性,然后删除旧用户。但这不允许我保留用户创建日期和其他不可编辑的信息。
我已经在互联网上进行了彻底的搜索,找到了一些解决方案,但是:
在其他操作系统上:如何使用Python
和其他编程语言将用户移至其他OU:Active Directory LDAP将用户移至其他OU-Ruby
在在Linux上使用python-ldap还是有任何解决方法?
谢谢!
>>> import ldap
>>> conn = ldap.initialize('ldap://zion.karunya.edu')
>>> conn.protocol_version = 3
>>> conn.set_option(ldap.OPT_REFERRALS, 0)
>>> conn.simple_bind_s('username', 'password')
Run Code Online (Sandbox Code Playgroud)
最后一行总是引发恼人的InvalidCredentials异常。我确定密码是正确的。我什至尝试了其他用户名、密码组合(我朋友的)。
另请注意,使用PHPadLDAP插件的朋友没有问题。我花了几个小时试图找出这个愚蠢的问题。有任何想法吗?
python-ldap ×8
python ×6
ldap ×4
openldap ×2
python-2.7 ×2
django-1.8 ×1
flask-login ×1
linux ×1
python-3.4 ×1