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
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Per inserire un commento, devi registrarti alla nostra community.








Stampa
Snippet
Download 


