Python ldap vs ldap3不一致

时间:2019-06-11 22:48:36

标签: python authentication ssl ldap connection

我对项目使用python-ldapflask_appbuilder使用)感到困惑。我注意到python-ldap失败,出现“初始化SSL / TLS错误”。为了验证我的ldap设置正确,我在ldap3旁使用python-ldap编写了一个脚本,并注意到ldap3在使用与python-ldap相同的配置时成功。

测试代码为:

import ldap3
import ldap
import ssl

URL = 'ldaps://....example.com:636'
USER = 'CN=...'
PASS = '...'
SEARCH = 'OU=...'
FILTER = '(&(objectClass=user))'

# ldap3
server = ldap3.Server(
    URL,
    use_ssl=True,
    tls=ldap3.Tls(validate=ssl.CERT_REQUIRED),
)
conn = ldap3.Connection(server, USER, PASS)
conn.bind()
conn.search(SEARCH, FILTER)

# python-ldap
con = ldap.initialize(URL, 4)
con.set_option(ldap.OPT_REFERRALS, 0)
con.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_ALLOW)
con.set_option(ldap.OPT_X_TLS_NEWCTX,0)
con.start_tls_s()
con.bind_s(USER, PASS)

我能够从ldap3块中成功获得结果,但是当到达python-ldap start_tls_s块时,我得到了:

ldap.UNAVAILABLE: {'info': u'00000000: LdapErr: DSID-0C091338, comment: Error initializing SSL/TLS, data 0, v4563', 'desc': u'Server is unavailable'}

在我的笔记本电脑和测试机(均为Linux机器)上,行为均保持一致。有谁知道为什么会出现这种差异?

0 个答案:

没有答案