Nếu bạn chưa quen với Active Directory, tôi khuyên bạn nên hiểu cách Active Directory lưu trữ dữ liệu trước.
Active Directory thực sự là một máy chủ LDAP. Các đối tượng được lưu trữ trong máy chủ LDAP được lưu trữ theo thứ bậc. Nó rất giống với việc bạn lưu trữ tệp trong hệ thống tệp của mình. Đó là lý do tại sao nó có tên là Directory server và Active Directory
Các vùng chứa và đối tượng trên Active Directory có thể được chỉ định bởi a distinguished name
. Tên phân biệt là như thế này CN=SomeName,CN=SomeDirectory,DC=yourdomain,DC=com
. Giống như cơ sở dữ liệu quan hệ truyền thống, bạn có thể chạy truy vấn với máy chủ LDAP. Nó được gọi là truy vấn LDAP.
Có một số cách để chạy truy vấn LDAP trong .NET. Bạn có thể sử dụng DirectorySearcher từ System.DirectoryServices
hoặc SearchRequest từ System.DirectoryServices.Protocol
.
Đối với câu hỏi của bạn, vì bạn đang yêu cầu tìm đối tượng chính của người dùng một cách cụ thể, tôi nghĩ cách trực quan nhất là sử dụng PrincipalSearcher từ System.DirectoryServices.AccountManagement
. Bạn có thể dễ dàng tìm thấy rất nhiều ví dụ khác nhau từ google. Đây là một mẫu đang làm chính xác những gì bạn đang yêu cầu.
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();
Lưu ý rằng trên đối tượng người dùng AD, có một số thuộc tính. Đặc biệt, givenName
sẽ cung cấp cho bạn First Name
và sn
sẽ cung cấp cho bạn Last Name
. Về tên người dùng. Tôi nghĩ bạn có nghĩa là tên đăng nhập người dùng. Lưu ý rằng có hai tên đăng nhập trên đối tượng người dùng AD. Một là samAccountName
, còn được gọi là tên đăng nhập người dùng trước Windows 2000. userPrincipalName
thường được sử dụng sau Windows 2000.