Condividi tramite


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

Authenticate

Date le credenziali fornite, tenta di convalidare quelle contenute nell'archivio delle credenziali configurato.

Decrypt

Restituisce un'istanza della classe FormsAuthenticationTicket, in base a un ticket di autenticazione crittografato ottenuto da un cookie HTTP.

Encrypt

Dato un oggetto FormsAuthenticationTicket, produce una stringa contenente un ticket di autenticazione crittografato che è possibile utilizzare in un cookie HTTP.

GetAuthCookie

Recupera un cookie di autenticazione crittografato come un'istanza di HttpCookie. Il cookie non viene aggiunto all'insieme Cookies.

GetRedirectUrl

Restituisce l'URL di reindirizzamento relativo alla richiesta che ha determinato il reindirizzamento alla pagina di accesso.

HashPasswordForStoringInConfigFile

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.

Initialize

Inizializza la classe FormsAuthentication leggendo le impostazioni di configurazione e ottenendo i valori dei cookie e i valori di crittografia per l'applicazione corrente.

RedirectFromLoginPage

Reindirizza un utente autenticato all'URL richiesto in origine.

RenewTicketIfOld

Aggiorna la scadenza variabile su un FormsAuthenticationTicket.

SetAuthCookie

Crea un ticket di autenticazione e lo allega all'insieme di cookie della risposta in uscita.

SignOut

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

FormsCookieName

Ottiene il nome del cookie per l'applicazione corrente.

FormsCookiePath

Ottiene il percorso del cookie per l'applicazione corrente.

CookiesSupported

Ottiene un valore che indica se l'applicazione è configurata per il supporto dell'autenticazione basata su form senza cookie.

CookieMode

Ottiene un valore che indica se l'applicazione è configurata per l'autenticazione basata su form senza cookie.

CookieDomain

Ottiene il valore del dominio del cookie di autenticazione basata su form.

DefaultUrl

Ottiene l'URL a cui l'autenticazione basata su form eseguirà il reindirizzamento se non viene specificato alcun URL di reindirizzamento.

LoginUrl

Ottiene l'URL della pagina di accesso a cui l'autenticazione basata su form eseguirà il reindirizzamento.

RequireSSL

Ottiene un valore che indica se i cookie devono essere trasmessi mediante SSL (Secure Sockets Layer).

SlidingExpiration

Ottiene un valore che indica se è attivata la scadenza variabile.

EnableCrossAppRedirects

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.

Vedere anche

Riferimenti

FormsAuthentication

FormsAuthenticationTicket

HttpCookie

Altre risorse

Protezione delle applicazioni Web ASP.NET

Provider di autenticazione basata su form