ASP.NET, a differenza di Classic ASP, fornisce delle API molto comode per l'autenticazione e la successiva protezione delle nostre pagine web. Il modello attuale, che prevede ancora una buona dose di fai-da-te, sarà ulteriormente potenziato con l'uscita di ASP.NET 2.0 , grazie alle membership and roles APIs. Nel frattempo, già con ASP.NET 1.x è possibile costruire sistemi di autenticazione anche complessi .
Purtroppo non possiamo migrare in toto le nostre applicazioni da ASP verso ASP.NET, ragione per la quale, in breve, siamo costretti a raggiungere compromessi nello sviluppo delle nostre applicazioni, magari dovendo rinunciare ad alcune features di ASP.NET per compatibilità.
Form Authentication sotto la lente
Per comprendere meglio come integrare l'autenticazione ASP.NET in un'applicazione ASP dobbiamo per prima cosa comprendere a fondo come venga gestita all'interno del framework. Per prima cosa, le funzionalità di autenticazione, al pari di altre caratteristiche, sono fornite attraverso un HttpModule.
Questo vuol dire che il flusso seguito da una richiesta passa per la classe che gestisce la form authentication, per decidere o meno se la richiesta vada autenticata o meno. Trovate una spiegazione dettagliata in questo articolo .
Senza dilungarci molto, l'HttpModule creerà un cookie (a meno che la modalità di protezione non preveda il cookieless, che però vi sconsiglio per molti motivi) contenente le informazioni di autenticazione. Nella maggior parte dei casi il suo contenuto sarà criptato, ma questo non rappresenta per noi un grosso problema, visto che quello che vogliamo fare è offrire nelle pagine ASP un semplice sistema di protezione dentro o fuori , che però si basi sulle comode APIs di ASP.NET.
La protezione di ASP.NET
Per proteggere un'applicazione ASP.NET si interviene nel web.config, aggiungendo grossomodo un codice come questo:
<configuration>
<system.web>
<authentication mode="Forms">
<forms name="authcookie"
path="/"
loginUrl="login.aspx"
protection="All"
timeout="30">
<credentials passwordFormat="Clear">
<user name="test" password="test" />
<user name="test2" password="test" />
</credentials>
</forms>
</authentication>
</configuration>
Abbiamo definito due utenti, per nostra comodità direttamente nel file. Probabilmente nella vostra applicazione utilizzerete un database, per cui vi consiglio la lettura di questo articolo .
Di particolare importanza sono i valori delle proprietà name, path e loginUrl, che stanno ad indicare il nome del cookie, il percorso su cui è visibile e la pagina di login.
Per proteggere una pagina ASP.NET utilizzeremo la solita sintassi, da aggiungere sempre al web.config:
<location path="soloutenti.aspx">
<system.web>
<authorization>
<allow users="test,test2" />
</authorization>
</system.web>
</location>
In questo modo la pagina soloutenti.aspx sarà protetta e potranno avere accesso solo gli utenti test e test2.
Se provassimo ad accedere alla pagina direttamente, senza passare per il login, saremmo rediretti ad un URL come http://localhost/auth/login.aspx?ReturnUrl=%2fauth%2fsoloutenti.aspx
Viene quindi passato come parametro la pagina a cui abbiamo cercato di accedere, cosa che ci tornerà utile, come vedremo, per integrare l'autenticazione anche con pagine ASP.
In caso di login, verrà utilizzato il metodo RedirectFromLoginPage della classe FormsAuthentication, che provvede a leggere il valore di ReturnUrl tra le header, provvedendo a fare il redirect. Nel frattempo è stato creato un cookie, prendendo come nome quello specificato nel web.config.
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
- Realizzare applicazioni ASP.NET sicure - Seconda parte
- #933 - Una GridView con supporto per più righe selezionabili
- Realizzare un custom extender AJAX con ASP.NET 3.5
- #951 - Accedere ai dati con i Dynamic Data Controls di ASP.NET 3.5 SP 1
- Velocity: ADO.NET Distributed Cache
- Piccoli grandi VWD Express 2008 crescono
- Tutto per portarsi il .NET Framework 3.5 sotto l'ombrellone
- #948 - Recuperare l'ID del controllo che ha scatenato l'AsyncPostBack con ASP.NET AJAX
- The Developer Highway Code
- #943 - Leggere feed RSS e Atom con il .NET Framework 3.5
- #947 - La direttiva OutputCache con ASP.NET 2.0 e 3.5
- Speciale per il lancio di Visual Studio 2008, SQL Server 2008 e Windows Server 2008 dal 25/02 al 07/03
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.





Stampa
Download


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!