Utilità dell'autenticazione basata su form
Aggiornamento: novembre 2007
Per gestire l'autenticazione basata su form, è possibile utilizzare metodi statici della classe FormsAuthentication. Nella tabella riportata di seguito sono elencati i metodi.
Metodo |
Descrizione |
---|---|
Date le credenziali fornite, tenta di convalidare quelle contenute nell'archivio delle credenziali configurato. |
|
Restituisce un'istanza della classe FormsAuthenticationTicket, in base a un ticket di autenticazione crittografato ottenuto da un cookie HTTP. |
|
Dato un oggetto FormsAuthenticationTicket, produce una stringa contenente un ticket di autenticazione crittografato che è possibile utilizzare in un cookie HTTP. |
|
Recupera un cookie di autenticazione crittografato come un'istanza di HttpCookie. Il cookie non viene aggiunto all'insieme Cookies. |
|
Restituisce l'URL di reindirizzamento relativo alla richiesta che ha determinato il reindirizzamento alla pagina di accesso. |
|
In base a una password e a una stringa che identifica il tipo hash, produce una password hash che è possibile memorizzare in un file di configurazione. |
|
Inizializza la classe FormsAuthentication leggendo le impostazioni di configurazione e ottenendo i valori dei cookie e i valori di crittografia per l'applicazione corrente. |
|
Reindirizza un utente autenticato all'URL richiesto in origine. |
|
Aggiorna la scadenza variabile su un FormsAuthenticationTicket. |
|
Crea un ticket di autenticazione e lo allega all'insieme di cookie della risposta in uscita. |
|
Rimuove il ticket di autenticazione impostando il cookie di autenticazione o il testo dell'URL su un valore vuoto. Vengono rimossi sia i cookie permanenti che quelli di sessione.
Nota importante:
Sebbene il metodo SignOut cancelli il ticket dalla sessione del browser autenticata, l'applicazione può essere ancora soggetta a un attacco di tipo replay da un'origine indesiderata che ha rilevato la presenza di un ticket di autenticazione. Per informazioni su come contrastare un attacco di tipo replay con l'autenticazione basata su form, vedere SignOut.
|
Nella tabella riportata di seguito sono elencate le proprietà utili per la gestione dei ticket dell'autenticazione basata su form.
Proprietà |
Descrizione |
---|---|
Ottiene il nome del cookie per l'applicazione corrente. |
|
Ottiene il percorso del cookie per l'applicazione corrente. |
|
Ottiene un valore che indica se l'applicazione è configurata per il supporto dell'autenticazione basata su form senza cookie. |
|
Ottiene un valore che indica se l'applicazione è configurata per l'autenticazione basata su form senza cookie. |
|
Ottiene il valore del dominio del cookie di autenticazione basata su form. |
|
Ottiene l'URL a cui l'autenticazione basata su form eseguirà il reindirizzamento se non viene specificato alcun URL di reindirizzamento. |
|
Ottiene l'URL della pagina di accesso a cui l'autenticazione basata su form eseguirà il reindirizzamento. |
|
Ottiene un valore che indica se i cookie devono essere trasmessi mediante SSL (Secure Sockets Layer). |
|
Ottiene un valore che indica se è attivata la scadenza variabile. |
|
Ottiene un valore che indica se gli utenti autenticati possono essere reindirizzati agli URL in altre applicazioni Web quando il ticket di autenticazione basata su form non è memorizzato in un cookie. |
I metodi della classe FormsAuthentication possono essere utilizzati per personalizzare la modalità di funzionamento dell'autenticazione basata su form. È inoltre possibile utilizzarli nel gestore della pagina di accesso per evitare di codificare esplicitamente il reindirizzamento. Nell'esempio di codice riportato di seguito viene illustrata una pagina Web ASP.NET in cui l'utente viene autenticato e reindirizzato alla pagina richiesta.
<html>
<head>
<script language="VB" runat=server>
Sub SubmitBtn_Click(Source As Object, e As EventArgs)
' Try to authenticate credentials supplied by user.
If FormsAuthentication.Authenticate _
(UserName.Value, UserPassword.Value) Then
Dim ticket As New FormsAuthenticationTicket _
(UserName.Value, False, 5000)
FormsAuthentication.RedirectFromLoginPage _
(UserName.Value, Persist.Checked)
End If
End Sub
</script>
</head>
<body>
<form method=post runat=server>
<table>
<tr>
<td>Name:</td>
<td><input type="text" id="UserName" runat=server/>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" id="UserPassword" runat=server/>
</td>
</tr>
</table>
<input type="checkbox" id="Persist" runat=server/>
<!-- Use persistent cookie -->
<br>
<input type="submit" OnServerClick="SubmitBtn_Click" runat=server/>
</form>
</body>
</html>
<html>
<head>
<script language="C#" runat=server>
void SubmitBtn_Click(Object Source, EventArgs e)
{
// Try to authenticate credentials supplied by user.
if (FormsAuthentication.Authenticate(UserName.Value,
UserPassword.Value))
{
FormsAuthenticationTicket ticket = new
FormsAuthenticationTicket(UserName.Value, false, 5000);
FormsAuthentication.RedirectFromLoginPage(UserName.Value,
Persist.Checked);
}
}
</script>
</head>
<body>
<form method=post runat=server>
<table>
<tr>
<td>Name:</td>
<td><input type="text" id="UserName" runat=server/></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" id="UserPassword" runat=server/>
</td>
</tr>
</table>
<input type="checkbox" id="Persist" runat=server/>
<!-- Use persistent cookie. -->
<br>
<input type="submit" OnServerClick="SubmitBtn_Click" runat=server/>
</form>
</body>
</html>
Le applicazioni che necessitano di un controllo dettagliato sulle proprietà dei cookie HTTP possono costruire il ticket ed eseguire il reindirizzamento mediante un codice personalizzato. In questi casi, per crittografare il ticket di autenticazione è opportuno utilizzare i metodi di crittografia della classe FormsAuthentication.