Предполагая, что администраторы каталога разрешат клиентскому приложению LDAP извлекать все записи из каталога, извлеките значение атрибута namingContexts
из корневого DSE.Значения этого атрибута (он многозначный) являются контекстами или суффиксами именования, которые поддерживает этот сервер.Используя эту информацию, создайте поиск, используя:
- контекст имен
- ограничение размера 0f 0 (без sizelimit)
- ограничение по времени 0 (неограниченное время)
- фильтр, который будет соответствовать всем записям, например,
(objectClass=*)
или (&)
- область, достаточная для обнаружения всех записей, вероятно,
subtree
- aсписок требуемых атрибутов
Построить этот поиск для каждого namingContext
.Опять же, предполагая, что администраторы каталогов разрешат клиенту LDAP выполнять поиск по всему каталогу, эти поиски приведут к ответам, содержащим каждую запись.
Существует много предостережений, таких как:
- разрешено ли это администраторами?
- может ли ваше приложение стать достаточно большим, чтобы обрабатывать данные (если не механизм простых постраничных результатов может обеспечить решение).
- Мне сказали, что AD налагаетограничение размера 1000 на клиентах LDAP.Даже если это так, ни один клиент LDAP не должен быть закодирован со знанием инфраструктуры каталогов или поставщика.Это приводит к плохому, хрупкому коду, который трудно поддерживать.Все клиенты LDAP должны быть закодированы в соответствии со стандартами, установленными Директоратом LDAP в IETF.
Для получения дополнительной информации см .: