Création de vos propres autorisations d'accès du code
Le .NET Framework fournit un jeu de classes d'autorisations d'accès du code conçu pour protéger un jeu spécifique de ressources et d'opérations, en s'intéressant particulièrement aux ressources exposées par le .NET Framework. Ces classes d'autorisations sont brièvement décrites dans la rubrique Autorisations et en détail dans la documentation de référence de chaque classe d'autorisations. Pour la plupart des environnements, les autorisations d'accès du code intégrées sont adéquates. Cependant, dans certains cas, il peut s'avérer avisé de définir votre propre classe d'autorisations d'accès du code. Cette rubrique explique quand, pourquoi et comment vous définissez des classes d'autorisations d'accès au code personnalisées.
Si vous définissez un composant ou une bibliothèque de classes qui accède à une ressource qui n'est pas couverte par les classes d'autorisations intégrées mais doit être protégé face à du code non autorisé, vous devez envisager la création d'une classe d'autorisations d'accès du code personnalisée. Si vous souhaitez pouvoir faire des demandes déclaratives pour votre autorisation personnalisée, vous devez aussi définir une classe Attribute pour l'autorisation. Le fait de fournir ces classes et de faire des demandes d'autorisation à partir de votre bibliothèque de classes permet au runtime d'empêcher du code non autorisé d'accéder à cette ressource et à un administrateur de configurer les droits d'accès.
Il existe d'autres situations dans lesquelles une autorisation personnalisée peut s'avérer appropriée. Lorsqu'une classe d'autorisations d'accès du code intégrée protège une ressource mais ne contrôle pas suffisamment l'accès à cette ressource, il est possible que vous ayez besoin d'une autorisation d'accès du code personnalisée. Une application peut par exemple utiliser des enregistrements du personnel pour lesquels l'enregistrement de chaque employé est stocké dans un fichier séparé ; dans ce cas, l'accès en lecture et écriture peut être contrôlé indépendamment pour différents types de données relatives aux employés. Un outil de gestion interne peut être autorisé à lire certaines sections du fichier du personnel mais peut ne pas être autorisé à modifier ces sections. En fait, il peut même ne pas être autorisé à lire certaines sections.
Les autorisations d'accès du code personnalisées sont également appropriées lorsqu'une autorisation intégrée existe mais n'est pas définie de manière à lui permettre de protéger convenablement la ressource. Par exemple, il est possible qu'une fonctionnalité de l'interface utilisateur, comme la capacité à créer des menus, doive être protégée mais ne le soit pas par la classe UIPermission intégrée. Dans ce cas, vous pouvez créer une autorisation personnalisée pour protéger la capacité à créer des menus.
Chaque fois que cela est possible, les autorisations ne doivent pas se chevaucher. La présence de plusieurs autorisations protégeant une ressource pose un problème considérable pour les administrateurs, qui doivent alors être sûrs de traiter de manière appropriée toutes les autorisations qui se chevauchent chaque fois qu'ils configurent les droits d'accès à cette ressource.
L'implémentation d'une autorisation d'accès du code personnalisée implique les étapes suivantes, dont certaines sont optionnelles. Chaque étape est décrite dans une rubrique séparée.
Implémentez les interfaces IPermission et IUnrestrictedPermission.
Implémentez l'interface ISerializable, si cela est nécessaire à la performance ou à la prise en charge de types de données spéciaux.
Gérez le codage et le décodage XML.
Ajoutez la prise en charge de la sécurité déclarative, par l'implémentation d'une classe Attribute.
Demandez l'autorisation personnalisée pour votre autorisation, le cas échéant.
Mettez à jour la stratégie de sécurité pour qu'elle ait connaissance de l'autorisation personnalisée.
Voir aussi
Référence
FileIOPermission Class
UIPermission Class
IPermission Interface
IUnrestrictedPermission Interface
ISerializable Interface
Concepts
Autorisations de sécurité
Conception d'une autorisation
Ajout de la prise en charge de la sécurité déclarative
Demande d'une autorisation personnalisée
Mise à jour de la stratégie de sécurité
Autres ressources
Sécurité d'accès du code
Extension des métadonnées à l'aide des attributs