Introduzione all'appartenenza
Aggiornamento: novembre 2007
L'appartenenza è una funzionalità integrata di ASP.NET che consente di convalidare e archiviare le credenziali utente, facilitando così la gestione dell'autenticazione degli utenti nei siti Web. È possibile utilizzare l'appartenenza ASP.NET insieme all'autenticazione basata su form ASP.NET o ai controlli di accesso ASP.NET per creare un sistema completo per l'autenticazione degli utenti.
L'appartenenza ASP.NET fornisce il supporto per:
Creazione di nuovi utenti e password.
Archiviazione delle informazioni sulle appartenenze (nomi utente, password e dati di supporto) in Microsoft SQL Server, Active Directory o in un archivio dati alternativo.
Autenticazione degli utenti che visitano il sito. È possibile autenticare gli utenti a livello di codice oppure utilizzare i controlli di accesso ASP.NET per creare un sistema di autenticazione completo che non richieda la scrittura di codice o la richieda solo in minima parte.
Gestione delle password, comprese le operazioni di creazione, modifica e reimpostazione. A seconda delle opzioni di appartenenza selezionate, il sistema di appartenenze può anche fornire un sistema automatico per la reimpostazione delle password che accetti una domanda e una risposta fornite dall'utente.
Esposizione di un'identificazione univoca per gli utenti autenticati che è possibile utilizzare in applicazioni personalizzate nonché integrare con i sistemi per la gestione dei ruoli (autorizzazione) e per la personalizzazione di ASP.NET.
Definizione di un provider di appartenenze personalizzato, che è possibile utilizzare in sostituzione del proprio codice per gestire le appartenenze e mantenere i dati relativi alle appartenenze in un archivio personalizzato.
Appartenenza, ruoli e profilo utente
Anche se è una funzionalità di autenticazione indipendente in ASP.NET, l'appartenenza può essere integrata alla gestione dei ruoli ASP.NET per fornire servizi di autorizzazione per il sito. Può inoltre essere integrata con il profilo utente per consentire di creare un'applicazione personalizzata in base all'utente specifico. Per informazioni dettagliate, vedere Gestione delle autorizzazioni tramite ruoli e Cenni preliminari sulle proprietà dei profili ASP.NET.
Funzionamento dell'appartenenza
Prima di utilizzare l'appartenenza, è necessario configurarla per il proprio sito. In particolare, è necessario effettuare le seguenti operazioni:
Specificare le opzioni di appartenenza durante la configurazione del sito Web. Per impostazione predefinita, l'appartenenza è attivata. È inoltre possibile specificare il provider di appartenenze da utilizzare, ovvero il tipo di database nel quale si desidera mantenere le informazioni sulle appartenenze. Il provider predefinito è basato su un database Microsoft SQL Server. Per archiviare le informazioni sulle appartenenze è anche possibile scegliere di utilizzare Active Directory o specificare un provider personalizzato. Per informazioni sulle opzioni di configurazione dell'appartenenza che è possibile specificare nel file Web.config per un'applicazione ASP.NET, vedere Configurazione di un'applicazione ASP.NET per l'utilizzo delle appartenenze.
Configurare l'applicazione per l'utilizzo dell'autenticazione basata su form (distinta dall'autenticazione di Windows o dall'autenticazione Passport). Si tratta in genere di specificare che alcune pagine o cartelle dell'applicazione sono protette e quindi accessibili solo agli utenti autenticati.
Definire gli account utente per l'appartenenza. Questa operazione può essere eseguita in diversi modi. È ad esempio possibile utilizzare lo Strumento di amministrazione sito Web, con un'interfaccia simile a una procedura guidata per la creazione di nuovi utenti. In alternativa, è possibile creare una pagina Web ASP.NET per un nuovo utente in cui quest'ultimo può immettere il nome utente e la password (e, se lo desidera, l'indirizzo di posta elettronica), quindi utilizzare la funzione di appartenenza CreateUser per creare un nuovo utente nel sistema di appartenenze.
A questo punto è possibile utilizzare l'appartenenza per autenticare gli utenti nell'applicazione. Nella maggior parte dei casi si fornisce un form di accesso, che può essere costituito da una pagina distinta o da un'area specifica nella home page. È possibile creare il form di accesso manualmente, tramite i controlli TextBox ASP.NET, oppure è possibile utilizzare i controlli di accesso ASP.NET. Poiché l'applicazione è stata configurata per l'utilizzo dell'autenticazione basata su form, quando un utente non autenticato richiederà una pagina protetta, ASP.NET visualizzerà automaticamente la pagina di accesso.
Nota: |
---|
Nei controlli di accesso ASP.NET (Login, LoginView, LoginStatus, LoginName e PasswordRecovery) è incapsulata tutta la logica necessaria per richiedere le credenziali agli utenti e convalidarle nel sistema di appartenenze. |
Se si utilizzano i controlli di accesso, per la convalida di un utente verrà utilizzato automaticamente il sistema di appartenenze. Se si crea un form di accesso manualmente, è possibile richiedere all'utente di immettere un nome utente e una password, quindi chiamare il metodo ValidateUser per eseguire la convalida. Dopo questa operazione, le informazioni dell'utente potranno essere rese permanenti (ad esempio con un cookie crittografato, se il browser dell'utente accetta cookie) mediante l'autenticazione basata su form. I controlli di accesso eseguono questa attività automaticamente. Se si crea un form di accesso manualmente, è possibile chiamare i metodi della classe FormsAuthentication per creare il cookie e scriverlo nel computer dell'utente. Nel caso in cui un utente dimentichi la password, la pagina di accesso potrà chiamare le funzioni di appartenenza per consentire all'utente di ricordare la password o crearne una nuova.
Ogni volta che l'utente richiede un'altra pagina protetta, l'autenticazione basata su form ASP.NET verifica se l'utente è autenticato e quindi gli permette di visualizzare la pagina. Se non è autenticato, l'utente viene reindirizzato alla pagina di accesso. Per impostazione predefinita, il cookie di autenticazione rimane valido per la sessione dell'utente.
Dopo l'autenticazione di un utente, il sistema di appartenenze rende disponibile un oggetto contenente le informazioni relative all'utente corrente. È ad esempio possibile ottenere le proprietà dell'oggetto utente di appartenenza per determinare il nome e l'indirizzo di posta elettronica dell'utente, la data e l'ora dell'ultimo accesso all'applicazione da parte dell'utente e così via.
Un aspetto importante del sistema di appartenenze è dato dal fatto che non è mai necessario eseguire esplicitamente alcuna funzione di database a basso livello per ottenere o impostare informazioni relative agli utenti. Ad esempio, quando si crea un nuovo utente chiamando il metodo CreateUser di appartenenza, è il sistema di appartenenze a gestire i dettagli relativi alla creazione dei record di database necessari per archiviare le informazioni utente. Quando si chiama il metodo ValidateUser per verificare le credenziali di un utente, è il sistema di appartenenze a eseguire automaticamente tutte le ricerche nel database.
Configurazione e gestione dell'appartenenza
Il sistema di appartenenze viene configurato nel file Web.config dell'applicazione. Il modo più semplice per configurare e gestire l'appartenenza consiste nell'utilizzare lo Strumento di amministrazione sito Web, che fornisce un'interfaccia analoga a una procedura guidata. Durante la configurazione dell'appartenenza è necessario specificare:
Il provider di appartenenze da utilizzare. Insieme al provider viene in genere specificato anche il database in cui archiviare le informazioni sulle appartenenze.
Le opzioni relative alla password, quali la crittografia e il supporto per il recupero della password in base a una domanda specifica dell'utente.
Utenti e password. Se si utilizza lo Strumento di amministrazione sito Web, è possibile creare e gestire gli utenti direttamente. In caso contrario, è necessario chiamare le funzioni di appartenenza per creare e gestire gli utenti a livello di codice.