Sécurité basée sur les rôles COM+ et le .NET Framework
L'.NETFramework propose des systèmes pour intégrer du code managé aux services de sécurité COM+. Cette fonctionnalité repose sur le jeton Microsoft Windows NT associé à l'exécution du code qui sert d'assise à l'identité.
Sécurité basée sur les rôles
La sécurité basée sur les rôles permet de définir des rôles pour une application, de façon à ce que les autorisations pour l'application au niveau composant, méthode ou interface soient basées sur les appartenances dans ces rôles. Les environnements COM+ et .NETFramework permettent tous deux de définir des rôles au niveau application. L'.NETFramework et les mécanismes de sécurité basée sur les rôles de COM+ sont indépendants ; un seul de ces mécanismes peut être utilisé dans une application donnée.
La sécurité COM+ est fondée sur les comptes Windows NT et sur l'emprunt d'identité des processus et threads. Si le code managé offre des services d'authentification, il doit obtenir un jeton de sécurité Windows NT et procéder à un emprunt d'identité avant d'appeler des objets COM.
Contrôle d'accès aux applications et composants
COM+ permet d'activer la fonction de sécurité au niveau de l'application ou au niveau de la classe. La sécurité appliquée au niveau de l'application se définit au moyen de l'attribut ApplicationAccessControlAttribute, comme illustré dans l'exemple de code suivant.
[assembly: ApplicationAccessControl (AccessChecksLevel=AccessChecksLevelOption. ApplicationComponent)]
Le niveau de granularité de la vérification d'accès se configure pour une application en utilisant la propriété Application ou ApplicationComponent. La première propriété autorise les vérifications d'accès uniquement au niveau de l'application. Aucune vérification d'accès n'est effectuée au niveau du composant, de l'interface ou de la méthode. Si l'appelant est membre d'au moins un rôle défini dans l'application, l'appel à un objet, une interface ou une méthode aboutit. La seconde propriété autorise les vérifications d'accès à tous les niveaux. L'utilisation de ApplicationComponent est bien plus utile, car ainsi les vérifications d'accès basées sur les rôles sont appliquées au niveau du composant, de l'interface et de la méthode.
L'utilisation de la propriété ApplicationComponent autorise uniquement les vérifications d'accès au niveau du composant. Pour vous assurer que les vérifications d'accès sont bien effectuées pour un composant particulier, vous devez utiliser l'attribut ComponentAccessControlAttribute.
La sécurité au niveau du composant peut être activée en utilisant l'attribut ComponentAccessControlAttribute. Cet attribut peut être appliqué à une classe (comme le montre l'exemple de code suivant), à une interface ou à une méthode.
[ComponentAccessControl(true)]
public class CreditAccount : ServicedComponent
{
}
Avant de définir la sécurité pour un composant, vous devez activer la sécurité pour l'application qui héberge ce composant. Les vérifications d'accès se produisent uniquement si vous appliquez l'attribut ApplicationAccessControlAttribute à l'assembly et définissez l'attribut ApplicationAccessControlAttribute sur ApplicationComponent.
Le niveau auquel le contrôle de sécurité est activé détermine quand l'appartenance au rôle d'un appelant est contrôlée. Le tableau suivant décrit la façon dont l'appartenance au rôle de l'appelant est contrôlée selon que la sécurité est activée au niveau de l'application ou du composant.
Sécurité au niveau de l'application | Sécurité au niveau du composant | Moment où l'appartenance au rôle est contrôlée |
---|---|---|
Activée |
Désactivée |
L'appartenance au rôle est contrôlée à chaque fois que l'appelant accède à l'application. |
Activée |
Activée |
L'appartenance au rôle est contrôlée pour toutes les classes pour lesquelles la sécurité est activée au niveau classe, en plus de la vérification d'accès au niveau application. Le paramètre au niveau composant permet d'activer la sécurité basée sur les rôles aux niveaux classe, interface et méthode. |
Désactivée |
Activée/Désactivée |
Désactive la sécurité pour toutes les classes dans l'application. |
Ajout de rôles à une application
Vous pouvez ajouter des rôles à une application et associer ces rôles à des composants en utilisant l'attribut SecurityRoleAttribute comme illustré dans l'exemple de code.
[SecurityRole("Teller", Description="Bank teller role")]
public class CreditAccount : ServicedComponent
{
}
Cet attribut permet de créer des rôles et de les attribuer en fonction des appartenances pour une application, une interface ou une méthode. L'application de cet attribut à la totalité d'un assembly garantit que le rôle en question existe dans le catalogue COM+. Si vous appliquez cet attribut à un composant, il garantit que le rôle existe dans la configuration de l'application et associe le composant cible à ce rôle.
Si la propriété SetEveryoneAccess a pour valeur true, le rôle Everyone (Tout le monde) est ajouté en tant que membre. La valeur par défaut est false, ce qui signifie qu'aucun utilisateur n'est assigné à un rôle. Vous devez donc les configurer manuellement.
Les rôles de sécurité sont pris en charge aux niveaux assembly, classe, méthode et interface. Comme pour d'autres attributs de méthode, la configuration de la sécurité n'est pas actuellement partagée entre la définition de l'interface et l'implémentation de la méthode.
La classe SecurityCallContext permet l'accès au contexte d'appel de sécurité COM+ et est similaire, mais non identique, à l'objet SecurityCallContext de Visual Basic. Les nouvelles instances ne sont pas créées par programme mais obtenues par l'intermédiaire de la propriété CurrentCall. Les autres propriétés, décrites dans le tableau suivant, appellent des méthodes sur l'objet SecurityCallContext.
Propriété | Note |
---|---|
Callers |
Récupère l'élément Callers de l'objet SecurityCallContext dans COM+ et retourne cet élément sous la forme d'un objet SecurityCallers. |
CurrentCall |
Retourne une référence à un objet SecurityCallContext associé à l'appel en cours. |
DirectCaller |
Récupère l'élément DirectCaller de l'objet SecurityCallContext dans COM+ et retourne cet élément sous la forme d'un objet SecurityIdentity. |
MinAuthenticationLevel |
Récupère l'élément MinAuthenticationLevel de l'objet SecurityCallContext dans COM+. |
NumCallers |
Récupère l'élément NumCallers de l'objet SecurityCallContext dans COM+. |
OriginalCaller |
Récupère l'élément OriginalCaller de l'objet SecurityCallContext dans COM+ et retourne cet élément sous la forme d'un objet SecurityIdentity. |
Voir aussi
Référence
SecurityRoleAttribute
System.EnterpriseServices
Concepts
Résumé des services COM+ disponibles
Copyright ©2007 par Microsoft Corporation. Tous droits réservés.