Python LDAP3 objectClass属性中的类无效:组
首先,文档和示例都很糟糕,请向像我这样的普通人解释。大声喊叫 我正在尝试访问我的组织ldap服务器。我尝试过python ldap,但遇到了一些问题,它对响应进行解码和编码的方式非常奇怪。我正在测试ldap3 lib atm。但是我不能用ldap3使用相同的东西Python LDAP3 objectClass属性中的类无效:组,python,ldap,ldap3,Python,Ldap,Ldap3,首先,文档和示例都很糟糕,请向像我这样的普通人解释。大声喊叫 我正在尝试访问我的组织ldap服务器。我尝试过python ldap,但遇到了一些问题,它对响应进行解码和编码的方式非常奇怪。我正在测试ldap3 lib atm。但是我不能用ldap3使用相同的东西 def ldap3_connection_initalizer(username, password): server = ldap3.Server('ldap.blaah.blaaah') connection = l
def ldap3_connection_initalizer(username, password):
server = ldap3.Server('ldap.blaah.blaaah')
connection = ldap3.Connection(server, user=f'uid={username},ou=people,ou=users,dc=blaah,dc=blaah', password=f'{password}')
with ldap3.Connection(server, user=f'uid={username},ou=people,ou=users,dc=blaah,dc=blaaah', password=f'{password}', auto_bind = True) as c:
print(c)
base_dn='ou=people,ou=users,dc=blaaah,dc=blaaah'
status, result, response, _ = c.search(search_base=base_dn, search_filter='(objectClass=group)', search_scope='SUBTREE', attributes = ['member'])
print(status)
print(result)
print(response)
运行此命令时,我得到:ldap3.core.exceptions.LDAPObjectClassError:objectClass属性中的类无效:组
在此之前,引发LDAPObjectClassError('objectClass属性中的类无效:'+str(值))
有人能解释一下为什么这不起作用,但互联网上的例子使用了类似的反应,而且它起作用了吗
编辑:更新,尝试将组更改为个人,但出现以下错误类型错误错误:无法解包不可编辑的布尔对象第一个错误表示
组
不是有效的objectClass(实际上它存在,但特定于某些Active Directory组-仅AD),因此需要修复筛选器。用于构造组条目(即具有成员属性)的最通用对象类是groupOfNames
(cf.)
然后,您使用有效的(objectClass=person)
更改了过滤器(但对于用户条目),因此您遇到了第二个错误,该错误与如何从c.search()
解包返回值有关。默认情况下,ldap3'search()函数仅返回状态(其他值仅在“策略”定义为线程安全时返回,这一点并不明显)
当运行搜索时,响应总是通过response
关键字添加到连接对象中,因此无论线程模式如何,为了获得实际的ldap条目,我们可以迭代连接响应
总而言之,您可以做到:
status = c.search(search_base=base_dn, search_filter='(objectClass=groupOfNames)', search_scope='SUBTREE', attributes = ['member'])
print(status)
for entry in c.response:
print(entry['dn'])
print(entry['attributes'])