ldap php список пользователей ldap

ldap_list

(PHP 4, PHP 5, PHP 7, PHP 8)

ldap_list — Одноуровневый поиск

Описание

Список параметров

Базовое DN для каталога.

Использование этого параметра намного более эффективно чем действие по умолчанию (которое должно возвратить все атрибуты и их присвоенные значения). Поэтому использование этого параметра нужно считать хорошей практикой.

Должен быть равен 1, только если требуются типы атрибута. Если установлено 0, то, по умолчанию, выбираются и типы атрибутов и значения атрибута.

Позволяет ограничить количество выбранных записей. Установка этого параметра как 0 означает, что ограничение отсутствует.

Этот параметр НЕ может переопределять предустановку sizelimit на стороне сервера. Хотя его можно установить ниже.

Некоторые хосты серверов каталогов будут сконфигурированы так, чтобы возвратить не больше, чем предварительно установленное число записей. Если это произойдёт, то сервер укажет, что возвратил только частичный набор результатов. Это также происходит, если Вы используете этот параметр, чтобы ограничить количество выбранных записей.

Устанавливает число секунд, ограничивающее процесс поиска. Установка этого параметра как 0 означает, что ограничение отсутствует.

Этот параметр НЕ может переопределять предустановку timelimit на стороне сервера. Хотя его можно установить ниже.

Массив управляющих констант LDAP для отправки в запросе.

Возвращаемые значения

Возвращает идентификатор результата поиска или false в случае возникновения ошибки.

Список изменений

Примеры

Пример #1 Выводит список всех организационных единиц организации

$basedn = «o=My Company, c=US» ;
$justthese = array( «ou» );

Источник

Создаём WEB адресный справочник PHP + LDAP

Так случилось, что у (относительно) большой кампании было много отдалённых офисов, в которых находилось приличное количество пользователей. Все офисы соединены в одну сеть с общим доменом, каждый офис был определён в Active Directory (далее по тексту AD) как Organization Unit (OU), в котором уже заводились пользователи.

Необходимо было дать пользователям возможность быстро и без особенных усилий получать контактные данные необходимого сотрудника из AD, а системных администраторов освободить от рутины редактирования текстового файла, который играл роль адресной книги.

Готовых подходящих вариантов для решения поставленной задачи не нашлось, поэтому пришлось делать всё своими руками и головой.

Начнём с того, что для начала нужно определиться что использовать, это просто — итоговый справочник должен быть доступен всем пользователям домена посредством браузера. Первое, что приходит на ум это PHP в связке с ldap, их и будем использовать. Большим плюсом использования PHP я считаю его относительную простоту — любой хоть немного понимающий системный администратор сможет внести, при необходимости, нужные правки в код, не особенно напрягаясь.

Итак, начнём. для начала зададим параметры подключения к домену:

Если же мы определили OU, тогда приступаем к дальнейшим действиям: начинаем рисовать пользователю страницу справочника:

Включаем стили для более приятного внешнего вида (да, их можно было подключить как css-файл, однако некоторые версии IE не хотят воспринимать стили, заданные таким образом, поэтому приходится писать прямо в скрипт):

Со стилями покончено, теперь пишем заголовок вкладки и рисуем удобную ссылку возврата на главную страницу:

Определяем поисковые фильтры по AD, и получаем данные об OU:

Далее оформляем верхнюю часть страницы:

Далее получаем в цикле и обрабатываем данные пользователей, при этом, чтобы скрыть некоторые (например служебные) учётные записи, просто прописываем «hide» в поле «комната» в реквизитах пользователя в AD, такие пользователи не будут отображаться в справочнике:

Кстати, если вам потребуется получить значение другого атрибута, то помните (это важно):
в запросе передаём имя атрибута строчными буквами, иначе не заработает.

И вставляем полученные данные в таблицу:

Далее мы закрываем подключение по ldap, или выводим сообщение о невозможности подключения к серверу:

Файл «main_table.html» изнутри себя представляет простую html страницу с ссылками, и выглядит примерно так:

Если кому-либо поможет мой код — я буду рад, пользуйтесь!

