Condividi tramite


Nozioni fondamentali sulle operazioni utente di .NET Framework (Visual Basic)

.NET Framework fornisce l'implementazione della sicurezza basata sui ruoli nello spazio nomi System.Security.Principal che è possibile utilizzare per autorizzare e autenticare gli utenti nell'applicazione. In questo argomento viene illustrato come gestire le autorizzazioni nell'applicazione in .NET Framework e creare oggetti IIdentity e IPrincipal per rappresentare gli utenti.

IIdentity include un utente autenticato. IPrincipal è una combinazione di identità dell'utente e di eventuali ruoli di cui dispone. È possibile utilizzare l'identità predefinita e le classi principali nello spazio nome System.Security.Principal oppure aggiungere l'autenticazione personalizzata creando classi che implementino le interfacce.

Per utilizzare tali interfacce, è necessario specificare i nomi completi dell'interfaccia oppure importare gli spazi nome appropriati includendo l'istruzione o le istruzioni Imports all'inizio del file del codice di origine in questione. Per ulteriori informazioni, vedere Istruzione Imports (tipo e spazio dei nomi .NET).

Utilizzo della sicurezza basata sui ruoli in applicazioni .NET Framework

A ciascun thread di un'applicazione è associato un oggetto Principal (accessibile attraverso la proprietà CurrentPrincipal) che rappresenta il contesto di sicurezza dell'utente per conto del quale il codice è in esecuzione. Un oggetto Principal include l'oggetto (o identità) del contesto di sicurezza dell'utente. Utilizzando due oggetti è possibile separare l'autenticazione (nell'oggetto identità) e l'autorizzazione (oggetto Principal).

In un oggetto identità deve essere implementata l'interfaccia IIdentity. Un oggetto identità rappresenta un determinato utente ed espone le proprietà seguenti in base alle esigenze dell'interfaccia IIdentity: Name, IsAuthenticated e AuthenticationType. Di solito gli oggetti identità dispongono di membri privati aggiuntivi che eseguono l'autenticazione utente.

In un oggetto Principal deve essere implementata l'interfaccia IPrincipal. Un oggetto principal incapsula il contesto di sicurezza dell'utente esponendo i membri seguenti in base alle esigenze dell'interfaccia IPrincipal: il metodo IsInRole, che esegue l'autorizzazione e la proprietà Identity, che fornisce l'accesso all'oggetto dell'identità dell'utente.

Utilizzo delle identità

.NET Framework fornisce quattro classi per l'implementazione dell'interfaccia IIdentity:

Ciascuna classe consente di utilizzare tipi diversi di identità utente. Per accedere all'oggetto WindowsIdentity corrente per un'applicazione che utilizza l'autenticazione Windows, utilizzare il metodo statico GetCurrent della classe WindowsIdentity. È inoltre possibile impostare l'oggetto Principal del thread corrente chiamando il metodo InitializeWithWindowsUser.

Inoltre, è possibile creare classi di identità personalizzate implementando l'interfaccia IIdentity nella propria classe personalizzata. Per ulteriori informazioni sulla creazione delle identità personalizzate, vedere Procedura dettagliata: implementazione di autenticazione e autorizzazione personalizzate (Visual Basic).

Utilizzo di oggetti Principal

.NET Framework fornisce l'interfaccia IPrincipal per collegare i ruoli utente e le identità. Se la propria applicazione esegue l'autorizzazione, deve utilizzare un oggetto che implementi IPrincipal. Ad esempio, le classi WindowsIdentity e GenericIdentity forniscono le implementazioni incorporate di IPrincipal. In alternativa, è possibile creare proprie classi Principal personalizzate basate su IPrincipal.

È possibile collegare il thread corrente a un oggetto IPrincipal assegnando l'oggetto alla proprietà CurrentPrincipal del thread oppure alla proprietà CurrentPrincipal. È possibile quindi eseguire un controllo dell'autorizzazione verificando se l'utente è membro di un determinato ruolo. A tale scopo, utilizzare il metodo IsInRole del Principal.

Le applicazioni ASP.NET gestiscono gli oggetti IPrincipal in modo diverso rispetto alle altre applicazioni .NET Framework. ASP.NET consente di creare l'aspetto di una sessione tramite un protocollo HTTP senza stato. Come parte di questa sessione, l'oggetto IPrincipal che rappresenta l'utente è disponibile dalla proprietà User dell'oggetto HttpContext per tutto il codice che esegue la richiesta dell'utente. Common Language Runtime aggiorna automaticamente CurrentPrincipal con il valore User dopo l'evento OnAuthenticate del file Global.asax. Le applicazioni ASP.NET utilizzano spesso la proprietà User per eseguire verifiche di autorizzazione.

Nota

Modificando manualmente User viene automaticamente aggiornata la proprietà CurrentPrincipal per tutti i thread in esecuzione nello stesso contesto HTTP. Tuttavia, modificando CurrentPrincipal, la proprietà User resta inalterata. Viene modificato solo il thread scelto per la parte restante della richiesta.

Nelle applicazioni ASP.NET, la proprietà CurrentPrincipal aggiorna la proprietà User.

Per ulteriori informazioni sulla creazione di tipi IPrincipal personalizzati, vedere Procedura dettagliata: implementazione di autenticazione e autorizzazione personalizzate (Visual Basic).

Concessione di autorizzazioni da utilizzare con gli oggetti IIdentity e IPrincipal

È necessario prestare molta attenzione nel concedere l'autorizzazione per l'utilizzo degli oggetti IIdentity in quanto tali oggetti rendono disponibili delle informazioni riservate relative agli utenti. L'oggetto IPrincipal corrente deve essere protetto da modifiche in quanto le capacità di autorizzazione dell'applicazione si basano sul relativo oggetto Principal corrente.

.NET Framework fornisce tale protezione richiedendo che queste operazioni dispongano di autorizzazioni di sicurezza per l'accesso al codice. Concedere l'autorizzazione SecurityPermissionAttribute.ControlPrincipal alle applicazioni che devono gestire tali oggetti utilizzando Caspol.exe (strumento per i criteri di sicurezza dall'accesso di codice).

Per impostazione predefinita, tutte le applicazioni installate in locale dispongono di questa autorizzazione in quanto vengono eseguite nel set di autorizzazioni FullTrust.

Per eseguire i metodi riportati di seguito, è necessario disporre dell'autorizzazione ControlPrincipal:

Vedere anche

Attività

Procedura dettagliata: implementazione di autenticazione e autorizzazione personalizzate (Visual Basic)

Riferimenti

User

Altre risorse

Autenticazione e autorizzazione in .NET Framework con Visual Basic