Ricavare i gruppi di un utente in Active Directory

di Daniele Bochicchio, in ASP.NET, Active Directory, FormsAuthentication,

Negli script #705 e #715 abbiamo visto come utilizzare Active Directory come storage per gli utenti e sfruttare quindi la FormsAuthentication per continuare a proteggere le nostre applicazioni.
Poichè sempre più spesso è necessario sfruttare anche i ruoli per discriminare l'accesso alle funzionalità dell'applicazione, è possibile ricavarli, per poi creare un nuovo GenericPrincipal, con questo codice:

using System.DirectoryServices;

public String GetGroups(string userName)
{
  // 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 per username
  DirectorySearcher search = new DirectorySearcher(new DirectoryEntry(path, localUsername, localPassword));
  search.Filter = String.Format("(cn={0})", userName);

  // specifico la proprietà da leggere in AD
  search.PropertiesToLoad.Add("memberOf");
  StringBuilder groups = new StringBuilder();

  // cerca un solo utente
  SearchResult ADresult = search.FindOne();

  // se non trova l'utente...
  if (ADresult == null)
  return null;

  // se lo trova, elenchiamo i gruppi a cui appartiene
  int propertyCount = ADresult.Properties["memberOf"].Count;

  for(int propertyCounter = 0; propertyCounter < propertyCount; propertyCounter++)
  {
    groups.Append((string)ADresult.Properties["memberOf"][propertyCounter]);
    groups.Append(";");
  }

  // restituisco l'elenco separato da ;
  return groups.ToString();
}

Il tutto va poi normalmente integrato come se i ruoli fossero letti direttamente da database.

Approfondimenti


Speciale FormsAuthentication
https://www.aspitalia.com/servizi/focus/mostra.aspx?ID=640

#705 - Enumerare gli utenti in Active Directory
https://www.aspitalia.com/liste/usag/script.aspx?ID=705

#715 - Forms Authentication con login via Active Directory
https://www.aspitalia.com/liste/usag/script.aspx?ID=715

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