Si vous êtes nouveau dans Active Directory, je vous suggère de comprendre d'abord comment Active Directory stocke les données.
Active Directory est en fait un serveur LDAP. Les objets stockés sur le serveur LDAP sont stockés de manière hiérarchique. C'est très similaire au stockage de vos fichiers dans votre système de fichiers. C'est pourquoi il a le nom de serveur d' annuaire et Active Directory
Les conteneurs et objets sur Active Directory peuvent être spécifiés par un distinguished name
. Le nom distinctif est comme ça CN=SomeName,CN=SomeDirectory,DC=yourdomain,DC=com
. Comme une base de données relationnelle traditionnelle, vous pouvez exécuter une requête sur un serveur LDAP. C'est ce qu'on appelle la requête LDAP.
Il existe plusieurs façons d'exécuter une requête LDAP dans .NET. Vous pouvez utiliser DirectorySearcher à partir de System.DirectoryServices
ou SearchRequest à partir de System.DirectoryServices.Protocol
.
Pour votre question, puisque vous demandez de trouver spécifiquement l'objet principal de l'utilisateur, je pense que le moyen le plus intuitif est d'utiliser PrincipalSearcher à partir de System.DirectoryServices.AccountManagement
. Vous pouvez facilement trouver de nombreux exemples différents sur Google. Voici un exemple qui fait exactement ce que vous demandez.
using (var context = new PrincipalContext(ContextType.Domain, "yourdomain.com"))
{
using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
{
foreach (var result in searcher.FindAll())
{
DirectoryEntry de = result.GetUnderlyingObject() as DirectoryEntry;
Console.WriteLine("First Name: " + de.Properties["givenName"].Value);
Console.WriteLine("Last Name : " + de.Properties["sn"].Value);
Console.WriteLine("SAM account name : " + de.Properties["samAccountName"].Value);
Console.WriteLine("User principal name: " + de.Properties["userPrincipalName"].Value);
Console.WriteLine();
}
}
}
Console.ReadLine();
Notez que sur l'objet utilisateur AD, il existe un certain nombre d'attributs. En particulier, givenName
vous donnera le First Name
et sn
vous donnera le Last Name
. À propos du nom d'utilisateur. Je pense que vous vouliez dire le nom de connexion de l'utilisateur. Notez qu'il existe deux noms de connexion sur l'objet utilisateur AD. Le premier est samAccountName
, également connu sous le nom de nom de connexion utilisateur antérieur à Windows 2000. userPrincipalName
est généralement utilisé après Windows 2000.