Python ldap возвращает пустой список - PullRequest
0 голосов
/ 21 февраля 2019

Я проверил свой запрос ldap с помощью ldapsearch перед тем, как переписать его в модуль python ldap.Тот же самый запрос прекрасно работает с ldapsearch, но возвращает пустой массив в python.

ldapsearch -H [hostname] -LLL -b [base] -D [user] -w [password] -x "city=Bratislava"

В python:

ldap_obj = ldap.initialize(ldap_config.LDAP_SERVER)
ldap_obj.simple_bind(ldap_config.LDAP_USER, ldap_config.LDAP_PASSWORD)
ldap_results_obj = ldap_obj.search(
    ldap_config.LDAP_BASE_DN,
    ldap.SCOPE_SUBTREE,
    'city=Bratislava',
)
results = ldap_obj.result(ldap_results_obj)
print results

Я попытался использовать другой фильтр, например uid=bmakanи этот работал как в ldapsearch, так и в ldap python.Пустой список возвращался только тогда, когда я использовал фильтр, который возвращает несколько записей ldap.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Доступны асинхронные и синхронные методы.Возможно, вы захотите использовать синхронные методы, оканчивающиеся на _s.

См. Также: python-ldap - Отправка запросов LDAP

0 голосов
/ 21 февраля 2019

Я не знаю почему, но использование LDAPObject.simple_bind_s вместо LDAPObject.simple_bind устранило проблему, с которой я столкнулся.Документация довольно расплывчата в отношении различий в этих двух функциях, за исключением того, что последняя возвращает целое число ( docs ).

Это изменение также исправило еще одну проблему, с которой я столкнулся - с LDAPObject.simple_bind, *Параметр attrlist 1008 * не работал правильно - он возвращал только первый атрибут.

Если кто-то может предоставить дополнительную информацию, я был бы рад выслушать ее.

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