Comment vérifier si un utilisateur existe sur LDAP
J'ai besoin de vérifier l'identité des utilisateurs dans l'entreprise en utilisant uniquement leur nom d'utilisateur - pas de mot de passe.
J'ai donc besoin d'une méthode comme ceci
public bool UserExists(string username)
{ ... }
Je suis conscient de la System.DirectoryServices
espace de noms mais ne savez pas par où commencer.
Des idées?
Il y a 80,000+ enregistrements donc, essayez de garder cela à l'esprit.
Merci.
Edit:
J'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 c'est correct, mais il semble fonctionner pour autant.
Michael réponse en deux parties:
- 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 devez vous PAS utiliser le dossier WinNT fournisseur de plus - il est strictement à des fins de compatibilité descendante, mais il généralement ne fonctionne pas bien dans un réseau AD
OriginalL'auteur Nobody | 2010-11-29
Vous devez vous connecter pour publier un commentaire.
.NET 3.5 et plus, vous pouvez utiliser le
System.DirectoryServices.AccountManagement
espaces de noms pour ce faire, tout simplement:Cela fonctionne avec la régularité nom d'utilisateur
John Doe
, ou alternativement, vous pouvez utiliser de l'utilisateur adresse e-mail ([email protected]
), ou de son nom unique (CN=John Doe
) - voir ce que laIdentityType
énumération a à offrir 🙂Je suppose que c'recherches sur le domaine actuel? Est-il de toute façon à utiliser cette méthode et spécifiez un nom de domaine?
assurez-vous - la
PrincipalContext
a de nombreux constructeurs surchargés (parfaitement documentée sur le site MSDN), qui vous permettent de spécifier un nom de domaine et/ou un conteneur dans ce domaine à utiliser pour la rechercheOriginalL'auteur marc_s
Bon article pour commencer:
Howto: (Presque) Tout Dans Active Directory via C#
OriginalL'auteur Michael Pakhantsov