Enumerare gli utenti in Active Directory

di Daniele Bochicchio, in ASP.NET, Active Directory, C#,

Sempre più spesso gli utenti in Active Directory vengono utilizzati come sistema per l'autenticazione nell'ambito di applicazioni web, specie intranet.
Attraverso questo semplice script è possibile enumerare tutti gli utenti presenti in un particolare dominio (nello specifico, bochicchio.local) sfruttando un utente ad hoc per le interrogazioni.

using System.DirectoryServices;

private string[] GetUsers()
{
  ArrayList users = new ArrayList;

  // percorso AD, username e password per interrogare
  string path = "LDAP://server2003/DC=bochicchio,DC=local";
  string localUsername = "ADwebuser";
  string localPassword = "adTest";

  // effettuo una ricerca in ActiveDirectory
  DirectorySearcher search = new DirectorySearcher(new DirectoryEntry(path, localUsername, localPassword));
  search.Filter = "(&(objectclass=user)(objectCategory=person))"; // solo persone
  
  // proprietà richieste
  search.PropertiesToLoad.Add("samaccountname");

  search.CacheResults = true;
  search.SizeLimit = 1000; // massimo 1000 utenti

  // cerco gli utenti
  SearchResultCollection results = search.FindAll();
  foreach(SearchResult result in results) 
  {
    // aggiugno lo username alla collezione
    users.Add(result.Properties["samaccountname"][0].ToString());
  }
  search.Dispose();

  // restituisco un array di stringhe
  return (string[])users.ToArray(typeof(String);
}

Il codice restituisce un array di stringhe ed è l'ideale per costruire facilmente una lista degli utenti che appartengono ad un dominio.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi