Utilisation de bibliothèques à partir de code d'un niveau de confiance partiel
Les applications qui reçoivent un niveau de confiance moins que total du système de sécurité d'accès du code du runtime ne sont pas autorisées à appeler des bibliothèques managées partagées sauf si le writer de bibliothèque leur en donne l'autorisation spécifique par l'intermédiaire de l'utilisation de la AllowPartiallyTrustedCallersAttribute Class. Par conséquent, les writers d'applications doivent savoir que certaines bibliothèques ne seront pas disponibles à partir d'un contexte de confiance partiel. Par défaut, tout le code qui s'exécute depuis les zones Internet ou intranet est d'un niveau de confiance partiel. Si votre code n'est pas destiné à être exécuté à partir d'un contexte de confiance partiel ou à être appelé par du code d'un niveau de confiance partiel, vous n'avez pas dans ce cas à vous préoccuper des informations dans cette section. Cependant, si vous écrivez du code qui doit interagir avec du code d'un niveau de confiance partiel ou qui doit fonctionner à partir d'un contexte de confiance partiel, vous devez prendre les facteurs suivants en considération :
Les bibliothèques doivent être signées avec un nom fort afin d'être partagées par plusieurs applications. Les noms forts permettent à votre code d'être placé dans le Global Assembly Cache et permettent aux consommateurs de vérifier qu'une portion particulière de code mobile provient en fait de vous.
Par défaut, les bibliothèques avec nom fort et partagées effectuent un LinkDemand implicite automatiquement pour un niveau de confiance complet, sans la moindre participation du writer de bibliothèque.
Si un appelant ne dispose pas d'un niveau de confiance suffisant, et tente cependant d'appeler ce type de bibliothèque, le runtime lève une exception SecurityException et l'appelant n'est pas autorisé à lier à la bibliothèque.
Afin de désactiver le LinkDemand automatique et d'empêcher la levée de l'exception, vous pouvez placer l'attribut AllowPartiallyTrustedCallersAttribute sur la portée de l'assembly d'une bibliothèque partagée. Cet attribut permet à vos bibliothèques d'être appelées à partir du code managé d'un niveau de confiance partiel.
Le code d'un niveau de confiance partiel auquel est accordé l'accès à une bibliothèque possédant cet attribut fait toujours l'objet de restrictions supplémentaires définies par la stratégie d'ordinateur local.
Il n'existe aucune méthode par programmation permettant à du code d'un niveau de confiance partiel d'appeler une bibliothèque qui ne possède pas l'attribut AllowPartiallyTrustedCallersAttribute. Si une application ne reçoit pas un niveau de confiance suffisant par défaut, un administrateur doit choisir de modifier la stratégie de sécurité et d'accorder à l'application un niveau de confiance suffisant avant qu'elle appelle ce type de bibliothèque,
Les bibliothèques qui sont privées pour une application particulière ne nécessitent pas un nom fort ou l'attribut AllowPartiallyTrustedCallersAttribute et ne peuvent pas être référencées par du code potentiellement nuisible en dehors de l'application. Ce type de code est protégé contre une utilisation malveillante, intentionnelle ou non, par du code mobile d'un niveau de confiance partiel sans intervention supplémentaire du développeur ou de l'administrateur.
Vous devez envisager de permettre une utilisation de manière explicite du code d'un niveau de confiance partiel pour les types de code suivants :
Le code dont les failles en matière de sécurité ont été soigneusement testées et qui se conforme aux indications décrites dans Indications de codage sécurisé.
Des bibliothèques de code avec nom fort qui sont écrites spécifiquement pour des scénarios d'un niveau de confiance partiel.
Tous les composants (qu'ils soient d'un niveau de confiance partiel ou suffisant) signés avec un nom fort qui seront appelés par du code mobile téléchargé depuis Internet ou l'intranet local. Ces composants sont affectés car dans le cadre de la stratégie de sécurité par défaut, le code mobile reçoit une confiance partielle.
Si la stratégie par défaut est modifiée, tout code à qui la stratégie de sécurité accorde un niveau de confiance moins que total.
Notes
Certaines classes fournies dans la bibliothèque de classes .NET Framework ne disposent pas de l'attribut AllowPartiallyTrustedCallersAttribute et ne peuvent pas être appelées par du code d'un niveau de confiance partiel. Consultez Assemblys .NET Framework marqués avec AllowPartiallyTrustedCallersAttribute pour obtenir une liste des classes pouvant être appelées par du code d'un niveau de confiance partiel.