Je dois vérifier les utilisateurs de l'entreprise en utilisant uniquement leur nom d'utilisateur et non leur mot de passe.Comment vérifier si un utilisateur existe sur LDAP
donc je besoin d'une méthode comme celle
public bool UserExists(string username)
{ ... }
Je suis conscient de l'espace de noms System.DirectoryServices
mais ne sais pas où commencer.
Des idées?
Il existe plus de 80 000 enregistrements, alors gardez cela à l'esprit.
Merci.
Edit:
Je l'ai fait - mon code est:
private bool UserExists(string userName, string domain)
{
try
{
DirectoryEntry.Exists("WinNT://" + domain + ".[hidden].com/" + userName);
return true;
}
catch (COMException)
{
return false;
}
}
Je ne sais pas si elle est correcte, mais il semble fonctionner jusqu'à présent.
La réponse de Michael a deux parties concernées:
- http://www.codeproject.com/KB/system/everythingInAD.aspx#22
- http://www.codeproject.com/KB/system/everythingInAD.aspx#35
Mise à jour # 2:
J'ai utilisé ceci:
public static bool LoggedOnUserExists()
{
var domain = new PrincipalContext(ContextType.Domain);
UserPrincipal foundUser = UserPrincipal.FindByIdentity(domain, IdentityType.SamAccountName, Environment.UserName);
return foundUser != null;
}
Vous ne devez PAS ** utiliser ** le fournisseur WinNT - c'est strictement pour rétrocompatibilité, mais cela ne fonctionne généralement pas bien dans un réseau AD –