Также можете свободно редактировать его как вам угодно (улучшать/ухудшать) и распространять любыми методами.

Источник

Поиск всех групп пользователя AD по протоколу LDAP

На первый взгляд.

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

Но выход есть.

Существует прекрасная статья Active Directory: LDAP Syntax Filters
В которой приведён интересный пример LDAP фильтра для получения групп пользователя, включая вложенные:

Также на MSDN есть статья Search Filter Syntax, описывающая имеющиеся Matching Rules, которые можно использовать в фильтрах LDAP совместно с Active Directory. В этой статье правило LDAP_MATCHING_RULE_IN_CHAIN описано более подробно:

Это правило применимо только к атрибутам типа distinguishedName. Этот специальный модификатор оператора совпадения позволяет обойти всё дерево вложенных объектов.

Таким образом задача обработки вложенности групп легко переносится на сервер AD.

Чем это знание может быть полезно администраторам?

Некоторые сервисы позволяют администратору при настройке задать LDAP фильтр для поиска групп пользователя — в таком случае администратор без вмешательства в код приложения может менять его поведение в отношении вложенных групп. Достаточно фильтры:

Источник

ldap_search

(PHP 4, PHP 5, PHP 7, PHP 8)

ldap_search — Поиск по LDAP дереву

Описание

Список параметров

Базовое DN для каталога.

Поисковый фильтр может быть простым или расширенным, используя булевы операторы в формате, описанном в документации LDAP (смотрите » Netscape Directory SDK или » RFC4515 для полной информации о фильтрах).

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

Должен быть равен 1, если требуются только типы атрибута. Если равен 0, то, по умолчанию, выбираются и типы атрибутов и значения.

Позволяет ограничить количество выбранных записей. Установка этого параметра равным 0 означает, что ограничение отсутствует.

Этот параметр НЕ может переопределять предустановку sizelimit на стороне сервера. Хотя его можно установить ниже.

Некоторые хосты серверов каталогов будут сконфигурированы так, чтобы возвратить не больше, чем предварительно установленное число записей. Если это произойдёт, то сервер укажет, что возвратил только частичный набор результатов. Это также происходит, если Вы используете этот параметр чтобы ограничить количество выбранных записей.

Устанавливает число секунд, ограничивающее процесс поиска. Установка этого параметра равным 0 означает, что ограничение отсутствует.

Этот параметр НЕ может переопределять предустановку timelimit на стороне сервера. Хотя его можно установить ниже.

Массив управляющих констант LDAP для отправки в запросе.

Возвращаемые значения

Возвращает идентификатор результата поиска или false в случае возникновения ошибки.

Список изменений

Примеры

Пример #1 LDAP поиск

User Contributed Notes 34 notes

// config
$ldapserver = ‘svr.domain.com’ ;
$ldapuser = ‘administrator’ ;
$ldappass = ‘PASSWORD_HERE’ ;
$ldaptree = «OU=SBSUsers,OU=Users,OU=MyBusiness,DC=myDomain,DC=local» ;

// SHOW ALL DATA
echo ‘

Dump all data

// iterate over array and print data for each entry
echo ‘

Show me the users

» ;
> else <
echo «Email: None

It might be useful to list here the operators that work:

Be careful of special characters when generating filters from user input.

*, (, ), \ and NUL should be backslash-escaped. See section 4 of RFC 2254 (I found it here:
http://www.cis.ohio-state.edu/htbin/rfc/rfc2254.html)

Here are a couple of resources for proper construction of filters.

Before finding these I had been stumped for hours on how to do something like «all users starting with «a» except those from OU ‘foo'»

it seems that all fields must be used in lower case even if they are mixed case in the ldapsearch output.

gidNumber: 1010
homeDirectory: /home/dnt

I have been working on a script where I needed to get all the users who were member of a specific MS AD group. Because of PHP bug #42060 ( http://bugs.php.net/bug.php?id=42060 ) I could not get all the users back who were member of the group.
After googling for a day I found an article and a patch but it required that I downloaded the source code for php 5.1.6 or 5.2.10 run the patch and than recompile the code to fix the problem.
Problem was
1) I am not a Linux goeroe so I was not very comfortable doing this.
2) I am running the script on a production machine with other code using PHP and did not know what the consequence would bee for that code.
3) I could not update PHP anymore because in newer versions this patch would probably not work any more.

