Невозможно получить подробную информацию о свойствах пользователя из активного каталога с помощью c # - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь подключиться к Active Directory, используя учетные данные учетной записи службы, которые имеют полный доступ для подключения к Active Directory, но не могут загрузить сведения о свойствах пользователей.

Это происходит, когда я вошел в систему, используя учетную запись 'miminstall', у которой нет доступа для получения сведений о пользователе из AD, но в моем приложении я передал учетные данные учетной записи, которая имеет доступ в AD.

Когда я запускаю Visual Studio с другим пользователем (adma), у которого есть полный доступ к Active Directory, я могу подключиться и получить информацию о пользователе без проблем.

Я не знаюпочему это происходит, несмотря на то, что учетные данные adma передаются в коде.

public string getADattributes(string DN, string operation)
        {        
            string path = "LDAP://xyz.com";

            DirectoryEntry directoryEntry = new DirectoryEntry(path, "xyz\\adma", "abc", AuthenticationTypes.Secure);
            using (directoryEntry)
            {
                DirectorySearcher objDSearcher = new DirectorySearcher();
                objDSearcher.Filter = "(distinguishedName=" + DN + ")";//search user in AD using DN
                objDSearcher.PropertiesToLoad.Add("whenCreated");
                objDSearcher.PropertiesToLoad.Add("whenChanged");
                objDSearcher.PropertiesToLoad.Add("EmployeeID");
                objDSearcher.SearchScope = SearchScope.Subtree;
                SearchResult result = objDSearcher.FindOne();
                if (result != null)//if count!=0 that means user exist in ad
                {
                    string createdDate = "";
                    string modifiedDate = "";
                    string employeeID = "";
                    if (result.Properties["whenCreated"].Count >0)
                    {
                       //able to come inside if statement when running visual studio using adma account but not when runnning with login account i.e., miminstall
                        createdDate = result.Properties["whenCreated"][0].ToString();
                    }
                    if(result.Properties["whenChanged"].Count>0)
                    {
                        modifiedDate = result.Properties["whenChanged"][0].ToString();
                    }
                    if(result.Properties["EmployeeID"].Count > 0)
                    {
                        employeeID = result.Properties["EmployeeID"][0].ToString();
                    }


                }
                return null;
            }
}

1 Ответ

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

Если это не разовая задача, обычно можно создать задачу в планировщике задач или в веб-приложении под IIS.

Если это консольное приложение, добавьте новую задачу в планировщик задач, задайте действиедля запуска приложения (укажите путь к исполняемому файлу приложения) и задайте для пользователя задачи «adma»

Если это часть веб-приложения, создайте новый пул приложений в IIS.Затем щелкните правой кнопкой мыши вновь созданный пул приложений, перейдите в раздел «Дополнительные параметры»> «Идентификация» и укажите учетные данные для «adma».Затем назначьте этот пул приложений вашему веб-приложению.

Если это не запланированная задача или веб-приложение, а периодический запуск по требованию, я считаю, что добавление Impersonation будет вашим лучшим вариантом.Посмотреть это SO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...