RelicV Ответов: 0

Ошибка при подключении к Active Directory


Это мой код!

public static string ConnectAcitveDirectory(string groupName, string domainName, string serverName, string adminUserName, string queryUserName, string queryPassword)
       {
           try
           {
               //DirectoryEntry connectionAD = new DirectoryEntry(serverName, queryUserName, queryPassword);
               //DirectorySearcher search = new DirectorySearcher(connectionAD);
               //search.PageSize = 1001;
               //search.Filter = "(&(objectClass=user)(SAMAccountName=" + adminUserName + "))";
               //SearchResultCollection result = search.FindAll();

               //if (result.Count > 0)
               //{
               //    foreach (SearchResult item in result)
               //    {
               //        if (item.Properties["SAMAccountName"].Count > 0
               //                && Convert.ToString(item.Properties["distinguishedName"][0]).Contains("OU=" + groupName))
               //            return "Active Directory is all set up! User was authenticated";
               //    }
               //}

               using (PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, serverName, domainName + "\\" + queryUserName, queryPassword))
               {
                   using (UserPrincipal foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, adminUserName))
                   {
                       if (foundUser != null )
                           return "user found";
                       else
                           return "no user!;
                   }
               }
           }
           catch (Exception ex)
           {
               return ex.ToString();
           }
       }



Оба вышеприведенных кода (комментированный и раскомментированный) будут работать по одному за раз. Они работают в моей локальной системе, в консольном приложении.

Но если я перемещу EXE-файл консольного приложения на сервер, где установлен Active Directory, он не будет работать. Вместо этого выбрасывает ниже ошибку.
--------------------------------------------------------------------------------------
System.DirectoryServices.DirectoryServicesCOMException (0x8007052E): The user name or password is incorrect. at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) at System.DirectoryServices.DirectoryEntry.Bind() at System.DirectoryServices.DirectoryEntry.get_AdsObject() at System.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne) at tap.dom.usr.Authentication.ConnectAcitveDirectory(String groupName, String domainName, String serverName, String adminUserName, String queryUserName, String queryPassword)
--------------------------------------------------------------------------------------


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

Спасибо,
Реликвия

Herman<T>.Instance

сообщение довольно ясное: имя пользователя или пароль неверны.
Известен ли пользователь в объявлении?
Какой пользователь подключается?

RelicV

вопрос достаточно ясен?
Я смог подключиться к серверу объявлений с моего локального компьютера.
предоставляются учетные данные пользователя домена.

Herman<T>.Instance

а известен ли пользователь МКС?

RelicV

У меня есть консольное приложение, которое не требует пользователя ISS. Не так ли?
Консольное приложение имеет EXE - файл, который будет отображаться при подключении или ошибке. Он не должен беспокоиться о какой-либо аутентификации/авторизации пользователя, если я прав.

RelicV

Извини, я не должен был отвечать тебе грубо.
Да, у меня есть пользователь домена на сервере, и я предоставляю свои учетные данные как в консоли, так и в веб-приложениях.
Они работают на моем локальном компьютере с использованием IIS и Visual Studio. Но этот код не работает на сервере, где установлены IIS и AD.

ZurdoDev

Вы его пометили через asp.net. Я считаю, что идентификатор пула приложений все еще должен быть учетной записью, которая может вызывать AD.

RelicV

Еще раз повторяю, это консольное приложение.

ZurdoDev

ОК. Но вы можете захотеть удалить ASP.Net тогда поставьте метку на вопрос.

Richard Deeming

Находится ли сервер в том же домене AD, что и ваш компьютер?

Что произойдет, если вы попытаетесь пройти null для serverName параметр?

RelicV

Да, сервер находится в том же домене AD, но мой компьютер-это не тот же домен.
Я не пробовал передавать null для параметра serverName.

rohitmathurcom

Есть ли у вас какое-либо решение для вашей проблемы , пожалуйста, поделитесь им со мной, потому что мы сталкиваемся с одной и той же проблемой

Member 3821526

У меня такая же проблема. Когда я запускаю программу вручную, она работает. Но когда я ставлю его в запланированную задачу, он терпит неудачу. Я даже пробовал использовать службу Windows, но та же проблема.
Вы получить ваши проблемы решены?

0 Ответов