Partager via


Sécurité basée sur les rôles, exemple de technologie

Mise à jour : novembre 2007

Cet exemple montre comment utiliser la sécurité basée sur les rôles. L'application serveur indique le compte d'utilisateur utilisé par l'application cliente et précise s'il appartient au rôle de l'administrateur.

Pour plus d'informations sur l'utilisation des exemples, consultez les rubriques suivantes :

Pour générer l'exemple à partir de l'invite de commandes

  1. Ouvrez la fenêtre d'invite de commandes et accédez à l'un des sous-répertoires spécifiques aux différents langages dans le répertoire RoleBasedSecurity.

  2. Tapez msbuild RoleBasedSecurityCS.sln ou msbuild RoleBasedSecurityVB.sln, selon votre choix de langage de programmation, à partir de l'un des sous-répertoires spécifiques aux différents langages.

Pour générer l'exemple à l'aide de Visual Studio

  1. Ouvrez l'Explorateur Windows et accédez à l'un des sous-répertoires spécifiques aux différents langages dans le répertoire RoleBasedSecurity.

  2. Double-cliquez sur le fichier RoleBasedSecurityCS.sln ou RoleBasedSecurityVB.sln, selon votre choix de langage de programmation, pour ouvrir le fichier dans Visual Studio.

  3. Dans le menu Générer, cliquez sur Générer la solution.

Pour exécuter l'exemple

  1. Accédez au répertoire qui contient le nouveau fichier exécutable à l'aide de l'invite de commandes ou de l'Explorateur Windows.

  2. Tapez RBSecDemo.exe sur la ligne de commande ou double-cliquez sur l'icône de RBSecDemo.exe pour le lancer à partir de l'Explorateur Windows.

  3. Cliquez sur le bouton Display Logged On User. Le nom du compte de l'utilisateur actuellement connecté doit apparaître dans la fenêtre d'application. Ensuite, cliquez sur le bouton indiquant Is Caller in Demo Role? Le message "You ARE in RBSecurityDemoRole" doit apparaître.

  4. Lancez l'outil d'administration Services de composants (également appelé Explorateur COM+), en cliquant sur Démarrer\Outils d'administration\Services de composants. Recherchez l'application COM+ RBSecDemoSvr en développant Services de composants\Ordinateurs\Poste de travail\Applications COM+ dans le volet gauche de l'Explorateur COM+. Ensuite, cliquez avec le bouton droit sur l'application RBSecDemoSvr et sélectionnez « Propriétés ». Cette action ouvre la boîte de dialogue des propriétés de l'application. Cliquez sur l'onglet « Sécurité ». Les informations affichées ici correspondent aux paramètres spécifiés par ApplicationAccessControlAttribute. Désactivez la case à cocher « Appliquer les vérifications d'accès pour cette application ».

    Remarque importante :

      Cette action désactive la sécurité COM+ pour tous les composants contenus dans l'application.

    Cliquez sur OK pour fermer la boîte de dialogue des propriétés.

  5. Retournez à l'application cliente RBSecDemo. Cliquez sur Display Logged On User. Le message « Unknown caller (Security is not enabled) » doit apparaître. Cliquez sur Is Caller In Demo Role?. Le client signale toujours que l'utilisateur a le rôle RBSecurityDemoRole car, si la sécurité est désactivée, tous les appels à IsCallerInRole retournent la valeur true.

  6. Retournez à l'Explorateur COM+ et appelez une nouvelle fois la page des propriétés de RBSecDemoSvr en cliquant avec le bouton droit sur l'application et en sélectionnant Propriétés. Cliquez sur l'onglet Sécurité et réactivez la case à cocher Appliquer les vérifications d'accès pour cette application. La sécurité de l'application est réactivée. Cliquez sur OK pour fermer la boîte de dialogue des propriétés.

  7. Recherchez le composant Microsoft.Samples.Technologies.ComponentServices.RoleBasedSecurity.RBSecurityObject en développant "RBSecDemoSvr\Components". Cliquez avec le bouton droit sur le composant "Microsoft.Samples.Technologies.ComponentServices.RoleBasedSecurity.RBSecurityObject" et sélectionnez Propriétés dans le menu contextuel.

  8. Cliquez sur l'onglet Sécurité. Le paramètre Authorization correspond ici au ComponentAccessControlAttribute spécifié dans l'exemple de code. Vous devez voir un rôle appelé "RBSecurityDemoRole" répertorié en tant que rôle associé explicitement au composant. Ce rôle a été créé et lié à l'exemple de composant à l'aide de SecurityRoleAttribute dans l'exemple de code. Cliquez sur OK pour fermer la boîte de dialogue des propriétés.

  9. Dans l'Explorateur COM+, développez le dossier Rôles situé sous l'application RBSecDemoSvr. Le rôle RBSecurityDemoRole doit y être répertorié. Développez RBSecurityDemoRole\Users. Un seul compte (Tout le monde) doit figurer dans le dossier Utilisateurs. Cliquez avec le bouton droit sur « Tout le monde » et sélectionnez Supprimer dans le menu contextuel. Confirmez la suppression dans la boîte de dialogue qui s'affiche ensuite. COM+ met en cache les paramètres de sécurité associés aux rôles. Vous devez donc arrêter l'application RBSecDemoSvr avant de pouvoir observer les résultats de cette modification. Dans l'Explorateur COM+, cliquez avec le bouton droit sur l'application et sélectionnez Arrêter le système dans le menu contextuel.

  10. Retournez à l'application cliente RBSecDemo. En cliquant sur un des boutons, un MessageBox signalant que l'accès est refusé doit s'afficher. Une exception de sécurité d'accès refusé a été levée sur la création d'objet, car le composant RBSecurityDemoRole ne contient pas l'appelant actuel.

