Si es nuevo en Active Directory, le sugiero que primero comprenda cómo Active Directory almacena los datos.
Active Directory es en realidad un servidor LDAP. Los objetos almacenados en el servidor LDAP se almacenan jerárquicamente. Es muy similar a almacenar sus archivos en su sistema de archivos. Es por eso que obtuvo el nombre de servidor de directorio y Active Directory
Los contenedores y objetos de Active Directory se pueden especificar mediante un distinguished name
. El nombre distinguido es así CN=SomeName,CN=SomeDirectory,DC=yourdomain,DC=com
. Como una base de datos relacional tradicional, puede ejecutar consultas en un servidor LDAP. Se llama consulta LDAP.
Hay varias formas de ejecutar una consulta LDAP en .NET. Puede utilizar DirectorySearcher desde System.DirectoryServices
o SearchRequest desde System.DirectoryServices.Protocol
.
Para su pregunta, dado que está pidiendo encontrar el objeto principal del usuario específicamente, creo que la forma más intuitiva es usar PrincipalSearcher de System.DirectoryServices.AccountManagement
. Puede encontrar fácilmente muchos ejemplos diferentes en Google. Aquí hay una muestra que hace exactamente lo que está pidiendo.
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();
Tenga en cuenta que en el objeto de usuario de AD, hay varios atributos. En particular, givenName
le dará el First Name
y sn
le dará el Last Name
. Sobre el nombre de usuario. Creo que te refieres al nombre de inicio de sesión del usuario. Tenga en cuenta que hay dos nombres de inicio de sesión en el objeto de usuario de AD. Uno es samAccountName
, que también se conoce como nombre de inicio de sesión de usuario anterior a Windows 2000. userPrincipalName
se utiliza generalmente después de Windows 2000.