Методы search_s search_ext_s search_s библиотеки python-ldap не возвращают код успешного ответа

Я использую метод search_ext_s() python-ldap для поиска результатов на основе filter_query, после завершения поиска я получаю msg_id, который я передал в функции результата, например, ldap_object.result(msg_id), это возвращает такой кортеж (100, атрибуты значения), что является правильным (я также пробовал метод result2, result3, result4 объекта LDAP), но как я могу получить код ответа для запроса поиска ldap, также если для данного filter_criteria нет результата, я получаю пустой список, тогда как в случае исключения Я получаю правильное сообщение, подобное этому ldap.SERVER_DOWN: {u'info': 'Конечная точка транспорта не подключена', 'errno': 107, 'desc': u"Не удается связаться с сервером LDAP"} Кто-нибудь, пожалуйста, помогите мне, если существует любой атрибут, который может дать код результата для успешной операции поиска LDAP.

Спасибо, Радхика.


person Radhika Arora    schedule 04.07.2018    source источник


Ответы (1)


Сервер LDAP может просто не вернуть никаких результатов, даже если в операции поиска, отправленной клиентом, не было ничего плохого. С python-ldap вы получаете пустой список результатов. В большинстве случаев это происходит из-за того, что управление доступом скрывает содержимое каталога. В общем случае сервер LDAP не скажет вам, почему он не вернул результатов.

(Есть некоторые особые случаи, когда ldap.INSUFFICIENT_ACCESS вызывается, но вы должны ожидать, что поведение будет отличаться при использовании разных серверов LDAP.)

В python-ldap, если операция поиска не вызывала исключения, код результата LDAP был в порядке (0). Таким образом, ваше приложение должно иметь дело с пустым результатом поиска каким-то специфичным для приложения способом, например. также вызывая пользовательское исключение, обрабатываемое верхними уровнями.

person Michael Ströder    schedule 16.07.2018