Поделиться через


Запросы на страницы LDAP с подчиненными рефералами не выполняются должным образом

В этой статье приведены некоторые подходы, чтобы избежать проблемы, по которым запросы ldap с подчиненными рефералами не выполняются должным образом.

Область применения: Windows 8
Исходный номер базы знаний: 2561166

Симптомы

У вас есть приложение, которое выполняет поиск в Active Directory со страницами с помощью ldap_search_ext или ldap_search_ext_s, и оно предназначено для отслеживания ссылок. При поиске по корне домена NC страницы поиск по страницам завершается преждевременно после первой страницы.

В приложении файл cookie с страницей, который он получает, пуст, и таким образом приложение завершает запрос. В трассировке сети можно убедиться, что запрос на страницы возвращает непустый файл cookie вместе с одним или несколькими рефералами. Большинство запросов не будет видеть результирующий набор при погоне за рефераловой, так как часто объекты, поиск которых выполняется в домене NC, не существуют в подчиненных NCs, если они также не являются контроллерами домена.

Приложение также может получить "операционную ошибку" после первой страницы.

Контроллер домена возвращает подчиненные ссылки для следующих контекстов именования:

  1. При поиске корня леса: конфигурация NC (за которым следует ссылка на схему NC)
  2. При поиске корня леса: ForestDnsZones NC
  3. DomainDnsZones NC
  4. Все дочерние домены. И рекурсивно все дочерние домены вниз по всему дереву домена.

Причина

Существует несколько проблем при погоне за ссылками во время страничного запроса:

  1. При погоне за контекстами именования, расположенными на том же сервере (см. 1., а может быть, 2. и 3. выше), отслеживание происходит в том же сеансе LDAP, очистка файла cookie, возвращенного в основном запросе в среде выполнения LDAP клиента.
  2. Когда последняя реферальная ссылка, преследуемая также превышает размер страницы, файл cookie рефералов, полученный из последней NC, используется для продолжения первичного поиска. Это приводит к сбою поиска LDAP с "операционной ошибкой", так как файл cookie не соответствует знаниям сервера об индексе и индексе поиска.
  3. Когда основной поиск выполняется с помощью простой привязки без SSL, отслеживание рефералов завершается сбоем с "операционной ошибкой", так как клиент LDAP предназначен для того, чтобы не отправлять учетные данные с четким текстом при погоне за рефералами.

Решение

В настоящее время нет решения проблемы.

В приложении можно использовать следующие подходы, чтобы избежать проблем:

  1. Используйте базовый DN, который позволяет избежать возврата сервером подчиненных рефералов, например поиск подразделения в корневом объекте домена.
  2. Выполните поиск по глобальному каталогу вместо корневого домена леса. Необходимо убедиться, что все нужные атрибуты присутствуют в GC, и что вы действительно хотите, чтобы весь лес вместо дерева домена, который вы искали ранее.
  3. Если вы не хотите, чтобы рефералы были автоматически преследоваться: по мере того как рефералы преследуются по умолчанию, используйте ldap_set_option с флагом LDAP_OPT_REFERRALS, чтобы отключить преследование рефералов. Вы всегда можете выполнять рекомендации вручную после завершения основного запроса.
  4. Используйте элемент управления LDAP_SERVER_DOMAIN_SCOPE_OID при поиске, он отключает ссылки продолжения при поиске корней домена.