Utenti e ruoli nel sito Web di produzione (C#)
Nota
Poiché questo articolo è stato scritto, i provider di appartenenza ASP.NET sono stati sostituiti da ASP.NET Identity. È consigliabile aggiornare le app per usare la ASP.NET Identity Platform anziché i provider di appartenenza in primo piano al momento della scrittura di questo articolo. ASP.NET Identity offre numerosi vantaggi rispetto al sistema di appartenenza ASP.NET, tra cui :
- Prestazioni migliori
- Miglioramento dell'estendibilità e della testability
- Supporto per OAuth, OpenID Connect e autenticazione a due fattori
- Supporto delle identità basate sulle attestazioni
- Interoperabilità migliore con ASP.Net Core
Lo strumento di amministrazione del sito Web (WSAT) ASP.NET fornisce un'interfaccia utente basata sul Web per configurare le impostazioni di appartenenza e ruoli e per la creazione, la modifica e l'eliminazione di utenti e ruoli. Sfortunatamente, il servizio WSAT funziona solo quando viene visitato da localhost, il che significa che non è possibile raggiungere lo strumento di amministrazione del sito Web di produzione tramite il browser. La buona notizia è che esistono soluzioni alternative che consentono di gestire utenti e ruoli nell'ambiente di produzione. Questa esercitazione esamina queste soluzioni alternative e altri.
Introduzione
ASP.NET 2.0 ha introdotto un numero di servizi applicazione, che sono una suite di servizi a blocchi predefiniti che è possibile aggiungere all'applicazione Web. Sono stati aggiunti i servizi appartenenza e ruoli al sito Web Recensioni libro nell'esercitazione Configurazione di un sito Web che usa Servizi applicazioni. Il servizio Appartenenza facilita la creazione e la gestione degli account utente; il servizio Ruoli offre un'API per categorizzare gli utenti in gruppi. Il sito Book Reviews ha tre account utente, Scott, Jisun e Alice, e un singolo ruolo, Amministrazione, con Scott e Jisun nel ruolo Amministrazione.
ASP. I servizi applicazioni di NET non sono associati a un'implementazione specifica. In alternativa, si indicare ai servizi dell'applicazione di usare un determinato provider e che il provider implementa il servizio usando una particolare tecnologia. È stata configurata l'applicazione Web Book Reviews per usare i provider e SqlRoleProvider
per i SqlMembershipProvider
servizi appartenenza e ruoli. Questi due provider archiviano le informazioni sull'account utente e sul ruolo in un database SQL Server e sono i provider più comunemente usati per le applicazioni Web basate su Internet ospitate in un'azienda di hosting Web.
Una sfida comune per gli sviluppatori che usano i servizi appartenenza e ruoli è gestire gli utenti e i ruoli nell'ambiente di produzione. Come si elimina un account utente dal sito Web di produzione, si aggiunge un nuovo ruolo o si aggiunge un utente esistente a un ruolo esistente? Questa esercitazione illustra diverse tecniche per la gestione di utenti e ruoli nel sito Web di produzione.
Uso dello strumento di amministrazione del sito Web ASP.NET
ASP.NET include uno strumento di amministrazione sito Web (WSAT) che semplifica la creazione e la gestione degli account utente e dei ruoli e specificare regole di autorizzazione basate su utenti e ruoli. Per usare WSAT, fare clic sull'icona ASP.NET Configurazione nel Esplora soluzioni oppure passare al menu Sito Web o Progetto e scegliere l'opzione configurazione ASP.NET. Entrambi gli approcci avviano un Web browser e lo puntano al WSAT in un indirizzo simile al seguente: http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication
WSAT è suddiviso in tre sezioni:
- Sicurezza : gestire utenti, ruoli e regole di autorizzazione.
- ApplicationConfiguration: gestire le <impostazioni appSettings> e SMTP da qui. È anche possibile accettare l'applicazione offline e gestire le impostazioni di debug e traccia da qui, oltre a specificare la pagina di errore personalizzata predefinita.
- ProviderConfiguration : configurare i provider usati dai servizi applicazione.
La sezione Sicurezza (illustrata nella figura 1) include collegamenti per la creazione di nuovi utenti, la gestione degli utenti, la creazione e la gestione dei ruoli e la creazione e la gestione delle regole di accesso. Da qui è possibile aggiungere un nuovo ruolo al sistema, eliminare un utente esistente o aggiungere o rimuovere ruoli da un account utente specifico.
Figura 1: La sezione Sicurezza WSAT include opzioni per la gestione di utenti e ruoli
(Fare clic per visualizzare l'immagine full-size)
Purtroppo, WSAT è accessibile solo in locale. Non è possibile visitare il sito Web WSAT sul sito Web di produzione remoto; se si visita www.yoursite.com/asp.netwebadminfiles/default.aspx
si ottiene una risposta 404 Not Found. Il codice che gestisce WSAT usa le Membership
classi e in .NET Framework per creare, modificare ed eliminare utenti e Roles
ruoli. Queste classi consultano le informazioni di configurazione dell'applicazione Web per determinare il provider da usare; di nuovo nell'esercitazione Configurazione di un sito Web che usa Servizi applicazioni viene configurato il sito Web Recensioni libro per l'uso dei SqlMembershipProvider
provider eSqlRoleProvider
. Ciò comporta l'aggiunta <membership>
e <roleManager>
le sezioni a Web.config
.
<?xml version="1.0"?>
<configuration>
...
<connectionStrings configSource="ConfigSections\databaseConnectionStrings.config" />
<system.web>
...
<membership defaultProvider="ReviewMembership">
<providers>
<clear />
<add type="System.Web.Security.SqlMembershipProvider"
name="ReviewMembership"
connectionStringName="ReviewsConnectionString"
applicationName="BookReviews" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="ReviewRole">
<providers>
<clear />
<add type="System.Web.Security.SqlRoleProvider"
name="ReviewRole"
connectionStringName="ReviewsConnectionString"
applicationName="BookReviews" />
</providers>
</roleManager>
</system.web>
...
</configuration>
Si noti che le <membership>
sezioni e <roleManager>
fanno riferimento rispettivamente ai provider e SqlRoleProvider
nell'attributo SqlMembershipProvider
type
. Questi provider archiviano le informazioni sull'utente e sul ruolo in un database SQL Server specificato. Il database utilizzato da questi provider viene specificato dall'attributo connectionStringName
, che ReviewsConnectionString
viene definito nel ~/ConfigSections/databaseConnectionStrings.config
file. Si ricordi che il databaseConnectionStrings.config
file nell'ambiente di sviluppo contiene la stringa di connessione al database di sviluppo, mentre il databaseConnectionStrings.config
file in produzione contiene la stringa di connessione al database di produzione.
In breve, il servizio WSAT deve essere accessibile in locale tramite l'ambiente di sviluppo e funziona con le informazioni sull'utente e sul ruolo nel database specificato nel databaseConnectionStrings.config
file. Di conseguenza, se si modificano le informazioni sulla stringa di connessione nel file nell'ambiente databaseConnectionStrings.config
di sviluppo, è possibile usare WSAT in locale per gestire utenti e ruoli nell'ambiente di produzione.
Per illustrare questa funzionalità, aprire il file in Visual Studio nell'ambiente di sviluppo e sostituire la databaseConnectionStrings.config
stringa di connessione del database di sviluppo con la stringa di connessione del database di produzione. Avviare quindi WSAT, passare alla scheda Sicurezza e aggiungere un nuovo utente denominato Sam con la password "password!" (meno virgolette). La figura 2 mostra la schermata WSAT durante la creazione di questo account.
Figura 2: Creare un nuovo utente denominato Sam nell'ambiente di produzione
(Fare clic per visualizzare l'immagine full-size)
Poiché è stata modificata la stringa di connessione in databaseConnectionStrings.config
per puntare al server di database di produzione, Sam è stato aggiunto come utente nell'ambiente di produzione. Per verificare questa operazione, modificare la stringa di connessione nel databaseConnectionStrings.config
file nel database di sviluppo e quindi visitare la Login.aspx
pagina nell'ambiente di sviluppo. Provare ad accedere come Sam (vedere la figura 3).
Figura 3: Non è possibile accedere come Sam nell'ambiente di sviluppo
(Fare clic per visualizzare l'immagine full-size)
Non è possibile accedere come Sam nell'ambiente di sviluppo perché le informazioni sull'account utente non esistono nel database locale. Invece, è stato aggiunto al database di produzione. Per verificare questo problema, visualizzare il contenuto della tabella nei database di aspnet_Users
sviluppo e di produzione. Nell'ambiente di sviluppo devono essere presenti solo tre record per gli utenti Scott, Jisun e Alice. Tuttavia, la aspnet_Users
tabella nel database di produzione ha quattro record: Scott, Jisun, Alice e Sam. Di conseguenza, Sam può accedere tramite il sito Web in produzione, ma non tramite l'ambiente di sviluppo.
Figura 4: Sam può accedere al sito Web di produzione
(Fare clic per visualizzare l'immagine full-size)
Nota
Non dimenticare di modificare la stringa di connessione nel databaseConnectionStrings.config
file nella stringa di connessione del database di sviluppo quando si lavora con WSAT altrimenti si continuerà a usare i dati di produzione durante il test del sito tramite l'ambiente di sviluppo. Tenere presente anche che, mentre la tecnica appena descritta consente di usare WSAT per gestire in remoto utenti e ruoli, le modifiche a una qualsiasi delle altre opzioni di configurazione WSAT (regole di accesso, impostazioni SMTP, debug e impostazioni di traccia e così via) modificare il Web.config
file. Di conseguenza, tutte le modifiche apportate alle impostazioni si applicano all'ambiente di sviluppo e non all'ambiente di produzione.
Creazione di pagine Web personalizzate di gestione utenti e ruoli
WSAT fornisce un sistema out-of-box per la gestione di utenti e ruoli, ma può essere avviato in locale e richiede modifiche alle informazioni sulla stringa di connessione per gestire gli utenti e i ruoli nell'ambiente di produzione. La maggior parte dei siti Web che supportano gli account utente include anche una serie di pagine Web di amministrazione degli utenti e dei ruoli che consentono agli amministratori di gestire utenti e ruoli dalle pagine all'interno del sito. Tali pagine di amministrazione basate sul Web semplificano notevolmente la gestione degli utenti e dei ruoli e sono essenziali per i siti in cui possono essere presenti molti amministratori o amministratori che non hanno accesso a o al background tecnico per usare Visual Studio per avviare wSAT.
ASP.NET include un numero di controlli Web predefiniti correlati all'accesso che consentono di implementare molte di queste pagine Web amministrative più semplici come trascinare e rilasciare. Ad esempio, è possibile creare una pagina per gli amministratori per creare un nuovo account utente trascinando il controllo CreateUserWizard nella pagina e impostando alcune proprietà. In effetti, la pagina per la creazione di utenti in WSAT illustrata nella figura 2 usa lo stesso controllo CreateUserWizard che è possibile aggiungere alle pagine. Inoltre, le funzionalità dei servizi appartenenza e ruoli sono disponibili a livello di codice tramite le Membership
classi e Roles
in .NET Framework. Con queste classi è possibile scrivere codice per creare, modificare ed eliminare utenti e ruoli, nonché per aggiungere o rimuovere utenti ai ruoli, per determinare quali utenti si trovano in quali ruoli e per eseguire altre attività correlate all'utente e al ruolo.
Nell'esercitazione Configurazione di un sito Web che usa Servizi applicazioni è stata aggiunta una pagina alla Admin
cartella denominata CreateAccount.aspx
. Questa pagina consente a un amministratore di aggiungere un nuovo account utente al sito e di specificare se l'utente appena creato si trova nel ruolo Amministrazione (vedere la figura 5).
Figura 5: Gli amministratori possono creare nuovi account utente
(Fare clic per visualizzare l'immagine full-size)
Per un'occhiata più dettagliata alla creazione di pagine di amministrazione degli utenti e dei ruoli, oltre alle istruzioni dettagliate sull'uso Membership
delle classi e Roles
sui controlli Web ASP.NET correlati all'accesso, assicurarsi di leggere le esercitazioni sulla sicurezza dei siti Web. Sono disponibili indicazioni su come creare pagine Web per la creazione di nuovi account, la creazione e la gestione dei ruoli, l'assegnazione degli utenti ai ruoli e altre attività amministrative comuni.
Per implementare funzionalità simili a WSAT nel sito Web di produzione, è sempre possibile creare una serie personalizzata di pagine Web che implementano le funzionalità di WSAT. Per iniziare, consultare il codice sorgente WSAT, che si trova nella cartella %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles
. Un'altra opzione consiste nell'usare l'alternativa WSAT di Dan Clem, che condivide nel suo articolo, Roll Your Own Web Site Administration Tool. Dan illustra ai lettori il processo di creazione di uno strumento WSAT personalizzato, include il codice sorgente dell'applicazione per il download (in C#) e fornisce istruzioni dettagliate per aggiungere il proprio WSAT personalizzato a un sito Web ospitato.
Riepilogo
L'ASP.NET Strumento di amministrazione sito Web (WSAT) può essere usato in combinazione con i servizi dell'applicazione Appartenenza e ruoli per gestire le informazioni sull'utente e sul ruolo per il sito Web. Sfortunatamente, il WSAT è accessibile solo in locale e non può essere visitato dal sito Web di produzione. Tuttavia, modificando la stringa di connessione nell'ambiente di sviluppo in modo da puntare al database di produzione, è possibile usare WSAT per gestire gli utenti e i ruoli nel sito Web di produzione.
Anche se l'approccio WSAT offre un modo rapido e semplice per gestire utenti e ruoli, richiede l'avvio di WSAT da Visual Studio e le modifiche temporanee alle informazioni sulla stringa di connessione. WSAT offre un modo rapido per gestire gli utenti e i ruoli nell'ambiente di produzione, ma è complesso e non funziona bene per i siti Web con più amministratori o con amministratori che non hanno o non hanno familiarità con Visual Studio e WSAT. Per questi motivi, la maggior parte dei siti Web che supportano gli account utente include un set di pagine Web amministrative. Tale set di pagine Web elimina la necessità di WSAT e usato da vari utenti amministrativi da qualsiasi computer.
Programmazione felice!
Altre informazioni
Per altre informazioni sugli argomenti illustrati in questa esercitazione, vedere le risorse seguenti:
- Esame di ASP. Appartenenza, ruoli e profilo di NET
- Roll-your Own Web Site Administration Tool
- Panoramica dello strumento di amministrazione del sito Web
- Esercitazioni sulla sicurezza del sito Web