Active Directory'de yeniyseniz, öncelikle Active Directory'nin verileri nasıl depoladığını anlamanızı öneririm.
Active Directory aslında bir LDAP sunucusudur. LDAP sunucusunda depolanan nesneler hiyerarşik olarak saklanır. Dosyalarınızı dosya sisteminizde depolamanıza çok benzer. Bu yüzden Directory server ve Active Directory adını aldı.
Active Directory üzerindeki kapsayıcılar ve nesneler, bir distinguished name
. Ayırt edici isim böyledir CN=SomeName,CN=SomeDirectory,DC=yourdomain,DC=com
. Geleneksel bir ilişkisel veritabanı gibi, bir LDAP sunucusunda sorgu çalıştırabilirsiniz. Buna LDAP sorgusu denir.
.NET'te bir LDAP sorgusu çalıştırmanın birkaç yolu vardır. Sen kullanabilirsiniz DirectorySearcher gelen System.DirectoryServices
veya SearchRequest dan System.DirectoryServices.Protocol
.
Özellikle kullanıcı asıl nesneyi bulmak için soruyorsunuz beri soru için, ben en kolay yoludur kullanmak olduğunu düşünüyorum PrincipalSearcher dan System.DirectoryServices.AccountManagement
. Google'dan pek çok farklı örneği kolayca bulabilirsiniz. İşte tam olarak istediğiniz şeyi yapan bir örnek.
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 kullanıcı nesnesinde bir dizi öznitelik olduğunu unutmayın. Özellikle, givenName
size verecektir First Name
ve sn
size verecektir Last Name
. Kullanıcı adı hakkında. Sanırım kullanıcı oturum açma adını kastettiniz. AD kullanıcı nesnesinde iki oturum açma adı olduğunu unutmayın. Bunlardan biri samAccountName
, Windows 2000 öncesi kullanıcı oturum açma adı olarak da bilinir. userPrincipalName
genellikle Windows 2000'den sonra kullanılır.