Autenticazione di ASP.NET su Classic ASP

di Daniele Bochicchio, in ASP.NET,

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.

2 pagine in totale: 1 2

Attenzione: Questo articolo contiene un allegato.

Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata