Я могу подключиться к серверу Active Directory, используя порт ldap и SASL (используя gssapi для выполнения kerberos), следующим образом:
import ldap, ldap.sasl, sys
server = 'ldap://server.domain.tld'
sasl_auth = ldap.sasl.sasl({} ,'GSSAPI')
conn = ldap.initialize(server, trace_level=0)
conn.set_option(ldap.OPT_REFERRALS,0) # for AD servers, don't chase referrals via anonymous bind
conn.protocol_version = ldap.VERSION3 # Set protocol version to LDAPv3 to enable SASL bind!
conn.sasl_interactive_bind_s("", sasl_auth)
Все это работает как нужно. (Ошибка проверки исключена для краткости.) Но если я хочу вместо этого подключиться к порту SSL, изменив строку сервера на:
server = 'ldaps://server.domain.tld'
, то привязка будет успешной, но мое соединение будет закрыто, когда я попытался сделайте следующее, например:
print('Result of Who Am I? ext. op:',repr(conn.whoami_s()))
Я получу:
ldap.SERVER_DOWN: {'desc': "Can't contact LDAP server", 'errno': 5, 'info': 'Input/output error'}
, хотя привязка не вызвала никаких исключений. "ldap: //" работает. «ldaps: //» не.
Это работает только через обычный порт + TLS, или я пропускаю некоторую часть заклинания, которая необходима для порта ldaps при выполнении kerberos?
Спасибо.