Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous générez un assembly, vous pouvez spécifier un ensemble d’autorisations nécessaires à l’exécution de l’assembly. Que certaines autorisations soient accordées ou non accordées à une assemblée repose sur des preuves.
Il existe deux façons distinctes d’utiliser des preuves :
La preuve d’entrée est fusionnée avec la preuve recueillie par le chargeur pour créer un ensemble final de preuves utilisées pour la résolution de stratégie. Les méthodes qui utilisent cette sémantique incluent Assembly.Load, Assembly.LoadFrom et Activateor.CreateInstance.
La preuve d'entrée est utilisée sans modification comme élément de preuve final pour la résolution de la politique. Les méthodes qui utilisent cette sémantique incluent Assembly.Load(byte[]) et AppDomain.DefineDynamicAssembly().
Les autorisations facultatives peuvent être accordées par la stratégie de sécurité définie sur l’ordinateur sur lequel l’assembly s’exécutera. Si vous souhaitez que votre code gère toutes les exceptions de sécurité potentielles, vous pouvez effectuer l’une des opérations suivantes :
Insérez une demande d’autorisation pour toutes les autorisations dont votre code doit disposer et gérez à l'avance l'échec lors du chargement qui se produit si les autorisations ne sont pas accordées.
N’utilisez pas de demande d’autorisation pour obtenir des autorisations dont votre code a besoin, mais préparez-vous à gérer les exceptions de sécurité si les autorisations ne sont pas accordées.
Remarque
La sécurité est une zone complexe et vous avez de nombreuses options à choisir. Pour plus d’informations, consultez Concepts de sécurité clés.
Au moment du chargement, la preuve de l'assembly est utilisée comme entrée vers la stratégie de sécurité. La stratégie de sécurité est établie par l’entreprise et l’administrateur de l’ordinateur, ainsi que par les paramètres de stratégie utilisateur, et détermine le jeu d’autorisations accordées à tout le code managé lors de l’exécution. La stratégie de sécurité peut être établie pour l’éditeur de l’assemblage (s’il dispose d’une signature générée par un outil de signature), pour le site web et la zone (des concepts d'Internet Explorer) à partir desquels l’assemblage a été téléchargé, ou pour le nom fort de l’assemblage. Par exemple, l’administrateur d’un ordinateur peut établir une stratégie de sécurité qui autorise tout le code téléchargé à partir d’un site Web et signé par une société logicielle donnée pour accéder à une base de données sur un ordinateur, mais n’accorde pas l’accès à l’écriture sur le disque de l’ordinateur.
Assemblys avec nom fort et outils de signature
Avertissement
Ne vous fiez pas à des noms forts pour la sécurité. Ils fournissent une identité unique uniquement.
Vous pouvez signer un assembleur de deux façons différentes mais complémentaires : avec un nom fort ou en utilisant SignTool.exe (Outil de signature). La signature d’un assembly avec un nom fort ajoute un chiffrement à clé publique au fichier contenant le manifeste d’assembly. La signature de nom fort permet de vérifier l’unicité du nom, d’empêcher l’usurpation de noms et de fournir aux appelants une identité lorsqu’une référence est résolue.
Aucun niveau de confiance n’est associé à un nom fort, ce qui rend SignTool.exe (Outil de signature) important. Les deux outils de signature nécessitent un éditeur pour prouver son identité à une autorité tierce et obtenir un certificat. Ce certificat est ensuite incorporé dans votre fichier et peut être utilisé par un administrateur pour décider s’il faut approuver l’authenticité du code.
Vous pouvez donner à la fois un nom fort et une signature numérique créés en utilisant SignTool.exe (Outil de signature) à un assembly, ou utiliser l’un des deux. Les deux outils de signature ne peuvent signer qu’un seul fichier à la fois ; pour un assembly multifichier, vous signez le fichier qui contient le manifeste d’assembly. Un nom fort est stocké dans le fichier contenant le manifeste d’assembly, mais une signature créée à l’aide deSignTool.exe (outil de signature) est stockée dans un emplacement réservé dans le fichier exécutable portable (PE) contenant le manifeste d’assembly. La signature d’un assembly à l’aide de SignTool.exe (outil de signature) peut être utilisée (avec ou sans nom fort) lorsque vous disposez déjà d’une hiérarchie d’approbation qui s’appuie sur des signatures générées parSignTool.exe (outil de signature), ou lorsque votre stratégie utilise uniquement la partie clé et ne vérifie pas une chaîne d’approbation.
Remarque
Lorsque vous utilisez à la fois un nom fort et une signature générée par un outil avec un assembly, le nom fort doit être assigné en premier.
Le Common Language Runtime effectue également une vérification de hachage ; le manifeste d’assembly contient une liste de tous les fichiers qui composent l’assembly, y compris un hachage de chaque fichier tel qu’il existait lors de la génération du manifeste. Chaque fichier étant chargé, son contenu est haché et comparé à la valeur de hachage stockée dans le manifeste. Si les deux hachages ne correspondent pas, l'assembly échoue.
Un nommage et une signature forts à l’aide deSignTool.exe (Outil de signature) garantissent l’intégrité par le biais de signatures numériques et de certificats. Toutes les technologies mentionnées, c’est-à-dire la vérification de hachage, le nommage fort et la signature à l’aide deSignTool.exe (Outil de signature), fonctionnent ensemble pour s’assurer que l’assembly n’a pas été modifié d’une manière quelconque.