Si usted es nuevo en Active Directory, le sugiero que debe entender cómo los datos de Active Directory almacena en primer lugar.
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 recibió el nombre Directorio servidor y Active Directory
Los recipientes y objetos en Active Directory puede ser especificado por un distinguished name
. El nombre completo es así CN=SomeName,CN=SomeDirectory,DC=yourdomain,DC=com
. Al igual que una base de datos relacional tradicional, puede ejecutar consultas en un servidor LDAP. Se llama consulta LDAP.
Hay una serie de formas de ejecutar una consulta LDAP en .NET. Puede usar DirectorySearcher desde System.DirectoryServices
o SearchRequest desde System.DirectoryServices.Protocol
.
Para su pregunta, ya que está pidiendo que encuentre el objeto principal de usuario específicamente, creo que la forma más intuitiva es usar PrincipalSearcher de System.DirectoryServices.AccountManagement
. Puede encontrar fácilmente muchos ejemplos diferentes de google. Aquí hay una muestra que está haciendo 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 una serie de atributos. En particular, givenName
le dará el First Name
y sn
le dará el Last Name
. Sobre el nombre de usuario. Creo que quisiste decir el 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 AD. Uno es samAccountName
, que también se conoce como nombre de inicio de sesión anterior a Windows 2000. userPrincipalName
se utiliza generalmente después de que Windows 2000.
Leer el excelente artículo de MSDN [directores gerente de seguridad para directorio en el .NET Framework 3.5] (http://msdn.microsoft.com/en-us/magazine/cc135979.aspx) para una gran introducción a la utilización de AD con .NET 3.5 –
Parece que el artículo de @marc_s se ha archivado, aquí hay un [enlace actualizado] (http://blogs.msdn.com/b/msdnmagazine/archive/2008/01/16/7120454.aspx) –
@marc_s Me encantaría leer señor, pero el enlace está muerto. Intenté esto https://blogs.msdn.microsoft.com/msdnmagazine/2008/01/16/managing-directory-security-principals-in-the-net-framework-3-5/ pero incluso los enlaces en ese artículo conduce a una página genética para la revista microsoft –