But yesterday I saw the light and wrote some code to get around this problem, maybe other people can use it that have the same problem.

FYI, for those doing LDAP searches on Exchange servers, there seems to be some preference in Exchange to disallow searches that aren’t initial searches (i.e. only x* will work, not * or *x). I’d been going nuts trying to figure out why I kept getting errors doing * searches.

The internal attributes (like createTimestamp, modifyTimestamp, etc), don’t come by default (when the optional parameter attributes is not set). You have to specify it:

Example of parallel search :

When searching for BINARY data (such as an Active Directory objectGUID) you need to escape each hexadecimal character with a backslash.

In PHP, you need to escape the escape for the backslash:
ldap_search($ds,»dc=blahblah,dc=com», «(objectGUID=\\AE\\C3\\23\\35\\F7)»);

In order to perform the searches on Windows 2003 Server Active Directory you have to set the LDAP_OPT_REFERRALS option to 0:

ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);

As opposed to Windows 2000 Server, where this option was optional and only increased the performance.

If you are searching active directory and are experiencing lag or time outs, it may be that you are being given ldap referrals from the ldap server. The following code will disable this.

Источник

Пример работы с LDAP-каталогом с помощью php API

Левинца Егор, 06 апреля 2012 года.

В порядке эксперимента, а также чтобы оказать помощь человеку в его затруднении, решил написать небольшую утилитку для отображения пользователей (а точнее, учётных записей пользователей), хранящихся в каталоге LDAP, по группам. Эксперимент состоял в том, чтобы обратиться к каталогу и получить из него данные через php API, чего я раньше не делал. Зная общие принципы взаимодействия с LDAP-каталогами и имея опыт написания подобных программ на perl API (с использованием модуля Net::LDAP), сделать это оказалось несложно. Все же я решил описать свою работу — возможно, она поможет кому-нибудь в разработке php-программ, взаимодействующих с LDAP-каталогом.

Исходные данные: имеется каталог (базовый DN dc=mycompany,dc=ru) со «стандартной» структурой для интеграции с samba: сведения об учётных записях пользователей хранятся в ветке ou=Users,dc=myconpany,dc=ru, сведения о группах пользователей — в ветке ou=Groups,dc=mycompany,dc=ru. Основная задача: отобразить нестандартную древовидную структуру: на первом уровне список групп, на втором — принадлежащие этим группам пользователи. Факультативная задача: при выборе пользователя из списка вывести некоторые сведения по нему.

Поскольку при выполнении основной и факультативной задач осуществляются абсолютно одинаковые операции соединения, подключения и отключения от сервера, я решил вынести их в основную часть программы, а различающиеся операции поиска и отображения полученных в результате поиска данных — в отдельные функции. В первой функции get_main() производится поиск сведений о группах в ветке ou=Groups,dc=mycompany,dc=ru. Найденные группы, а также члены каждой из групп сортируются по алфавиту и выводится html-страница с древовидной структурой. Чтобы не изобретать велосипедов с отображением древовидной структуры, я воспользовался готовым модулем dhtmlxTree библиотеки компонентов dhtmlx. Вызов второй функции get_userinfo() выполняется при обращении к программе из ajax-запроса, генерируемого при нажатии на пользователя — члена группы в выведенной в браузер html-странице. В этой функции выполняется поиск в ветке ou=Users,dc=myconpany,dc=ru на совпадение имени пользователя с содержимым атрибута uid. Выбранные в результате поиска атрибуты записи пользователя оформляются в виде таблицы и загружаются в соответствующее информационное поле на html-странице.

ldap php список пользователей ldap. Смотреть фото ldap php список пользователей ldap. Смотреть картинку ldap php список пользователей ldap. Картинка про ldap php список пользователей ldap. Фото ldap php список пользователей ldap

Код программы с библиотеками dhtmlx и набором иконок можно скачать одним архивом здесь (

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *