У меня нет доступа к атрибуту employeeID пользователей Active Directory через C # - PullRequest
0 голосов
/ 29 мая 2019

У меня нет доступа к атрибуту employeeID пользователей «Active Directory» через «C #»

У меня нет доступа к атрибуту employeeID пользователей «Active Directory» через «C #», я проверил, что пользователи имеют значение в атрибуте employeeID из того же «Active Directory», но код "C #" не имеет доступа к этому атрибуту, я также проверил его с помощью программного обеспечения "Softerra LDAP Administrator 2019.1", и он также не показывает его.

Дело в том, что клиент, для которого я работаю, дал мне свой VPN для доступа к своей сети через Forticlient, и он дал мне учетные данные для доступа к его «Active Directory», мне удалось перечислить всех пользователей и других общих свойства. , но я не могу получить доступ к атрибуту employeeID.

class Program
    {
        static string ldapGeneral = "figssd.com.pe";
        static string ldapAD = "LDAP://112.128.123.18:3258/dc=figssd,dc=com,dc=pe";
        static string userAD = "saraoconner@figssd.com.pe";
        static string paswoordAD = "GDsds123";

        static void Main(string[] args)
        {
            LeerPropiedades();
            Console.WriteLine("Final");
            Console.ReadLine();
        }

        static void LeerPropiedades()
        {
            try
            {
                DirectoryEntry searchRoot = createDirectoryEntry();
                DirectorySearcher searcher = new DirectorySearcher(searchRoot, "(&(objectClass=user)(objectCategory=person))");
                searcher.PropertiesToLoad.Add("cn");
                searcher.PropertiesToLoad.Add("employeeID");
                searcher.SearchScope = SearchScope.Subtree;
                searcher.PageSize = 1000; // Setting the PageSize value to 1000 will return all objects.
                SearchResultCollection results = searcher.FindAll();

                int i = 0;

                foreach (SearchResult item in results)
                {
                    if (item.Properties["employeeID"].Count > 0)
                    {
                        Console.Write("/");
                        Console.WriteLine(Convert.ToString(item.Properties["employeeID"][0]));
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error");
            }
        }
        static DirectoryEntry createDirectoryEntry()
        {
            DirectoryEntry ldapConnection = new DirectoryEntry(ldapGeneral);
            ldapConnection.Path = ldapAD;
            ldapConnection.Username = userAD;
            ldapConnection.Password = paswoordAD;
            ldapConnection.AuthenticationType = AuthenticationTypes.Secure;
            return ldapConnection;
        }
}

Пожалуйста, кто-нибудь, кто знает, если это проблема с разрешениями?

Изображение атрибута Active Directory:

enter image description here

1 Ответ

0 голосов
/ 02 июня 2019

Интересно, вы запрашиваете Глобальный каталог?

Обычно вы запрашиваете контроллер домена на портах 389 (для LDAP) и 636 (для LDAPS). Это дает вам доступ ко всем атрибутам для всех объектов в домене . Глобальный каталог (GC) имеет подмножество атрибутов для всех пользователей в лесу , поэтому может быть полезно, когда в лесу есть несколько доменов. Для запроса GC вы используете порты 3268 (для LDAP) и 3269 (для LDAPS) на контроллере домена, который также является сервером глобального каталога.

employeeID обычно не копируется в GC. Вы можете проверить это с помощью оснастки MMC «Схема Active Directory». Откройте атрибут Свойства и найдите «Реплицировать этот атрибут в Глобальный каталог».

...