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
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
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
- Creare una libreria CSS universale: Cards
- Eseguire script pre e post esecuzione di un workflow di GitHub