Quel avantage votre code reçoit-il si vous l'agrémentez d'attributs exigeant des autorisations de sécurité spécifiques ?
Réponse
Trop de publicités?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.