Creazione di autorizzazioni personalizzate di accesso al codice
In .NET Framework viene fornito un insieme di classi di autorizzazioni per l'accesso al codice progettate per proteggere uno specifico gruppo di risorse e di operazioni, sulla base delle risorse esposte da .NET Framework. Queste classi di autorizzazioni vengono brevemente descritte nell'argomento Autorizzazioni. Informazioni più dettagliate vengono fornite nella documentazione di riferimento di ciascuna classe di autorizzazioni. Le autorizzazioni di accesso al codice incorporate sono adatte alla maggior parte degli ambienti operativi. In alcune situazioni tuttavia potrebbe essere consigliabile definire una classe personalizzata di autorizzazioni per l'accesso al codice. In tale argomento vengono illustrate le condizioni, le ragioni e le modalità di definizione delle classi di autorizzazioni personalizzate per l'accesso al codice.
Se si desidera definire un componente o una libreria di classi che accede a una risorsa che non è contemplata dalle classi di autorizzazioni incorporate ma che è necessario proteggere dal codice non autorizzato, è consigliabile creare una classe di autorizzazioni personalizzata per l'accesso al codice. Per potere generare pretese dichiarative dell'autorizzazione personalizzata, è inoltre necessario definire una classe attribute per l'autorizzazione. Grazie a tali classi e alla generazione di pretese dell'autorizzazione dall'interno della libreria di classi, si impedisce che il codice non autorizzato acceda alla risorsa e si consente all'amministratore di configurare i diritti di accesso.
L'utilizzo di un'autorizzazione personalizzata potrebbe risultare utile anche in altre situazioni. Quando una classe di autorizzazioni per l'accesso al codice incorporata protegge una risorsa ma non ne controlla l'accesso in maniera sufficiente, potrebbe essere necessario utilizzare un'autorizzazione personalizzata di accesso al codice. Un'applicazione potrebbe, ad esempio, utilizzare record del personale in cui ogni record relativo ai dipendenti è memorizzato in un file separato. In un caso come questo, l'accesso in lettura e in scrittura potrebbe essere controllato in maniera distinta per ciascun tipo di dati relativi ai dipendenti. Uno strumento di gestione interna potrebbe essere autorizzato a leggere alcune sezioni del file relativo a un dipendente, ma non a modificarle. Potrebbe addirittura essere necessario negare a tale strumento l'autorizzazione per la lettura di alcune sezioni.
Le autorizzazioni personalizzate di accesso al codice sono appropriate anche nei casi in cui un'autorizzazione incorporata esiste ma non è definita in modo tale da proteggere adeguatamente la risorsa. È possibile che vi sia una funzionalità di interfaccia utente da proteggere che offre, ad esempio, la possibilità di creare menu, ma che non è protetta dalla classe incorporata UIPermission. In questo caso, si potrà creare un'autorizzazione personalizzata che protegge la possibilità di creare menu.
Se possibile, è necessario che le autorizzazioni non si sovrappongano. La presenza di più autorizzazioni che proteggono una risorsa rappresenta un problema rilevante per gli amministratori. È infatti necessario che gli amministratori si assicurino di gestire appropriatamente tutte le autorizzazioni sovrapposte ogni volta che si accingono a configurare i diritti di accesso alla risorsa.
L'implementazione di un'autorizzazione personalizzata di accesso al codice prevede i passaggi illustrati di seguito, alcuni dei quali sono facoltativi. Ognuno dei passaggi è descritto in un argomento distinto.
Implementazione delle interfacce IPermission e IUnrestrictedPermission.
Implementazione dell'interfaccia ISerializable, se necessaria per motivi di prestazioni o per supportare tipi di dati speciali.
Gestione della codifica e decodifica XML.
Aggiunta del supporto della sicurezza dichiarativa mediante l'implementazione della classe Attribute.
Pretesa dell'autorizzazione personalizzata, se appropriata.
Vedere anche
Riferimenti
Concetti
Sicurezza dall'accesso di codice
Estensione di metadati mediante attributi
Progettazione di un'autorizzazione