2009-06-12 15 views
5

क्या कोई सक्रिय निर्देशिका सहायक वर्ग कहीं उपलब्ध है? पहिया का पुन: आविष्कार करने से पहले बस जांच कर रहा हूं।सक्रिय निर्देशिका सहायक वर्ग

मैं

  1. मान्य करने के लिए ई में एक उपयोगकर्ता की जरूरत है।

  2. उसकी सदस्य भूमिकाएं प्राप्त करें।

धन्यवाद

उत्तर

10

.NET 3.5 में, आप System.DirectoryServices.AccountManagement में देखने के लिए चाहते हैं। पहले के लिए, संस्करण System.DirectoryServices में आपको जो चाहिए वह है, लेकिन यह थोड़ा और काम है।

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

मैं एक लैपटॉप पर विकास कर रहा हूं जो डोमेन का हिस्सा नहीं है। क्या मैं इस तरह के अनुरोध को एडी को पास कर सकता हूं? –

+2

यदि आपके उपयोगकर्ता मशीन के लिए स्थानीय हैं, तो आप ContextType.Machine का उपयोग ContextType.Domain के बजाय स्थानीय प्राधिकरण स्टोर के विरुद्ध अपने प्रश्नों पर ध्यान केंद्रित करने के लिए कर सकते हैं। – tvanfosson

2

System.DirectoryServices.ActiveDirectory नाम स्थान

http://msdn.microsoft.com/en-us/library/system.directoryservices.activedirectory.aspx

+1

यह वह जगह है वास्तव में के साथ बातचीत और ActiveDirectory के प्रशासनिक पहलुओं के प्रबंधन के लिए - आदि उपयोगकर्ता स्कीमा, सर्वर, साइटों, वन, संबंधित घटक एक अलग नेमस्पेस में हैं। – tvanfosson

+0

सुधार के लिए धन्यवाद, विधिवत –

3

यहाँ कुछ उदाहरण कोड है कि मैं का उपयोग किया गया है:

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

मैं इसे साझा करने की सराहना करता हूं। –

संबंधित मुद्दे