python: привязка через kerberos к порту ldaps - PullRequest
0 голосов
/ 01 мая 2020

Я могу подключиться к серверу 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?

Спасибо.

1 Ответ

0 голосов
/ 02 мая 2020

Я думаю, что нашел ответ на свой вопрос.

Если вы перейдете по этой ссылке: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/989e0748-0953-455d-9d37-d08dfbf3998b

Вы найдете следующий текст:

Хотя Active Directory разрешает выполнение привязок SASL для соединения, защищенного SSL / TLS, оно не позволяет использовать механизмы шифрования / проверки целостности уровня SASL для такого соединения.

Таким образом, я думаю, что ответ на мой вопрос заключается в том, что поскольку модуль python -ldap выполняет проверку шифрования / целостности, а не только JUST-аутентификацию, вы не можете выполнять SASL и SSL / TLS одновременно. Таким образом, вы также не можете выполнить start-tls для порта «ldap», и вы не можете подключиться к порту «ldaps» (SSL) и вообще использовать SASL.

...