LDAP-запрос не отображает определенных пользователей - PullRequest
0 голосов
/ 07 декабря 2011

Я не могу отобразить некоторых пользователей из LDAP.Я не знаю почему.Вот мой код

        try
        {

            string path = "LDAP://" + Program.domain;

            DirectoryEntry dEntry = new DirectoryEntry(path);


            DirectorySearcher dSearcher = new DirectorySearcher(dEntry);

            dSearcher.Filter = "(&(objectClass=user)(objectCategory=person))";

            //perform search on active directory
            sResults = dSearcher.FindAll();


            //loop through results of search
            foreach (SearchResult searchResult in sResults)
            {
                //string view = searchResult.Properties["samaccountname"][0].ToString();
                // Console.WriteLine(searchResult.Properties["userprincipalname"][0].ToString());

                if (searchResult.Properties["samaccountname"][0].ToString() == Program.username)
                {
                    Console.WriteLine("**********UserDetails******************");
                        foreach (Object propertyName in searchResult.Properties.PropertyNames)
                        {
                            ResultPropertyValueCollection valueCollection =
                                searchResult.Properties[(string)propertyName];


                            foreach (Object propertyvalue in valueCollection)
                            {
                                Console.WriteLine((string)propertyName + " : " + propertyvalue);

                                result = true;

                            }


                        }
                        Console.WriteLine("************************************");

                    }

                }

Это отображает немного пользователей, но некоторые другие пользователи, которые существуют в AD, не отображаются.Они также администраторы домена и пользователи домена.Я тоже пока не вижу проблем с разрешением ... Мне серьезно нужна помощь. Кто-нибудь может мне помочь, пожалуйста?

Спасибо

1 Ответ

0 голосов
/ 11 декабря 2011

Есть две вероятные причины:

0) Контроль доступа: у вас нет соответствующего уровня доступа для просмотра рассматриваемых объектов (или свойств, необходимых для сопоставления их в фильтре (будь то objectClass или objectCategory)).

1) Целевые объекты на самом деле не соответствуют указанному фильтру. Пользователи могут быть чем-то отличным от (&(objectClass=user)(objectCategory=person)).

Мое предложение - подойти к проблеме следующим образом:

0) Возьмите одного примера пользователя, которого вы ожидаете подобрать, и тщательно его осмотрите. Убедитесь, что objectClass действительно содержит user, а objectCategory установлена ​​в person. Если нет, измените ваш запрос так, чтобы он включал всех пользователей, которых вы пытаетесь найти. (Вы можете обратиться к схеме AD, чтобы увидеть взаимосвязь между этими вещами)

1) Убедитесь, что контекст, в котором вы выполняете запрос, имеет доступ ко всем объектам, которые вы хотите найти , включая атрибуты, которые вы используете в своем фильтре. AD не вернет совпадение с запросом, если у вас нет доступа ко всем атрибутам в фильтре ... в противном случае это будет форма раскрытия информации.

...