Spesso, specie all'interno di intranet, è necessario integrare l'applicazione web con un dominio in Active Directory già esistente, per evitare il proliferare di password e gestire l'accesso alle applicazioni da un punto centralizzato.
In casi come questi è possibile continuare ad utilizzare la Forms Authentication, come spiegato in diversi articoli pubblicati in passato, aggiungendo però l'autenticazione basata su Active Directory.
Prendendo spunto dallo script #705, è possibile variare la pagina di login in modo che contenga una funzione come la seguente, che si occupa di effettuare il login via Active Directory:
private bool Login(string username, string password) { // percorso AD - leggere da web.config string path = "LDAP://server2003/DC=bochicchio,DC=local"; try { // effettuo una ricerca in Active Directory using (DirectorySearcher search = new DirectorySearcher(new DirectoryEntry(path, username, password))) { // cerca utente search.Filter = "(&(objectclass=user)(objectCategory=person)(SAMAccountName=" + (username.IndexOf("@")>-1? username.Split('@')[0] : username) + "))"; // proprietà richieste search.PropertiesToLoad.Add("cn"); // nome reale // verifico che l'utente ci sia var result = search.FindOne(); if (result == null) return false; // imposto il vero nome in una variabile, da passare var name = result.Properties["cn"][0].ToString(); // se arriva qui, è stato autenticato return true; } } catch { // se c'è un errore, allora non ha passato il login return false; } }
Il resto del codice è lo stesso da utilizzare per la Forms Authentication. Per approfondimenti:
https://www.aspitalia.com/articoli/articoli_ricerca_forms_authentication.aspx
https://www.aspitalia.com/liste/usag/script_ricerca_forms_authentication.aspx
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
- PWAConf 2020 - Online
- Reactive form tipizzati con FormBuilder in Angular
- Utilizzare ChatGPT con Azure OpenAI
- Mantenere sempre reattiva una Lambda di AWS
- Messaggi in tempo reale con Blazor Server
- Una chat con #aspnetcore e #websockets https://aspit.co/bmh di @GentiliMoreno #webapi #aspnetcore2
- Autenticarsi in modo sicuro su Azure tramite GitHub Actions
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Creare una MarkupExtension per accedere alle proprietà statiche in Silverlight 5.0
- Navigare la struttura visuale di un UIElement fino a recuperare l'elemento logico in Silverlight 3.0