Dopo l'introduzione fatta in precedenza, andiamo a scoprire definitivamente il significato dei NamedPermissions Set. Sia chiaro, il loro utilizzo non è che faccia la differenza.. ma sicuramente può aiutarci a sviluppare con maggiore ordine. Dopo essermi fatto le mie personali convinzioni entriamo nel tecnico.

Come abbiamo capito, il permissions set ritornato dall'evidence dell'assembly in esecuzione non contiene tutte le permissions che ci sono state assegnate dai code groups. Per esempio, potrei usare l'oggetto FileStream senza problemi, ma l'oggetto FileIOPermissions non verrà mostrato nel permission set associato. Per riuscire a visualizzare tutte le permissions c'è da svolgere un lavoro in più. Il come lo vedremo nel prossimo post. Tuttavia questa introduzione era necessaria.

Arriviamo quindi a definire che un Named Permission Set:
"
Un Named Permission Set è il frutto dell'associazione di più Permissions in un unico blocco logico".

Per crearne uno velocemente è possibile utilizzare un codice simile a quello che segue.

// Creo il NamedPermissionSet
NamedPermissionSet NPS =
    
new NamedPermissionSet("AlePermissionSet");
// Con SetPermission Vengono aggiunte le Permission
// al NamedPermissionSet [NPS] appena Creato
NPS.SetPermission(
    
new FileIOPermission(FileIOPermissionAccess.Read, @"c:\PostBlog"));

La cosa interessante è la possibilità di persistenza del NamedPermissionSet, grazie a questa funzionalità è possibile associarla con un Policy Level (questo lo vedremo nei prossimi post). In questo caso il nome deve essere unico in associazione con la policy. Così facendo è possibile avere più NamedPermissions Sets in due o più differenti Policy Levels.

.NET di suo viene fornito con sei NamedPermissions Set pronti all'uso.

EveryThing
Tutte le permissions (tranne SkipVerification) sono associate.

Execution
Il codice può essere eseguito, ma nessun altra permission è associata.

FullTrust
L'accesso totale è associato alla risorsa pur essendo delimitata.

Internet
Le Permissions sono associate al codice che viene eseguito da un sito Internet

LocalIntranet
Le Permissions sono associate al codice che viene eseguito da un sito appartente alla rete locale.

Nothing
Il codice non ha il permesso di essere eseguito.

E' bene comunque specificare che di questi NamedPermission Set solo tre possono essere modificati. Stiamo parlando di Internet,LocalIntranet e EveryThing. Queste vengono definite Modificable Named Permissions Set le altre vengono definite Unmodificable Named Permissions Set.


Un altra funzionalità interessante è la possibilità di richiedere i NamedPermissions Set in entrambe le modalità : Dichiarativa, Imperativa. Questo è possibile solo se si sta lavorando con le Unmodificable Named Permissions Set.

In Security 28 andremo a vedere come Recuperare la lista completa delle Permissions Associate al codice in esecuzione attraverso i NamedPermission Set ed i Code Groups. Non solo, scopriremo anche come Recuperare i CodeGroups nei vari livelli di Policy.