Active Directory를 처음 사용하는 경우 먼저 Active Directory가 데이터를 저장하는 방법을 이해해야합니다.
Active Directory는 실제로 LDAP 서버입니다. LDAP 서버에 저장된 개체는 계층 적으로 저장됩니다. 파일 시스템에 파일을 저장하는 것과 매우 유사합니다. 이것이 바로 Directory Server와 Active Directory 라는 이름을 갖게 된 이유입니다.
Active Directory의 컨테이너 및 개체는 distinguished name
. 고유 이름은 다음과 같습니다 CN=SomeName,CN=SomeDirectory,DC=yourdomain,DC=com
. 기존 관계형 데이터베이스와 마찬가지로 LDAP 서버에 대해 쿼리를 실행할 수 있습니다. 이를 LDAP 쿼리라고합니다.
.NET에서 LDAP 쿼리를 실행하는 방법에는 여러 가지가 있습니다. DirectorySearcher from 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 이후에 사용됩니다.