Pour désinstaller l'exemple

  1. Accédez au répertoire dans lequel vous avez exécuté l'outil MSBuild ou lancé le fichier .sln dans Visual Studio.

  2. Exécutez msbuild RoleBasedSecurityVB.sln /t:Clean ou msbuild RoleBasedSecurityVB.sln /t:Clean, selon votre choix de langage de programmation. Cette action appelle Outil .NET Services Installation Tool (Regsvcs.exe) et Outil Global Assembly Cache Tool (Gacutil.exe) avec le commutateur /u pour supprimer les fichiers d'exemple du catalogue COM+ et du Global Assembly Cache.

Configuration requise

plateformes : Windows 2000, Windows XP, Windows Server 2003

.NET Framework Version : 2.0

Notes

Pour plus d'informations sur les étapes de création et d'inscription d'exemples de fichiers binaires, consultez les commentaires figurant dans le code source et dans les fichiers build.proj.

Les informations récupérées par l'exemple d'application indiquent :

  • si la sécurité COM+ est activée ;

  • si l'appelant actuel est membre d'un rôle de sécurité créé par l'exemple ;

  • le nom de l'appelant en cours.

Dans l'outil d'administration Services de composants, le composant apparaît sous le nom Microsoft.Samples.Technologies.ComponentServices.RoleBasedSecurity.RBSecurityObject.

Remarque :

Vous devez exécuter Outil Global Assembly Cache Tool (Gacutil.exe) pour installer l'assembly RBSecDemoSvr.dll dans le Global Assembly Cache avant d'exécuter l'exemple. Gacutil.exe figure dans le répertoire SDK<version>\Bin. Par exemple, pour la version Visual Basic, accédez au répertoire C:\Documents and Settings\Votre nom d'utilisateur\Mes documents\Samples\Technologies\ComponentServices\RoleBasedSecurity\VB\bin et tapez gacutil - i RBSecDemoSvr.dll.

L'exemple montre également comment activer la sécurité au niveau de l'application ou du composant et créer des rôles de sécurité au moyen d'attributs.

Remarque :

   L'interopérabilité de sécurité COM+ dans .NET est fournie aux développeurs d'applications qui souhaitent écrire une extension managée pour une application existante qui utilise les services de sécurité COM+ 1.0. Le .NET Framework fournit sa propre sécurité basée sur les rôles. Les deux mécanismes sont indépendants et seul l'un d'entre eux doit être utilisé dans une même application.

Voir aussi

Référence

ApplicationAccessControlAttribute

ComponentAccessControlAttribute

ContextUtil

SecurityCallContext

SecurityRoleAttribute

ServicedComponent

System.ComponentModel

System.EnterpriseServices

Autres ressources

Sécurité basée sur les rôles