2009-06-12 25 views
5

Có một Lớp Trình trợ giúp Thư mục Họat động có ở đâu đó không? Chỉ cần kiểm tra trước khi tôi tái phát minh ra bánh xe.Lớp Trình trợ giúp Thư mục Họat động

tôi cần phải

  1. Validate một người dùng trong AD.

  2. Nhận vai trò của thành viên.

Cảm ơn

Trả lời

10

Trong .NET 3.5, bạn muốn tìm trong System.DirectoryServices.AccountManagement. Trước đó, các phiên bản System.DirectoryServices có những gì bạn cần, nhưng nó hoạt động nhiều hơn một chút.

using (var context = new PrincipalContext(ContextType.Domain)) 
{ 
     var valid = context.ValidateCredentials(username, password); 
     using (var user = UserPrincipal.FindByIdentity(context, 
                 IdentityType.SamAccountName, 
                 username)) 
     { 
      var groups = user.GetAuthorizationGroups(); 
     } 
} 
+0

Tôi đang phát triển trên một máy tính xách tay không phải là một phần của miền. Tôi có thể chuyển yêu cầu đó cho AD không? –

+2

Nếu người dùng của bạn là cục bộ với máy, bạn có thể sử dụng ContextType.Machine thay vì ContextType.Domain để tập trung truy vấn của bạn vào cửa hàng ủy quyền cục bộ. – tvanfosson

3

Dưới đây là một số mã ví dụ mà tôi đã được sử dụng:

using System.DirectoryServices; 

public static string GetProperty(SearchResult searchResult, 
    string PropertyName) 
{ 
    if (searchResult.Properties.Contains(PropertyName)) 
     return searchResult.Properties[PropertyName][0].ToString(); 
    else 
     return string.Empty; 
} 

public MyCustomADRecord Login(string UserName, string Password) 
{ 
    string adPath = "LDAP://www.YourCompany.com/DC=YourCompany,DC=Com"; 

    DirectorySearcher mySearcher; 
    SearchResult resEnt; 

    DirectoryEntry de = new DirectoryEntry(adPath, UserName, Password, 
     AuthenticationTypes.Secure); 
    mySearcher = new DirectorySearcher(de); 

    string adFilter = "(sAMAccountName=" + UserName + ")"; 
    mySearcher.Filter = adFilter; 

    resEnt = mySearcher.FindOne(); 


    return new MyCustomADRecord() 
    { 
     UserName = GetProperty(resEnt, "sAMAccountName"), 
     GUID = resEnt.GetDirectoryEntry().NativeGuid.ToString(), 
     DisplayName = GetProperty(resEnt, "displayName"), 
     FirstName = GetProperty(resEnt, "givenName"), 
     MiddleName = GetProperty(resEnt, "initials"), 
     LastName = GetProperty(resEnt, "sn"), 
     Company = GetProperty(resEnt, "company"), 
     JobTitle = GetProperty(resEnt, "title"), 
     Email = GetProperty(resEnt, "mail"), 
     Phone = GetProperty(resEnt, "telephoneNumber"), 
     ExtensionAttribute1 = GetProperty(resEnt, "extensionAttribute1") 
    }; 
} 
+0

Tôi đánh giá cao việc bạn chia sẻ điều này. –

Các vấn đề liên quan