Jika Anda baru mengenal Active Directory, saya sarankan Anda memahami cara Active Directory menyimpan data terlebih dahulu.
Active Directory sebenarnya adalah server LDAP. Objek yang disimpan di server LDAP disimpan secara hierarki. Ini sangat mirip dengan Anda menyimpan file di sistem file Anda. Itu sebabnya ia mendapat nama server Direktori dan Direktori Aktif
Wadah dan objek di Active Directory dapat ditentukan dengan a distinguished name
. Nama yang dibedakan adalah seperti ini CN=SomeName,CN=SomeDirectory,DC=yourdomain,DC=com
. Seperti database relasional tradisional, Anda dapat menjalankan kueri pada server LDAP. Ini disebut kueri LDAP.
Ada sejumlah cara untuk menjalankan kueri LDAP di .NET. Anda dapat menggunakan DirectorySearcher dari System.DirectoryServices
atau SearchRequest dari System.DirectoryServices.Protocol
.
Untuk pertanyaan Anda, karena Anda meminta untuk menemukan objek utama pengguna secara khusus, menurut saya cara yang paling intuitif adalah dengan menggunakan PrincipalSearcher dari System.DirectoryServices.AccountManagement
. Anda dapat dengan mudah menemukan banyak contoh berbeda dari google. Berikut adalah contoh yang melakukan apa yang Anda minta.
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();
Perhatikan bahwa pada objek pengguna AD, ada sejumlah atribut. Secara khusus, givenName
akan memberi Anda First Name
dan sn
akan memberi Anda Last Name
. Tentang nama pengguna. Saya pikir yang Anda maksud adalah nama logon pengguna. Perhatikan bahwa ada dua nama logon pada objek pengguna AD. Salah satunya samAccountName
, yang juga dikenal sebagai nama logon pengguna pra-Windows 2000. userPrincipalName
umumnya digunakan setelah Windows 2000.