Esempio relativo alle tecnologie di protezione basata sui ruoli
Aggiornamento: novembre 2007
In questo esempio viene illustrato l'utilizzo della protezione basata sui ruoli. L'applicazione server indica l'account utente utilizzato dall'applicazione client, specificando anche se l'account appartiene al ruolo dell'amministratore.
Per informazioni sull'utilizzo degli esempi, vedere i seguenti argomenti:
Per generare l'esempio utilizzando il prompt dei comandi
Aprire la finestra del prompt dei comandi, quindi spostarsi in una delle sottodirectory specifiche del linguaggio della directory RoleBasedSecurity.
Digitare msbuild RoleBasedSecurityCS.sln o msbuild RoleBasedSecurityVB.sln, a seconda del linguaggio di programmazione che si desidera utilizzare, da una delle sottodirectory specifiche del linguaggio.
Per generare l'esempio utilizzando Visual Studio
Aprire Esplora risorse, quindi spostarsi in una delle sottodirectory specifiche del linguaggio della directory RoleBasedSecurity.
Fare doppio clic sul file RoleBasedSecurityCS.sln o RoleBasedSecurityVB.sln, a seconda del linguaggio di programmazione che si desidera utilizzare, per aprire il file in Visual Studio.
Scegliere Build Solution dal menu Build.
Per eseguire l’esempio
Spostarsi nella directory contenente il nuovo eseguibile, utilizzando il prompt dei comandi o Esplora risorse.
Digitare RBSecDemo.exe dalla riga di comando oppure fare doppio clic sull'icona relativa al file RBSecDemo.exe in Esplora risorse.
Fare clic sul pulsante Display Logged On User. Nella finestra dell'applicazione verrà visualizzato il nome account dell'utente attualmente connesso. Fare clic sul pulsante Is Caller in Demo Role?. Verrà visualizzato il messaggio "You ARE in RBSecurityDemoRole" per indicare che l'utente fa parte del ruolo RBSecurityDemoRole.
Avviare lo strumento di amministrazione Component Services, denominato anche finestra di esplorazione COM+. Per eseguire questa operazione, fare clic sul pulsante Start, scegliere Administrative Tools, quindi Component Services. Individuare l'applicazione COM+ RBSecDemoSvr espandendo la struttura Component Services\Computer\Risorse del computer\Applicazioni COM+ nel riquadro sinistro della finestra di esplorazione COM+. Fare clic con il pulsante destro del mouse sull'applicazione RBSecDemoSvr, quindi scegliere Proprietà. Verrà visualizzata la finestra di dialogo relativa alle proprietà dell'applicazione. Fare clic sulla scheda Protezione. Le informazioni visualizzate corrispondono alle impostazioni specificate da ApplicationAccessControlAttribute. Deselezionare la casella di controllo Applica controlli di accesso per questa applicazione.
Nota importante: Se si esegue questa operazione, la protezione COM+ verrà disattivata per tutti i componenti dell'applicazione.
Scegliere OK per chiudere la finestra di dialogo Proprietà.
Tornare all'applicazione client RBSecDemo. Fare clic su Display Logged On User. Verrà visualizzato il messaggio "Unknown caller (Security is not enabled)". Fare clic su Is Caller In Demo Role?. Verrà nuovamente restituito il messaggio per indicare che l'utente fa parte del ruolo RBSecurityDemoRole poiché, quando la protezione è disattivata, tutte le chiamate al metodo IsCallerInRole restituiscono true.
Tornare alla finestra di esplorazione COM+, fare clic con il pulsante destro del mouse su RBSecDemoSvr, quindi scegliere Properties per visualizzare la finestra di dialogo relativa alle proprietà dell'applicazione. Fare clic sulla scheda Security, quindi selezionare nuovamente la casella di controllo Enforce access checks for this application. In questo modo viene riattivata la sicurezza per l'applicazione. Scegliere OK per chiudere la finestra di dialogo Proprietà.
Individuare il componente Microsoft.Samples.Technologies.ComponentServices.RoleBasedSecurity.RBSecurityObject espandendo la struttura RBSecDemoSvr\Componenti. Fare clic con il pulsante destro del mouse sul componente Microsoft.Samples.Technologies.ComponentServices.RoleBasedSecurity.RBSecurityObject, quindi scegliere Properties dal menu di scelta rapida.
Fare clic sulla scheda Security. L'impostazione relativa alle autorizzazioni definita in questa scheda corrisponde al valore di ComponentAccessControlAttribute specificato nel codice di esempio. Verrà visualizzato il ruolo RBSecurityDemoRole nell'area relativa ai ruoli associati in modo esplicito al componente. Questo ruolo è stato creato e associato al componente di esempio utilizzando SecurityRoleAttribute nel codice di esempio. Scegliere OK per chiudere la finestra di dialogo Proprietà.
Nella finestra di esplorazione COM+ espandere la cartella Roles relativa all'applicazione RBSecDemoSvr. Verrà visualizzato il ruolo RBSecurityDemoRole. Espandere RBSecurityDemoRole\Users. Nella cartella Users verrà visualizzato un unico account (Everyone). Fare clic con il pulsante destro del mouse su Everyone, quindi scegliere Delete dal menu di scelta rapida. Confermare l'eliminazione nella finestra di dialogo successiva. Poiché COM+ memorizza nella cache le impostazioni di protezione relative ai ruoli, è necessario chiudere l'applicazione RBSecDemoSvr prima di esaminare i risultati della modifica apportata. Nella finestra di esplorazione COM+ fare clic con il pulsante destro del mouse sull'applicazione, quindi scegliere Shut down dal menu di scelta rapida.
Tornare all'applicazione client RBSecDemo. Se si fa clic su uno dei pulsanti, verrà visualizzato un oggetto MessageBox per segnalare che l'accesso è negato. Un'eccezione di protezione di questo tipo viene generata al momento della creazione dell'oggetto perché il ruolo RBSecurityDemoRole del componente non contiene il chiamante corrente.
Per disinstallare l'esempio
Spostarsi nella directory in cui è stato eseguito lo strumento MsBuild o è stato avviato il file sln in Visual Studio.
Eseguire msbuild RoleBasedSecurityVB.sln /t:Clean o msbuild RoleBasedSecurityVB.sln /t:Clean, a seconda del linguaggio di programmazione che si desidera utilizzare. In questo modo vengono chiamati lo Strumento di installazione dei servizi .NET (Regsvcs.exe) e lo Strumento Global Assembly Cache (Gacutil.exe) con l'opzione /u per rimuovere i file di esempio dal catalogo COM+ e dalla Global Assembly Cache.
Requisiti
Piattaforma: Windows 2000, Windows XP, Windows Server 2003
Versione di .NET Framework: 2.0
Osservazioni
Per ulteriori informazioni sulle fasi di registrazione e creazione di file binari di esempio, vedere i commenti nel codice sorgente.
L'applicazione di esempio ha recuperato le seguenti informazioni:
Stato di attivazione della protezione COM+.
Appartenenza del chiamante corrente al ruolo di protezione creato dall'esempio.
Nome account del chiamante corrente.
Nello strumento di amministrazione Component Services il componente viene visualizzato come Microsoft.Samples.Technologies.ComponentServices.RoleBasedSecurity.RBSecurityObject.
Nota: |
---|
Prima di eseguire l'esempio, è necessario eseguire lo Strumento Global Assembly Cache (Gacutil.exe) per installare l'assembly RBSecDemoSvr.dll nella Global Assembly Cache. Lo strumento Gacutil.exe si trova nella directory SDK\<versione>\Bin. Per la versione Visual Basic, ad esempio, spostarsi nella directory C:\Documents and Settings\nome utente\Documenti\Samples\Technologies\ComponentServices\RoleBasedSecurity\VB\bin, quindi digitare gacutil -i RBSecDemoSvr.dll. |
Nell'esempio viene inoltre illustrato come attivare la protezione a livello di applicazione o di componente e come creare ruoli di protezione mediante la definizione di attributi.
Nota: |
---|
L'interoperabilità della protezione COM+ in .NET viene fornita per gli sviluppatori di applicazioni che desiderano scrivere un'estensione gestita per un'applicazione esistente che utilizza i servizi di protezione COM+ 1.0. In .NET Framework è disponibile una specifica protezione basata sui ruoli. I due meccanismi sono indipendenti ed è opportuno utilizzarne uno solo all'interno di una singola applicazione. |
Vedere anche
Riferimenti
ApplicationAccessControlAttribute
ComponentAccessControlAttribute