Как я могу исключить определенные папки в домене LDAP с CodeIgniter и библиотекой adLDAP v2.1 - PullRequest
0 голосов
/ 16 февраля 2019

Я выполняю поиск на своем сервере LDAP, используя adLDAP и CodeIgniter.То, что я хочу искать, - это в основном учетные записи, которые были деактивированы с сервера LDAP.В моем PHP-коде у меня есть следующее для вызова библиотеки adLDAP:

<code>        $searchCriteria = array(
            "givenname"       => $values['givenName'],
            "sn"              => $values['sn'],
            "title"           => $values['title'],
            "mail"            => $values['mail'],
            "telephonenumber" => $values['telephonenumber'],
         );

//         echo "<pre>"; print_r($searchCriteria); echo "
"; // создаем поисковый фильтр $ noOfFieldsSet = 0; $ searchFilterA = '(objectClass = user) (samaccounttype ='. ADLDAP_NORMAL_ACCOUNT. ') (objectCategory = person) '; $ searchFilterB =' '; foreach ($ searchCriteria AS $ key => $ value) {if ($ value) {$ searchFilterB. = "(". $ key. "=". $ wildcard. $ value. "*)"; ++ $ noOfFieldsSet;}} // Мы выполняем логическое И или ИЛИ (в зависимости от $ logic) по всем // указанным критериям поиска, чтобы создать окончательный поисковый фильтр: if ($ logic == "&") {$ searchFilter = "(". $ logic. "". $ searchFilterA. $ searchFilterB. ")";} else // logic = OR {$ searchFilter = "(&". $ searchFilterA. "(". $ logic." ". $ searchFilterB.")) ";} // echo $ searchFilter."
"; // определить, какие атрибуты мы хотим получить $ attribs = array (" displayname "," samaccountname ", "mail", "telephonenumber", "title", "Physicaldeliveryofficename"); $ resultEntries = $ this-> ad_ldap-> search_directory ($ searchFilter, $ attribs);

и затем вв этой последней строке вызывается функция ad_ldap-> search directory из библиотеки adLDAP, эта функция:

<code>   function search_directory($filter, $fields, $sorted = true)
   {
      if ( ! $this->_bind)
         return (false);

      $sr = ldap_search($this->_conn, $this->_base_dn, $filter, $fields);
      $entries = ldap_get_entries($this->_conn, $sr);

//      echo "<pre>"; print_r($entries); echo "
";вернуть $ записей;}

Вот так выглядит моя древовидная структура LDAP:

enter image description here

Я хотел бы знать, как можно исключитьэти каталоги (отмеченные черной стрелкой) и другая неактивная папка внутри другой папки «пользователи» под этой папкой.

В этом я не уверен, как исключить каталоги или указать каталоги, которые я бы хотел исключить.

Буду признателен за любую помощь.

1 Ответ

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

Вы должны добавить фильтр исключения к $searchFilterB:

$searchFilterA = '(objectClass=user)(samaccounttype='. ADLDAP_NORMAL_ACCOUNT .')(objectCategory=person)';
$searchFilterB = '(!(UserAccountControl:1.2.840.113556.1.4.803:=2))';

Это язык запросов, специфичный для AD, который гласит: найдите все учетные записи, которые не имеют флаг UF_ACCOUNTDISABLED(который можно редактировать в пользовательском элементе управления AD, щелкнув выключенный переключатель).

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