我正在尝试连接到我的ldap服务器,但它似乎以某种方式或形式失败:
import csv
from ldap3 import Server, Connection, ALL, NTLM, SUBTREE
import pandas as pd
server = Server('cybertest02.ad.arb.ca.gov', get_info=ALL)
c = Connection(server, user='myusername', password='mypassword')
c.search(search_base = 'o=test',
search_filter = '(objectClass=inetOrgPerson)',
search_scope = SUBTREE,
attributes = ['cn', 'givenName'])
total_entries += len(c.response)
for entry in c.response:
print(entry['dn'], entry['attributes'])
第12行出错:属性在哪里,无法发送消息,套接字未打开
答案 0 :(得分:1)
尝试在c.bind()
之前和c.search()
语句之后插入Connection()
。
根据LDAP3 Docs,您必须bind()
在服务器中建立新的授权状态。
如RFC4511中所述,绑定操作是“身份验证”操作。
当您打开与LDAP服务器的连接时,您处于匿名连接状态。这究竟意味着什么是由服务器实现定义的,而不是由协议定义的。
bind()
方法会在尚未打开的情况下打开连接。
Bind操作改为与套接字无关,而是执行用户身份验证。
此外,您应该使用c.unbind()
关闭连接。