如何将ldap python代码转换为ldapsearch参数?
以下python代码为我提供了预期的条目:如何将ldap python代码转换为ldapsearch参数?,python,ldap,Python,Ldap,以下python代码为我提供了预期的条目: from ldap3 import Server, Connection, ALL, SUBTREE, ALL_ATTRIBUTES from pprint import pprint import json server = Server( 'server.domain.org', use_ssl = True, port = 636 ) c = Connection( server, user = 'username', password = '
from ldap3 import Server, Connection, ALL, SUBTREE, ALL_ATTRIBUTES
from pprint import pprint
import json
server = Server( 'server.domain.org', use_ssl = True, port = 636 )
c = Connection( server, user = 'username', password = 'password123' )
c.bind()
c.search(search_base = 'cn=users,dc=domain,dc=org',
search_filter = '(mailNickname=username)',
search_scope = SUBTREE,
attributes = ALL_ATTRIBUTES,
paged_size = 5)
total_entries = len( c.response )
print( total_entries )
for entry in c.entries:
converted = json.loads( entry.entry_to_json() )
pprint( converted )
我希望能够使用ldapsearch命令获得相同的条目
但是,当我尝试使用变体时:
ldapsearch -x -LLL -H ldaps://server.domain.org:636 -D '' -w password123 -b 'cn=users,dc=domain,dc=org' -s sub '(objectClass=*)' 'givenName=username'
我只是得到了如下错误:
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
知道哪里出了问题吗?将代码中执行的搜索(我将域名更改为RFC 2606保留域之一)转换为ldapsearch会产生:
ldapsearch -x -LLL -H ldaps://server.example.org:636 -D 'username' -w password123 -b 'cn=users,dc=domain,dc=org' -s sub '(mailNickname=username)'
ldapsearch二进制文件可能无法与LDAP服务器协商SSL连接。如果主机上有明文LDAP,请在不使用SSL的情况下进行测试,以验证连接失败的原因:
ldapsearch -x -LLL -H ldap://server.example.org:389 -D 'username' -w password123 -b 'cn=users,dc=domain,dc=org' -s sub '(mailNickname=username)'
问题在于python代码能够访问TLS通信所需的证书,而ldapsearch则无法访问。我可以通过添加以下内容来解决此问题:
TLS_CACERT /full/path/to/Certificates.pem
TLS_REQCERT demand
至~/.ldaprc。Certificates.pem包含我需要的证书
可能还有其他有效的方法允许ldapsearch查找所需的证书