Если вы новичок в Active Directory, я предлагаю вам сначала понять, как Active Directory хранит данные.
Active Directory на самом деле является сервером LDAP. Объекты, хранящиеся на сервере LDAP, хранятся иерархически. Это очень похоже на хранение ваших файлов в вашей файловой системе. Вот почему он получил имя Каталог сервер и Active Каталог
Контейнеры и объекты в Active Directory могут быть указаны с помощью distinguished name
. Отличительное имя таково CN=SomeName,CN=SomeDirectory,DC=yourdomain,DC=com
. Как и в традиционной реляционной базе данных, вы можете выполнять запросы к серверу LDAP. Это называется запрос LDAP.
Существует несколько способов выполнить запрос LDAP в .NET. Вы можете использовать DirectorySearcher из System.DirectoryServices
или SearchRequest из System.DirectoryServices.Protocol
.
По вашему вопросу, поскольку вы просите найти основной объект пользователя специально, я думаю, что наиболее интуитивный способ - это использовать PrincipalSearcher из System.DirectoryServices.AccountManagement
. Вы можете легко найти много разных примеров из Google. Вот пример, который делает именно то, что вы просите.
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();
Обратите внимание, что в объекте пользователя AD имеется ряд атрибутов. В частности, givenName
даст вам First Name
, а sn
даст вам Last Name
. О имени пользователя. Я думаю, что вы имели в виду имя пользователя для входа. Обратите внимание, что в объекте пользователя AD есть два имени для входа. Один из них - samAccountName
, который также известен как имя пользователя до Windows 2000. userPrincipalName
обычно используется после Windows 2000.