Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Annotazioni
Poiché questo articolo è stato scritto, i provider di appartenenza ASP.NET sono stati sostituiti da ASP.NET Identity. Si raccomanda fortemente di aggiornare le app per usare la piattaforma ASP.NET Identity anziché i provider di Membership presenti al momento della scrittura di questo articolo. ASP.NET Identity offre numerosi vantaggi rispetto al sistema di appartenenza ASP.NET, tra cui :
- Prestazioni migliori
- Estendibilità e testbilità migliorate
- Supporto per OAuth, OpenID Connect e autenticazione a due fattori
- Supporto delle identità basate sulle attestazioni
- Migliore interoperabilità con ASP.Net Core
Lo strumento WSAT (Website Administration Tool) di 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, il WSAT funziona solo quando viene visitato da localhost, il che significa che non è possibile accedere allo 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, che sono una suite di servizi a blocchi predefiniti che è possibile aggiungere all'applicazione Web. I servizi Appartenenza e Ruoli sono stati aggiunti al sito Web Recensioni di libri nell'esercitazione Configurazione di un sito Web che usa i servizi applicativi. Il servizio 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, Admin, con Scott e Jisun nel ruolo di amministratore.
I servizi di applicazione di ASP.NET non sono vincolati a una specifica implementazione. 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 utilizzare i provider SqlMembershipProvider
e SqlRoleProvider
per i servizi Membri e Ruoli. Questi due provider archiviano le informazioni sull'account utente e sul ruolo in un database di SQL Server e sono i provider più comunemente 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 WSAT ( Web Site Administration Tool ) 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 in 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
Il WSAT è suddiviso in tre sezioni:
- Sicurezza : gestire utenti, ruoli e regole di autorizzazione.
- ApplicationConfiguration : 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, la funzionalità WSAT è accessibile solo in locale. Non è possibile visitare il WSAT nel sito web di produzione remoto; se si visita www.yoursite.com/asp.netwebadminfiles/default.aspx
si ottiene 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; nell'esercitazione su come configurare un sito Web che utilizza i servizi di applicazione, abbiamo configurato il sito Web Recensioni sui libri per l'uso dei provider e . Ciò comportava l'aggiunta di <membership>
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 sezioni <membership>
e <roleManager>
fanno riferimento ai provider SqlMembershipProvider
e SqlRoleProvider
rispettivamente nel loro attributo type
. 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 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 localmente 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 La funzionalità WSAT, passare alla scheda Sicurezza e aggiungere un nuovo utente denominato Sam.
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
affinché punti al server della produzione, Sam è stato aggiunto come utente nell'ambiente della 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. Piuttosto, è stato 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 contiene quattro registrazioni: 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 a dimensione intera)
Annotazioni
Non dimenticare di modificare la stringa di connessione nel file databaseConnectionStrings.config
, riportandola alla stringa di connessione del database di sviluppo quando hai finito di lavorare con WSAT, altrimenti lavorerai con i dati di produzione durante i test del sito nell'ambiente di sviluppo. Tenere presente anche che, mentre la tecnica appena descritta consente di usare WSAT per gestire utenti e ruoli in remoto, le modifiche a qualsiasi altra opzione di configurazione WSAT (regole di accesso, impostazioni SMTP, impostazioni di debug e traccia e così via) modificano il file Web.config
. 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 per la gestione di utenti e ruoli
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 potrebbero esserci molti amministratori o amministratori che non hanno accesso a o il background tecnico per usare Visual Studio per avviare WSAT.
ASP.NET include numerosi controlli Web predefiniti correlati all'accesso che semplificano l'implementazione di molte di queste pagine Web amministrative attraverso il trascinamento e rilascio. 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 sono in quali ruoli e per eseguire altre attività correlate a utenti e ruoli.
Nell'esercitazione Configurare un sito Web che usa servizi applicazioni ho aggiunto 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 è nel ruolo Amministratore (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 sulla creazione di pagine di amministrazione di utenti e ruoli, insieme a istruzioni passo passo sull'uso delle Membership
e Roles
classi e dei controlli Web ASP.NET relativi al login, assicurati di leggere i miei Tutorial 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.
Riassunto
Il ASP.NET Web Site Administration Tool (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, la funzionalità WSAT è accessibile solo localmente e non può essere visitata dal sito Web di produzione. Tuttavia, modificando la stringa di connessione nell'ambiente di sviluppo in modo che punti 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, nonché modifiche temporanee alle informazioni sulla stringa di connessione. WSAT offre un modo rapido per gestire utenti e 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 amministratori da qualsiasi computer.
Buon programmatori!
Altre informazioni
Per altre informazioni sugli argomenti illustrati in questa esercitazione, vedere le risorse seguenti:
- Esaminare la Membership, i Ruoli e il Profilo di ASP.NET
- Creare il proprio strumento di amministrazione del sito Web
- Panoramica dello strumento di amministrazione del sito Web
- Esercitazioni sulla sicurezza dei siti Web