Я пытаюсь создать веб-сайт интрасети, который может искать адрес электронной почты пользователей на основе имени пользователя Active Directory.Как настроить веб-сайт ASP.Net для доступа к Active Directory
У меня есть следующие в моем web.config:
<authentication mode="Windows"/>
<identity impersonate="true"/>
И можно получить пользователи UserName с:
Environment.UserName
Запуск на локальном хосте, следующий код позволяет мне для запроса AD и получить электронное письмо:
public string GetADUser(string userName)
{
DirectoryEntry entry = new DirectoryEntry();
// get a DirectorySearcher object
DirectorySearcher search = new DirectorySearcher(entry);
// specify the search filter
search.Filter = "(&(objectClass=user)(anr=" + userName + "))";
// specify which property values to return in the search
search.PropertiesToLoad.Add("mail"); // smtp mail address
// perform the search
SearchResult result = search.FindOne();
string email = string.Empty;
if (result != null)
{
if (result.Properties["mail"].Count == 1)
{
email = result.Properties["mail"][0].ToString();
}
else
{
email = "no email";
}
}
else
{
email = "not found";
}
return email;
}
Отлично, этот код проходит аутентификацию, используя мои учетные данные d efault и позволяет мне ввести имя пользователя и найти адрес электронной почты пользователей.
Однако, когда я загружаю этот тестовый код на сервер, код перестает работать, если я просматриваю сайт из любого места, кроме локального.
[COMException (0x80072020): An operations error occurred.]
В результате поиска в Google обнаружена проблема с разрешениями.
Чтобы обойти это, я попытался установить идентификатор пула приложений на мои учетные данные, но это все еще не позволяет коду выполнять поиск в AD.
аутентификации веб-сайт настроен в IIS следующим образом (активированные элементы помечены < <):
Anonymous Authentication:Disabled
ASP.NET Impersonation:Enabled <<
Basic Authentication:Disabled
Digest Authentication:Disabled
Forms Authentication:Disabled
Windows Authentication:Enabled <<
Возможно ли это делать то, что я пытаюсь сделать? Что мне не хватает?
Возможно, вам это будет полезно: http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C – 5arx
Спасибо, я прочитаю и посмотрю, если это помогает. – philreed
Много информации по ссылке, спасибо. Я буду хранить эти закладки для дальнейшего использования. У него не было прямого решения проблемы, с которой я столкнулся, но это определенно дало мне лучшее понимание AD. – philreed