Ошибка при подключении к 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, но та же проблема.
Вы получить ваши проблемы решены?