Порт LDAP 636 Свойства DirectoryEntry не содержат группового членства, хотя LDAP

В C # я привязываюсь к защищенному сайту LDAP с помощью следующего кода

authServer =
    new DirectoryEntry("LDAP://whatever.com:636",
          authServerUsernameFromConfig,
          authServerPasswordFromConfig,
          AuthenticationTypes.Anonymous );

затем ищите пользователя, который найден в порядке.

затем исследуется следующая коллекция в поисках имени свойства "groupMembership"

DirectorySearcher directorySearch = new DirectorySearcher(authServer, filterKey);
...
SearchResult result = directorySearch.FindOne();
...
authUser = new DirectoryEntry(result.Path, userDN, password, AuthenticationTypes.None);
...
(read) authUser.Properties.PropertyNames

Однако при использовании защищенного порта 636 ничего не обнаружено. Найдены другие свойства. При привязке к незащищенному ПОРТУ обнаруживаются все свойства, как с привязкой 636, так и с именем groupMembership.

Может ли кто-нибудь объяснить, почему это может быть или как их получить.

Похоже, что с помощью утилиты LDP.exe можно увидеть эти свойства groupMembership с привязкой к безопасному порту 636.


person user30803    schedule 12.10.2012    source источник


Ответы (1)


  • Дерево информации о каталоге не имеет свойств. База информации каталога имеет атрибуты, сгруппированные в записи. Атрибуты могут быть многозначными, свойства всегда однозначными.
  • Клиенты LDAP не «привязываются» к соединению. Клиенты LDAP устанавливают соединение с безопасным портом (с использованием SSL) или с незащищенным портом (который затем может быть «повышен» до безопасного соединения, если это требуется клиентом и разрешено сервером). После того, как соединение установлено, оно не имеет состояния авторизации. Затем клиент LDAP может использовать операцию BIND, чтобы запросить у сервера проверку учетных данных и изменить состояние авторизации соединения. Состояние авторизации соединения используется сервером, чтобы определить, имеет ли клиент, использующий это соединение, права доступа к записям и атрибутам, составляющим эти записи.
  • Современные серверы LDAP профессионального качества имеют возможность отказывать в доступе к определенным конфиденциальным атрибутам, если соединение не является безопасным. Если сервер, к которому обращается клиент LDAP, не имеет этой возможности, то нет никакой разницы в доступе к данным через безопасное и незащищенное соединение. Эти устаревшие серверы не различают безопасное и незащищенное соединение для определения прав доступа и привилегий - состояние авторизации соединения используется для определения прав доступа)

Используйте известный хороший инструмент, например ldapsearch, чтобы убедиться, что клиент LDAP может получать доступ к данным по мере необходимости. Если заведомо исправный клиент LDAP может получить доступ к данным, а клиент LDAP с ручным кодированием не может, проверьте следующие параметры поискового запроса:

  • Базовый объект или базовое DN. Это место, с которого начинаются поиски. Никакие записи, превосходящие базовый объект, не возвращаются
  • Объем поиска. BASE возвращает только атрибуты записи и запроса, ONE возвращает записи, непосредственно подчиненные базовому объекту, SUB возвращает базовый объект и все записи, подчиненные базовому объекту, на любом уровне.
  • Фильтр. Фильтр используется для сужения поиска и состоит из утверждений attributeType-attributeValue и может иметь несколько различных форм.
  • Запрошенные атрибуты, которые сервер должен вернуть из записей, соответствующих другим параметрам поиска. Некоторые API, а не все, возвращают все пользовательские атрибуты, если ни один из них не запрашивается.

смотрите также

person Terry Gardner    schedule 13.10.2012
comment
так как выяснилось, что 636 не влияет на результаты, как указано - person user30803; 24.10.2012