J'ai un site Web qui oblige les utilisateurs à entrer le nom d'utilisateur et le mot de passe de leur réseau d'entreprise. Il recherche ensuite ce compte dans Active Directory et obtient une liste des adresses e-mail associées à ce compte. Le problème que je rencontre est que UN mot de passe incorrect verrouille un compte. Notre politique de domaine est qu'un compte verrouillera après trois entrées incorrectes, donc je suppose que je fais quelque chose de mal dans mon code. Je ne suis pas très bien informé sur Active Directory ou .NET DirectoryServices en général, ce qui peut être évident à partir de mon code. Ici, il est:Le compte Active Directory est verrouillé au premier essai
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; }
}
Sans rapport avec votre question, mais dans le monde où est le point 'catch (Exception) {throw; } '? –
Rien :) Je le mets parfois si je pense que je devrais faire des manipulations supplémentaires là-bas. Je l'utilise également lors du débogage, et cela sert de rappel supplémentaire que ces exceptions pourraient se produire ici. – MJB