8 votes

Quel avantage votre code reçoit-il si vous l'agrémentez d'attributs exigeant des autorisations de sécurité spécifiques ?

Quel avantage votre code reçoit-il si vous l'agrémentez d'attributs exigeant des autorisations de sécurité spécifiques ?

12voto

Steven Points 56939

La plupart des autorisations de sécurité sont particulièrement utiles lors de la création de bibliothèques réutilisables conçues pour être exécutées en confiance partielle. De cette façon, vous pouvez restreindre l'accès à certaines fonctions lorsqu'un assemblage ou un AppDomain appelant n'a pas les droits appropriés configurés. Pour une application qui fonctionne en confiance totale, la plupart des permissions de sécurité ne sont pas si utiles.

Cependant, il y a un attribut que j'ai tendance à utiliser assez souvent et c'est le PrincipalPermissionAttribute . Lorsque vous décorez une classe ou une fonction avec cet attribut, .NET vérifie à chaque accès si le principe du thread actuel possède les droits appropriés. En d'autres termes, vous pouvez autoriser ou refuser l'accès à ce code en fonction du rôle d'un utilisateur (sécurité basée sur le rôle). Voici un exemple :

[PrincipalPermission(SecurityAction.Demand, Role = "Managers")]
public static void ShowSalaryForEmployee(Employee employee)
{
    // code here.
}

MISE À JOUR 2017 :

La réponse ci-dessus est complètement dépassée. J'ai arrêté d'utiliser cet attribut particulier il y a des années, parce qu'il utilise une technique de tissage de code intégrée au CLR, qui rend vraiment difficile la réalisation de tests unitaires et d'intégration lorsque vous n'êtes pas intéressé à tester spécifiquement l'aspect sécurité du code.

Au lieu de cela, j'ai trouvé qu'il était beaucoup mieux de définir mes propres attributs qui déclarent les autorisations sur les opérations (typiquement définies par des messages) et d'implémenter l'autorisation au niveau de l'infrastructure (typiquement en utilisant un décorateur) au lieu de compter sur le tissage de code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X