У меня есть веб-сайт, который требует, чтобы пользователи вводили имя и пароль своей корпоративной сети. Затем он ищет эту учетную запись в Active Directory и получает список любых адресов электронной почты, связанных с этой учетной записью.Аккаунт Active Directory с первой попытки
Проблема, с которой я столкнулась, заключается в том, что один неверный пароль блокирует учетную запись. Наша политика домена заключается в том, что учетная запись будет заблокирована после трех неправильных записей, поэтому я предполагаю, что я делаю что-то неправильно в своем коде. Я не очень хорошо разбираюсь в Active Directory или .NET DirectoryServices в целом, что может быть очевидно из моего кода. Вот оно:
public ArrayList AuthenticateActiveDirectory(string Domain, string UserName, string Password)
{
// An error occurs if the username/password combo does not exist.
// That is how we know it is not a valid entry.
try
{
DirectoryEntry entry = new DirectoryEntry("LDAP://" + Domain, UserName, Password);
object nativeObject = entry.NativeObject;
ArrayList emails = new ArrayList();
DirectorySearcher ds = new DirectorySearcher(entry);
ds.Filter = "samaccountname=" + UserName;
ds.PropertiesToLoad.Add("mail");
SearchResult sr = ds.FindOne();
if (sr.Properties["mail"] != null)
{
for (int email = 0; email < sr.Properties["mail"].Count; email++)
{
emails.Add(sr.Properties["mail"][email]);
}
}
return emails;
}
catch (DirectoryServicesCOMException) { throw; }
catch (Exception) { throw; }
}
Не имеет отношения к вашему вопросу, но что в мире является точкой 'catch (Exception) {throw; } '? –
Ничего :) Я иногда добавляю это, если думаю, что мне, возможно, понадобится дополнительная обработка. Я также использую его при отладке, и он служит дополнительным напоминанием о том, что эти исключения могут произойти здесь. – MJB