8

Próbuję utworzyć witrynę intranetową na platformie ASP.NET MVC 4 przy użyciu logowania do systemu Windows. Z powodzeniem wykonałem logowanie do systemu Windows. Jedyne, na co mam ochotę, to przeszukiwanie katalogu aktywnego z częściową nazwą użytkownika. Próbowałem przeszukać stronę internetową i stackoverflow, ale wciąż nie mogłem znaleźć odpowiedzi.ASP.NET Wyszukiwanie katalogu Active Directory

DirectoryEntry directory = new DirectoryEntry("LDAP://DC=NUAXIS"); 
    string filter = "(&(cn=jinal*))"; 
    string[] strCats = { "cn" }; 
    List<string> items = new List<string>(); 
    DirectorySearcher dirComp = new DirectorySearcher(directory, filter, strCats,  SearchScope.Subtree); 
    SearchResultCollection results = dirComp.FindAll(); 
+0

można nas kod użyłeś aby zrobić wyszukiwania w częściowym ksywką? – rene

+0

@rene Dodałem kod do wpisu –

Odpowiedz

13

Można użyć PrincipalSearcher i „query-przez-przykład” główny zrobić swoją wyboru:

// create your domain context 
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain)) 
{ 
    // define a "query-by-example" principal - here, we search for a UserPrincipal 
    // and with the first name (GivenName) of "Jinal*" 
    UserPrincipal qbeUser = new UserPrincipal(ctx); 
    qbeUser.GivenName = "Jinal*"; 

    // create your principal searcher passing in the QBE principal  
    using (PrincipalSearcher srch = new PrincipalSearcher(qbeUser)) 
    { 
     // find all matches 
     foreach(var found in srch.FindAll()) 
     { 
     // do whatever here - "found" is of type "Principal" - 
     // it could be user, group, computer.....   
     } 
    } 
} 

Jeśli nie masz jeszcze - absolutnie przeczytać artykuł MSDN Managing Directory Security Principals in the .NET Framework 3.5 który pokazuje ładnie jak najlepiej wykorzystać nowe funkcje w System.DirectoryServices.AccountManagement. Lub zobacz przestrzeń nazw MSDN documentation on the System.DirectoryServices.AccountManagement.

Oczywiście, w zależności od potrzeb, można określić inne właściwości tego użytkownika głównego „Zapytanie przez przykład” tworzyć:

  • DisplayName (typowo: imię + spacja + nazwisku)
  • SAM Account Name - Twój/AD nazwa konta systemu Windows
  • User Principal Name - Twój "[email protected]" nazwa stylu

można spe zaklasyfikuj dowolne z właściwości na UserPrincipal i użyj ich jako "zapytaj po przykładach" dla twojego PrincipalSearcher.

+0

Dzięki, że bardzo pomogło. –

0

Twój obecny kod jest na dobrej drodze. Myślę, że masz swój symbol wieloznaczny do tyłu.

Rozważ to:

search.Filter = string.Format("(&(sn={0}*)(givenName={1}*)(objectSid=*))", lastName, firstName); 
Powiązane problemy