Поддерживает ли модуль Python ldap привязку канала LDAP и подписывание LDAP - PullRequest
2 голосов
/ 29 января 2020

В марте 2020 года будет обновление Microsoft Active Directory, которое разрешает привязку канала LDAP и подпись LDAP по умолчанию, см. https://support.microsoft.com/en-us/help/4520412/2020-ldap-channel-binding-and-ldap-signing-requirement-for-windows

Будут ли работать модули Python ldap по-прежнему когда привязка канала LDAP и подпись LDAP активированы для запроса данных в Active Directory?

Нужно ли что-то менять или это будет работать из коробки?

Я подключаюсь к Active Directory следующим образом :

conn = ldap.initialize('url', bytes_mode=False)
conn.set_option(ldap.OPT_REFERRALS, 0)
conn.start_tls_s()
conn.simple_bind_s('username', 'password')

Какой минимальный требуемый Python и версия модуля ldap, которую я должен использовать после обновления?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 28 февраля 2020

Я думаю, что привязка канала не влияет на простые привязки LDAP через TLS (LDAPS). Подписывание каналов - это еще одна вещь, но это нормально и для TLS.

Насколько я понимаю, привязка каналов предназначена для токенов CBT и, например, является частью SASL / NTLM для NTLMv2, а затем не реализуется напрямую LDAP, но его использование SASL. Из проекта github https://github.com/jborean93/ntlm-auth/blob/master/README.md я могу найти CBT, определенный как некоторое значение, полученное из сертификата сервера, я думаю, что он может быть покрыт rf c 5929, а маркер привязки канала определен в главе 4 'tls -server-end-point 'Тип привязки канала.

Это то же самое для GSSAPI / Kerberos (см. https://github.com/requests/requests-kerberos/blob/master/requests_kerberos/kerberos_.py _get_channel_bindings_application_data)

Хотя я не смотрел на SASL / Digest-md5 CBT.

Канал привязки CBT: https://support.microsoft.com/en-us/help/4034879/how-to-add-the-ldapenforcechannelbinding-registry-entry

2 голосов
/ 18 февраля 2020

Если вы используете простое связывание (как в примере с кодом), то в вашем клиенте не требуется никаких изменений. Он будет продолжать работать с LdapEnforceChannelBinding=2.

Если вы сделаете подписывание запроса обязательным (LDAPServerIntegrity=2), то вы не сможете использовать простое связывание без ldaps или STARTLS (но ваш пример кода, похоже, запрашивает STARTTLS поэтому он должен продолжать работать.)

Однако я еще не проверял, устанавливает ли Pyton-ldap с SASL информацию о привязке, было бы уместно, если вы хотите использовать GSSAPI / Kerberos или SASL / Digest-md5. Оба больше не работают с неизмененными клиентами (например, происходит сбой с Java поставщиком JNDI sun-ldap).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...