Странное поведение при поиске ldap (локальная ошибка) - PullRequest
0 голосов
/ 12 июня 2018

мы несколько дней боремся со странной ошибкой ldap.Следующий код работал нормально более года.Внезапно он возвращает local error (0x52) для нескольких пользовательских CN.

Соответствующий код (подключение и связывание всегда работают, для некоторых пользовательских CN не удается выполнить поиск):

$ldapconn = ldap_connect("LDAP URL")
    or die("Connection failed.");

ldap_bind($ldapconn, 'USERNAME', 'PASSWORD')
    or die("Binding failed");

$ldapsearch = ldap_search($ldapconn, '', '(&(uniqueMember=CN=FIRSTNAME LASTNAME,O=COMPANY)(objectClass=groupOfNames))')
    or die("Search failed: ".ldap_error($ldapconn));

Странно то, что этот код работает для большинства пользователей., но для некоторых это не так.

Так, например:

$ldapsearch = ldap_search($ldapconn, '', '(&(uniqueMember=CN=FIRSTNAME_1 LASTNAME_1,O=COMPANY)(objectClass=groupOfNames))')
    -> works

$ldapsearch = ldap_search($ldapconn, '', '(&(uniqueMember=CN=FIRSTNAME_2 LASTNAME_2,O=COMPANY)(objectClass=groupOfNames))')
    -> fails

Но оба CN определенно существуют (в браузере softerra ldap обе команды поиска работают, также в Lotus Notes оба пользователя кажутсяидентичен, только с некоторыми клиентами ldap и php-кодом, который не работает).

Мы также нашли следующее утверждение от ibm на этой странице: https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_71/apis/ldap_error_condt.htm

0x52 - Some local error occurred. This usually indicates that either the LDAP support (IBM® i option 32) is not installed on the system, or a malloc() operation has failed

Поддержка Ldap установлена, и мы не знаем, где может быть ошибка выделения памяти.

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Любая помощь приветствуется

ОБНОВЛЕНИЕ:

Мы попытались выполнить поиск в CentOS с помощью cli и получили ту же локальную ошибку (так что это не проблема php ldap, скорее, это проблема с сервером Notes domino):

ldapsearch -D "USERNAME" -w PASSWORD -h LDAP_URL -b "" -s sub "(&(uniqueMember=CN=FIRSTNAME LASTNAME,O=COMPANY)(objectClass=groupOfNames))"
    -> ldap_result: Local error (-2)

Ошибка возникает всегдадля тех же пользователей.Пользовательские CN, где возникает проблема, не имеют специальных символов или аналогичных и не содержат двойных имен и фамилий.

...