Richiesta di autorizzazioni

Tramite la richiesta di autorizzazioni vengono comunicate al runtime le autorizzazioni necessarie per il codice. Per richiedere autorizzazioni per un assembly, inserire attributi (sintassi dichiarativa) nell'ambito dell'assembly del codice. Una volta creato l'assembly, il compilatore di linguaggio memorizza le autorizzazioni richieste nel manifesto dell'assembly. In fase di caricamento le richieste di autorizzazione vengono esaminate e vengono applicate le regole dei criteri di protezione, per determinare quali autorizzazioni saranno concesse all'assembly. L'eventuale influenza delle richieste sull'ambiente di esecuzione può condurre solo a un rifiuto della concessione di autorizzazioni al codice, mai a un aumento del numero delle autorizzazioni concesse. Sono sempre i criteri di amministrazione locali ad avere il controllo definitivo sul numero massimo di autorizzazioni concesse al codice.

Benché non sia obbligatoria per la compilazione del codice, la richiesta delle autorizzazioni per il codice è sempre consigliabile per importanti ragioni:

  • Una volta richieste le autorizzazioni, la probabilità di corretto funzionamento del codice, se ne è consentita l'esecuzione, risulta maggiore. Il codice per cui è richiesto un set minimo di autorizzazioni non verrà eseguito a meno che non siano ricevute le autorizzazioni in questione. Se non si individua un set minimo di autorizzazioni, è necessario che il codice sia in grado di gestire senza problemi tutte le situazioni in cui l'assenza di alcune autorizzazioni potrebbe impedire un corretto funzionamento.

  • Richiedendo le autorizzazioni si garantisce che al codice vengano concesse solo le autorizzazioni effettivamente necessarie. Se al codice non vengono concesse autorizzazioni aggiuntive, tale codice non potrà danneggiare le risorse protette dalle autorizzazioni in questione, anche se violato da codice dannoso o se contenente errori che possono essere utilizzati per danneggiare risorse. È consigliabile richiedere solo le autorizzazioni necessarie al codice.

  • Grazie alla richiesta delle autorizzazioni, gli amministratori vengono informati delle autorizzazioni minime necessarie all'applicazione e possono regolare di conseguenza i criteri di protezione. Gli amministratori utilizzeranno lo strumento Permission View (Permview.exe) per esaminare gli assembly e impostare i criteri di protezione per rilasciare le autorizzazioni richieste. Se le autorizzazioni necessarie all'applicazione non vengono richieste in modo esplicito, non sarà possibile ottenere le relative informazioni con lo strumento Permission View. Se l’amministratore non viene a conoscenza di queste informazioni, l’amministrazione dell’applicazione risulterà più difficile.

Mediante la richiesta di autorizzazioni si comunicano all'ambiente di esecuzione le informazioni sulle autorizzazioni necessarie al corretto funzionamento dell'applicazione o su specifiche autorizzazioni indesiderate. Se ad esempio l'applicazione scrive sul disco rigido locale senza utilizzare uno spazio di memorizzazione isolato, è necessario che tale autorizzazione disponga della classe FileIOPermission. Se la classe FileIOPermission non viene richiesta dal codice e le impostazioni di protezione locale non consentono all'applicazione di disporre di questa autorizzazione, quando l'applicazione tenterà di scrivere sul disco verrà generata un'eccezione di protezione. Anche se l'applicazione è in grado di gestire l'eccezione, non sarà autorizzata alla scrittura sul disco. Se l'applicazione è un programma per la modifica del testo, tale comportamento potrà essere frustrante per gli utenti che possono aver già apportato modifiche al file di testo e solo successivamente si accorgono dell'impossibilità di salvare i dati modificati. Al contrario, se l'applicazione richiede la classe FileIOPermission ma le impostazioni di protezione locale non consentono all'applicazione di disporne, all'avvio dell'applicazione verrà generata un'eccezione e l'utente non rischierà di perdere i dati elaborati. Se l'applicazione che richiede FileIOPermission è considerata attendibile, l'amministratore sarà inoltre in grado di regolare i criteri di protezione in modo da consentirne l'esecuzione da una condivisione remota.

