Я застрял, используя python-ldap
(используется flask_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 box). Кто-нибудь знает, почему возникает такая разница?