Utenti e ruoli nel sito Web di produzione (VB)
Nota
Poiché questo articolo è stato scritto, i provider di appartenenze ASP.NET sono stati sostituiti da ASP.NET Identity. È consigliabile aggiornare le app per usare ASP.NET Identity Platform anziché i provider di appartenenze in primo piano al momento della scrittura di questo articolo. ASP.NET Identity presenta diversi 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
- Migliore interoperabilità con ASP.Net Core
Lo strumento di amministrazione del sito Web ASP.NET fornisce un'interfaccia utente basata sul Web per la configurazione delle impostazioni di appartenenza e ruoli e per la creazione, la modifica e l'eliminazione di utenti e ruoli. Sfortunatamente, 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 una serie di servizi applicativi, una suite di servizi a blocchi predefiniti che è possibile aggiungere all'applicazione Web. I servizi Di appartenenza e ruoli sono stati aggiunti al sito Web Recensioni libro nell'esercitazione Configurazione di un sito Web che usa i servizi applicazioni. Il servizio di appartenenza facilita la creazione e la gestione degli account utente; Il servizio Ruoli offre un'API per la categorizzazione degli 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 di Amministrazione.
ASP. I servizi applicazioni di NET non sono associati a un'implementazione specifica. In alternativa, si indica ai servizi dell'applicazione di usare un provider specifico e tale provider implementa il servizio usando una particolare tecnologia. L'applicazione Web Book Reviews è stata configurata per l'uso dei provider e SqlRoleProvider
per i SqlMembershipProvider
servizi di 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ù usati per le applicazioni Web basate su Internet ospitate in una società di hosting Web.
Una sfida comune per gli sviluppatori che usano i servizi appartenenza e ruoli consiste nella gestione degli utenti e dei 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 del sito Web (WSAT) che semplifica la creazione e la gestione di account utente e ruoli e per specificare regole di autorizzazione basate su utenti e ruoli. Per usare WSAT, fare clic sull'icona di configurazione ASP.NET 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 a 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 : consente di gestire le <impostazioni appSettings> e SMTP da qui. È anche possibile portare l'applicazione offline e gestire le impostazioni di debug e traccia da qui, nonché specificare la pagina di errore personalizzata predefinita.
- ProviderConfiguration : configurare i provider usati dai servizi dell'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 a dimensione intera)
Sfortunatamente, WSAT è accessibile solo in locale. Non è possibile visitare il WSAT sul sito Web di produzione remoto; se si visita www.yoursite.com/asp.netwebadminfiles/default.aspx
si riceve una risposta 404 Non trovato. Il codice che supporta WSAT usa le Membership
classi e Roles
in .NET Framework per creare, modificare ed eliminare utenti e ruoli. Queste classi consultano le informazioni di configurazione dell'applicazione Web per determinare quale provider usare; di nuovo nell'esercitazione Configurazione di un sito Web che usa i servizi dell'applicazione viene configurato il sito Web Book Reviews per l'uso dei SqlMembershipProvider
provider e SqlRoleProvider
. Ciò comporta l'aggiunta <membership>
di sezioni e <roleManager>
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 SqlMembershipProvider
provider e SqlRoleProvider
nel relativo type
attributo. Questi provider archiviano le informazioni sull'utente e sul ruolo in un database di SQL Server specificato. Il database usato da questi provider viene specificato dall'attributo connectionStringName
, ReviewsConnectionString
, definito nel ~/ConfigSections/databaseConnectionStrings.config
file . Tenere presente 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, è necessario accedere a WSAT in locale tramite l'ambiente di sviluppo e usare 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 databaseConnectionStrings.config
file in Visual Studio nell'ambiente di sviluppo e sostituire la 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 a dimensione intera)
Poiché è stata modificata la stringa di connessione in databaseConnectionStrings.config
in modo che punti al server di database di produzione, Sam è stato aggiunto come utente nell'ambiente di produzione. Per verificarlo, modificare nuovamente 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 a dimensione intera)
Non è possibile accedere come Sam nell'ambiente di sviluppo perché le informazioni sull'account utente non esistono nel database locale. È stato invece aggiunto al database di produzione. Per verificarlo, visualizzare il contenuto della aspnet_Users
tabella sia nei database di sviluppo che in quello 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 include quattro record: Scott, Jisun, Alice e Sam. Di conseguenza, Sam può accedere tramite il sito Web nell'ambiente di produzione, ma non tramite l'ambiente di sviluppo.
Figura 4: Sam può accedere al sito Web di produzione
(Fare clic per visualizzare l'immagine a dimensione intera)
Nota
Non dimenticare di modificare di nuovo la stringa di connessione nel databaseConnectionStrings.config
file nella stringa di connessione del database di sviluppo al termine dell'uso di WSAT; in caso contrario, si lavorerà con i dati di produzione durante il test del sito tramite l'ambiente di sviluppo. Tenere anche presente che, mentre la tecnica appena illustrata consente di usare WSAT per gestire in remoto utenti e ruoli, le modifiche a qualsiasi altra opzione di configurazione WSAT (regole di accesso, impostazioni SMTP, impostazioni di debug e 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 di gestione utenti e ruoli personalizzate
WSAT fornisce un sistema risolto per la gestione di utenti e ruoli, ma può essere avviato solo 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 di utenti e ruoli che consentono agli amministratori di gestire utenti e ruoli dalle pagine all'interno del sito. Queste pagine di amministrazione basate sul Web semplificano notevolmente la gestione di utenti e ruoli e sono essenziali per i siti in cui possono esserci molti amministratori o amministratori che non hanno accesso a o il background tecnico per usare Visual Studio per avviare la console di amministrazione remota del server.
ASP.NET include una serie di controlli Web incorporati correlati all'accesso che semplificano l'implementazione di molte di queste pagine Web amministrative come il trascinamento della selezione. 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à. Infatti, 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 a utenti e ruoli.
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 a dimensione intera)
Per un'analisi più dettagliata della creazione di pagine di amministrazione di utenti e ruoli, insieme a istruzioni dettagliate sull'uso delle Membership
classi e Roles
e sui controlli Web correlati all'accesso ASP.NET, 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 di 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, vedere 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, Rolling Your Own Web Site Administration Tool. Dan illustra il processo di creazione di uno strumento personalizzato di tipo WSAT, include il codice sorgente dell'applicazione per il download (in C#) e fornisce istruzioni dettagliate per l'aggiunta di WSAT personalizzati 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