Se il codice non accede a risorse protette né esegue operazioni protette, non vi è alcuna necessità di richiedere autorizzazioni. Potrebbe non essere necessario richiedere autorizzazioni ad esempio se il codice calcola semplicemente un risultato sulla base degli input ricevuti, senza utilizzare alcuna risorsa. Se il codice accede a risorse protette ma non fa richiesta delle autorizzazioni necessarie, è comunque possibile che l'esecuzione del codice venga autorizzata. È tuttavia possibile che si verifichino errori qualora il codice tentasse di accedere a una risorsa in mancanza dell'autorizzazione necessaria.

Per richiedere le autorizzazioni è necessario sapere quali risorse e operazioni protette vengono utilizzate dal codice e da quali autorizzazioni sono protette. È inoltre necessario tenere traccia di ogni risorsa alla quale accedono i vari metodi della libreria di classi chiamati dai componenti. Per esaminare un elenco delle autorizzazioni di accesso al codice incluse in .NET Framework, vedere l'argomento Autorizzazioni.

Nella tabella riportata di seguito viene fornita una descrizione dei vari tipi di richiesta di autorizzazioni.

Richiesta di autorizzazioni Descrizione

Autorizzazioni minime (RequestMinimum)

Autorizzazioni necessarie perché il codice possa essere eseguito.

Autorizzazioni facoltative (RequestOptional)

Autorizzazioni che possono essere concesse al codice, ma non indispensabili all'esecuzione. Con questa richiesta viene implicitamente rifiutata ogni altra autorizzazione che non sia stata esplicitamente richiesta.

Autorizzazioni rifiutate (RequestRefuse)

Autorizzazioni che è necessario non concedere mai al codice, anche se i criteri di protezione lo consentirebbero.

Esecuzione di una qualsiasi delle suddette richieste mediante set di autorizzazioni incorporati (Richiesta di set di autorizzazioni incorporati).

Set di autorizzazioni incorporati. Comprendono: Nothing, Execution, FullTrust, Internet, LocalIntranet e SkipVerification.

Esecuzione di una qualsiasi delle suddette richieste mediante set di autorizzazioni codificati in XML (Richiesta di autorizzazioni codificate in XML).

Rappresentazione XML del set di autorizzazioni desiderato. Può essere costituita da una stringa contenente il set di autorizzazioni codificato in XML o dal percorso di un file XML contenente tale set.

Delle autorizzazioni richieste mediante RequestMinimum, verranno concesse al codice tutte quelle consentite dai criteri di protezione. L'esecuzione del codice sarà autorizzata solo se verranno concesse tutte le autorizzazioni necessarie.

La richiesta di autorizzazioni facoltative senza che vengano richieste le autorizzazioni necessarie può, in alcuni casi, limitare seriamente le autorizzazioni concesse a un assembly. Si supponga ad esempio che, secondo le impostazioni di base, i criteri di protezione concedano a un assembly A le autorizzazioni associate al set di autorizzazioni denominato Everything. Se lo sviluppatore dell'assembly A richiede l'autorizzazione A come facoltativa senza richiedere alcuna delle autorizzazioni necessarie, all'assembly A potrà essere concessa l'autorizzazione A se i criteri di protezione lo consentono, altrimenti non verrà concessa alcuna autorizzazione.

Vedere anche

Attività

Procedura: richiedere l'autorizzazione per un set di autorizzazioni denominato

Riferimenti

FileIOPermission Class
SecurityAction.RequestMinimum
SecurityAction.RequestOptional
RequestRefuse

Concetti

Nozioni fondamentali sulla protezione dall’accesso di codice
Manifesto dell'assembly
Autorizzazioni di protezione
Richiesta di autorizzazioni codificate in XML
Criteri di protezione

Altre risorse

Protezione dall'accesso di codice