Oggetti Principal e Identity
Aggiornamento: novembre 2007
Il codice gestito è in grado di appurare l'identità o il ruolo di un principale tramite un oggetto Principal, che contiene un riferimento a un oggetto Identity. Può essere utile paragonare oggetti Identity e Principal a concetti familiari quali account utente e di gruppo. Nella maggior parte degli ambienti di rete, gli account utente rappresentano utenti o programmi, mentre gli account di gruppo rappresentano determinate categorie di utenti e i diritti che essi detengono. Analogamente, gli oggetti Identity di .NET Framework rappresentano utenti, mentre i ruoli rappresentano appartenenze e contesti di protezione. In .NET Framework l'oggetto Principal incapsula sia un oggetto Identity che un ruolo. Le applicazioni di .NET Framework concedono diritti al principale sulla base dell'identità che esso presenta oppure, più comunemente, al ruolo che esso riveste.
Oggetti Identity
L'oggetto Identity incapsula informazioni sull'utente o sull'entità da convalidare. Nella forma più semplice, gli oggetti Identity contengono un nome e un tipo di autenticazione. Il nome può essere quello di un utente o di un account Windows, mentre il tipo di autenticazione può corrispondere a un protocollo di accesso supportato, quale Kerberos V5, oppure a un valore personalizzato. In .NET Framework viene definito un oggetto GenericIdentity utilizzabile per la maggior parte degli scenari di accesso personalizzato e un oggetto WindowsIdentity più specializzato utilizzabile quando si desidera che l'applicazione si basi sull'autenticazione di Windows. È inoltre possibile definire una classe di identità personalizzata che contenga informazioni utente personalizzate.
L'interfaccia IIdentity definisce proprietà per l'accesso a un nome e a un tipo di autenticazione. Ad esempio, Kerberos V5 o NTLM. Tutte le classi Identity implementano l'interfaccia IIdentity. Non è necessaria alcuna relazione tra un oggetto Identity e il token di processo di Windows NT sotto cui un thread è in esecuzione. Se tuttavia l'oggetto Identity è un oggetto WindowsIdentity, si presupporrà che l'identità rappresenti un token di protezione di Windows NT.
Oggetti Principal
L'oggetto Principal rappresenta il contesto di protezione in cui viene eseguito il codice. Le applicazioni che implementano la protezione basata sui ruoli concedono diritti sulla base del ruolo associato all'oggetto Principal. Analogamente agli oggetti Identity, in .NET Framework viene fornito un oggetto GenericPrincipal e un oggetto WindowsPrincipal. È inoltre possibile definire classi di principali personalizzate.
L'interfaccia IPrincipal definisce una proprietà che consente di accedere a un oggetto Identity associato nonché un metodo che consente di determinare se l'utente identificato dall'oggetto Principal è membro di un determinato ruolo. Tutte le classi Principal implementano l'interfaccia IPrincipal nonché ulteriori proprietà e metodi eventualmente necessari. Common Language Runtime fornisce ad esempio la classe WindowsPrincipal, che implementa funzionalità aggiuntive per il mapping tra l'appartenenza a un gruppo di Windows NT o Windows 2000 e i ruoli.
Un oggetto Principal è legato a un oggetto CallContext che rappresenta il contesto di chiamata all'interno di un dominio dell'applicazione AppDomain. Viene sempre creato un contesto di chiamata predefinito con ciascun nuovo AppDomain, così esiste sempre un contesto di chiamata disponibile per accettare l'oggetto Principal. Quando viene creato un nuovo thread, per tale thread viene creato anche un oggetto CallContext. Il riferimento all'oggetto Principal viene automaticamente copiato dal thread di origine al CallContext del nuovo thread. Se il runtime non è in grado di determinare quale oggetto Principal appartiene al creatore del thread, si atterrà ai criteri predefiniti per la creazione di oggetti Principal e Identity.
Un criterio configurabile specifico di un dominio applicazione definisce le regole in base alle quali decidere quale tipo di oggetto Principal associare a un nuovo dominio applicazione. Dove consentito dai criteri di sicurezza, il runtime può creare oggetti Principal e Identity che riflettono il token del sistema operativo associato al thread di esecuzione corrente. In base all'impostazione predefinita, il runtime utilizza oggetti Principal e Identity che rappresentano utenti non autenticati. Il runtime non crea questi oggetti Principal e Identity predefiniti finché il codice non tenta di accedervi.
Il codice attendibile che crea un dominio applicazione può impostare i criteri di sicurezza del dominio applicazione che controllano la costruzione degli oggetti Principal e Identity predefiniti. Questi criteri specifici del dominio applicazione si applicano a tutti i thread di esecuzione di tale dominio applicazione. Un host attendibile non gestito ha implicitamente la capacità di impostare questi criteri, mentre è necessario che il codice gestito che imposta tali criteri disponga dell'autorizzazione System.Security.Permissions.SecurityPermission per il controllo dei criteri di dominio.
Quando si trasmette un oggetto Principal tra più domini applicazione, ma all'interno dello stesso processo e quindi sullo stesso computer, l'infrastruttura remota consente di copiare nel contesto del chiamato un riferimento all'oggetto Principal associato al contesto del chiamante.
Vedere anche
Attività
Procedura: creare un oggetto WindowsPrincipal
Procedura: creare oggetti GenericPrincipal e GenericIdentity
Concetti
Sostituzione di oggetti Principal