Я использую DirectoryServices для запроса DirectoryEntries для человека или группы следующим образом:
var propsToLoad = new string {"sAMAccountName","objectClass", "memberOf", "distinguishedName", "manager","mail","name","objectCategory"};
DirectoryEntry dEntry = new DirectoryEntry("LDAP://<MyDomainController>/DC=foo,FC=com","user","pass");
DirectorySearcher dSearch = new DirectorySearcher(dEntry, "(&(|(objectClass=person)(objectClass=group))
(samAccountName=jsmith))", propsToLoad);
var searchResult = s.FindOne();
var searchResultDirEntry = result.GetDirectoryEntry();
Проблема, с которой я столкнулся, заключается в том, что вышеуказанный вызов для получения DirectoryEntry
для SearchResult
получает больше свойств, чем я запрашиваю.Если во время отладки я наведу указатель мыши на searchResult
, он будет содержать только 8 свойств, к которым я обращался, но при вызове "GetDirectoryEntry()"
для запросов searchResult
получаем еще больше свойств (примерно на 77 - 80 больше значений свойств).
Реальная проблема заключается в том, что он также запрашивает свойства, для которых установлен « конфиденциальный бит », например 'UnixUserPassword' , вызывая сбои аудита на DC.
Есть ли способ указать НЕ запрашивать какие-либо свойства с установленным конфиденциальным битом ИЛИ result.GetDirectoryEntry();
уважать мой "propsToLoad" и извлекать только значения свойств для свойств, которые я указал в DirectorySearcher
.