#724 - Ricavare i gruppi di un utente in Active Directory

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.

Per approfondimenti si veda:

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

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

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


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC