Condividi tramite


Credenziali per l'autenticazione basata su form

Aggiornamento: novembre 2007

Le credenziali per l'autenticazione basata su form utilizzate per convalidare gli utenti al momento dell'accesso possono essere memorizzate in un'origine dati esterna o nel file di configurazione dell'applicazione.

Nota:

Il sistema di appartenenze di ASP.NET rappresenta il metodo preferito per la memorizzazione e la gestione delle credenziali utente nelle applicazioni che si avvalgono dell'autenticazione basata su form. Per ulteriori informazioni, vedere Gestione di utenti tramite l'appartenenza.

Memorizzazione di utenti nel file di configurazione dell'applicazione

Quando si utilizza l'autenticazione basata su form, è possibile convalidare gli utenti delle coppie utente/password nella sezione credentials del file di configurazione del sito Web. Il metodo Authenticate consente di confrontare le credenziali ottenute dall'utente con l'elenco di coppie utente/password presente nella sezione credentials in modo da stabilire se concedere o meno l'accesso. Nell'esempio riportato di seguito gli utenti Kim e John possono accedere se forniscono la password corretta.

<credentials passwordFormat="SHA1" >
    <user name="Kim"
          password="07B7F3EE06F278DB966BE960E7CBBD103DF30CA6"/>
    <user name="John" 
          password="BA56E5E0366D003E98EA1C7F04ABF8FCB3753889"/>
</credentials>

Le coppie di credenziali dell'esempio vengono crittografate utilizzando il formato di hashing della password SHA1 (Secure Hash Algorithm). L'attributo PasswordFormat è obbligatorio. I valori relativi a questa proprietà sono elencati nella tabella seguente.

Valore

Descrizione

Clear

Le password vengono memorizzate in testo non crittografato. La password dell'utente viene direttamente confrontata con questo valore senza ulteriori trasformazioni.

MD5

Le password vengono memorizzate mediante un digest di hash Message Digest 5 (MD5). Per convalidare le credenziali, viene generato un hash per la password dell'utente tramite l'algoritmo MD5 e viene confrontata con il valore memorizzato. La password in testo non crittografato non viene mai memorizzata o confrontata con questo valore. L'algoritmo MD5 garantisce prestazioni migliori rispetto all'algoritmo SHA1.

SHA1

Le password vengono memorizzate mediante il digest di hash SHA1. Per convalidare le credenziali, viene generato un hash per la password dell'utente tramite l'algoritmo SHA1 e viene confrontata con il valore memorizzato. La password in testo non crittografato non è mai memorizzata. Utilizzare questo algoritmo per migliorare la protezione dell'algoritmo MD5.

.NET Framework include classi e metodi che semplificano la creazione in fase di programmazione di valori per cui è stato generato un hash per l'archiviazione persistente. Una classe che può risultare utile per la programmazione di questa attività è FormsAuthentication, il cui metodo HashPasswordForStoringInConfigFile può essere utilizzato per generare un hash. Per ottenere un controllo più preciso, è possibile utilizzare anche le classi System.Security.Cryptography.

Le password per cui è stato generato un hash in un file di testo non possono essere utilizzate per rigenerare la password originale, ma sono potenzialmente vulnerabili ad attacchi con dizionario. In questo tipo di attacco, dopo avere ottenuto accesso al file della password, l'utente non autorizzato tenta di indovinare le password utilizzando software mediante cui si esegue l'hash iterativo di tutte le parole in un ampio dizionario e vengono confrontati gli hash generati con quello memorizzato. Quale che sia il metodo di memorizzazione delle password per cui è stato generato un hash, è necessario chiedere agli utenti di scegliere password non comuni e contenenti numeri e caratteri non alfanumerici, in modo da impedire attacchi con dizionario. È inoltre possibile semplificare la gestione delle credenziali memorizzandole mediante il sistema di appartenenze di ASP.NET. Per ulteriori informazioni, vedere Gestione di utenti tramite l'appartenenza.

Vedere anche

Riferimenti

FormsAuthenticationModule

Altre risorse

Protezione delle applicazioni Web ASP.NET

Provider di autenticazione basata su form