Richiesta di autorizzazioni

Nota importanteImportante

In .NET Framework versione 4 il supporto di runtime è stato rimosso per le richieste di autorizzazione RequestMinimum, RequestOptional e RequestRefuse.Questo argomento non riguarda il codice basato su .NET Framework 4 o versioni successive.Per ulteriori informazioni su questa e altre modifiche, vedere Modifiche della sicurezza in .NET Framework 4.

La richiesta di autorizzazioni è il modo in cui si indica al runtime le operazioni che il codice deve essere autorizzato a eseguire. È possibile richiedere autorizzazioni per un assembly inserendo 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 sicurezza, per determinare quali autorizzazioni saranno concesse all'assembly. Le richieste influenzano il runtime solo per quando riguarda la negazione di autorizzazioni al codice e mai con 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.

NotaNota

Il codice che si deve trovare in un computer viene eseguito nell'area My_Computer_Zone che, per impostazione predefinita, dispone di attendibilità totale.L'attendibilità totale comporta l'approvazione di tutte le richieste di autorizzazioni.Le richieste di autorizzazioni hanno sempre esito positivo, anche nel caso di autorizzazioni di identità per le quali non viene soddisfatta la condizione di identità.Se il codice deve essere eseguito solo nell'area My_Computer_Zone, non è necessario richiedere autorizzazioni.Se il codice deve essere eseguito in qualsiasi altra area, è consigliabile richiedere autorizzazioni.

NotaNota

In .NET Framework 3.5 Service Pack 1 e versioni successive le applicazioni nelle condivisioni nella rete Intranet vengono eseguite, per impostazione predefinita, con attendibilità totale.Se l'applicazione deve essere eseguita da una condivisione, verrà eseguita con attendibilità totale come nel caso di un'applicazione che si trova in un computer.Per ulteriori informazioni, vedere Esecuzione di applicazioni Intranet in attendibilità totale.

Benché la richiesta di autorizzazioni da parte del codice per l'esecuzione con attendibilità parziale non sia obbligatoria, è sempre consigliabile per alcuni importanti motivi:

  • 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 bug 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 sicurezza. È possibile determinare le autorizzazioni richieste dall'applicazione dalla scheda Sicurezza nella pagina delle proprietà del progetto per un progetto di Visual Studio. 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 esegue la scrittura sul disco rigido locale senza utilizzare uno spazio di memorizzazione isolato, è necessario che tale autorizzazione disponga dell'oggetto FileIOPermission. Se la classe FileIOPermission non viene richiesta dal codice e le impostazioni di sicurezza locale non consentono all'applicazione di disporre di questa autorizzazione, quando l'applicazione tenterà di scrivere sul disco verrà generata un'eccezione di sicurezza. 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 sicurezza locale non consentono all'applicazione di disporre do FileIOPermission, 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 sicurezza 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 sicurezza 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 sicurezza. 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 sicurezza 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 sicurezza lo consentono, altrimenti non verrà concessa alcuna autorizzazione.

Vedere anche

Attività

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

Riferimenti

FileIOPermission

SecurityAction.RequestMinimum

SecurityAction.RequestOptional

RequestRefuse

Concetti

Sicurezza dall'accesso di codice

Nozioni fondamentali sulla sicurezza per l’accesso al codice

Manifesto dell'assembly

Autorizzazioni di sicurezza

Richiesta di autorizzazioni codificate in XML

Criteri di sicurezza di .NET Framework