Partager via


Présentation de la gestion des rôles

Mise à jour : novembre 2007

La gestion des rôles vous aide à gérer les autorisations, vous permettant de spécifier les ressources auxquelles les utilisateurs de votre application peuvent accéder. Elle permet de traiter des groupes d'utilisateurs en tant qu'unités en assignant des rôles aux utilisateurs, tels que gestionnaire, vendeur, membre, etc. (Dans Windows, vous créez des rôles en assignant des utilisateurs à des groupes tels qu'Administrateurs, Utilisateurs avec pouvoir, etc.)

Une fois les rôles définis, vous pouvez créer des règles d'accès dans votre application. Par exemple, votre site peut comporter un ensemble de pages qui ne s'afficheront que pour les membres. De même, vous pouvez afficher ou masquer une partie d'une page selon que l'utilisateur actuel est un gestionnaire ou non. En utilisant les rôles, vous pouvez établir ces types de règles indépendamment des utilisateurs de l'application. Par exemple, vous n'avez pas à accorder l'accès à des pages réservées uniquement aux membres à toutes les personnes qui se connectent à votre site. À la place, vous pouvez accorder l'accès au rôle de membre, puis simplement ajouter des utilisateurs à ce rôle et en supprimer à mesure que ceux-ci s'inscrivent ou laissent leur adhésion expirer.

Les utilisateurs peuvent appartenir à plusieurs rôles. Par exemple, si votre site est un forum de discussion, certains utilisateurs peuvent être à la fois membres et modérateurs. Vous pouvez définir des droits différents sur le site pour chaque rôle ; un utilisateur qui combine deux rôles aura l'ensemble de droits correspondants.

Même si votre application est utilisée par peu d'utilisateurs, la création de rôles reste un procédé pratique. Les rôles permettent de modifier facilement les autorisations et d'ajouter ou de supprimer des utilisateurs sans avoir à modifier le site. À mesure que vous définissez de nouvelles règles d'accès pour votre application, les rôles deviennent une façon plus commode d'appliquer les modifications aux groupes d'utilisateurs.

Rôles et règles d'accès

Le principal objectif des rôles consiste à vous procurer une gestion facile des règles d'accès pour les groupes d'utilisateurs. Vous créez des utilisateurs, puis leur assignez des rôles (dans Windows, aux groupes). Une utilisation classique consiste alors à créer un ensemble de pages dont l'accès sera réservé à certains utilisateurs. Généralement, vous isolez ces pages à accès restreint dans un dossier qui leur est réservé. Puis, vous pouvez établir des règles qui accordent ou refusent les accès aux dossiers. Vous pouvez par exemple configurer le site pour accorder l'accès aux pages du dossier à accès restreint aux membres ou aux gestionnaires et le refuser aux autres utilisateurs. Si un utilisateur non autorisé essaie de consulter une page à accès restreint, soit il voit s'afficher un message d'erreur, soit il est redirigé vers une page de votre choix.

Gestion des rôles, identité des utilisateurs et appartenance

Pour utiliser les rôles, vous devez être en mesure d'identifier les utilisateurs de votre application afin de pouvoir déterminer si un utilisateur appartient ou non à un rôle spécifique. Vous pouvez configurer votre application pour définir l'identité des utilisateurs de deux façons : avec l'authentification Windows ou avec l'authentification par formulaire. Si votre application s'exécute dans un réseau local (c'est-à-dire, une application intranet basée sur le domaine), vous pouvez identifier les utilisateurs grâce à leur nom de compte de domaine Windows. Dans ce cas, les rôles d'un utilisateur sont les groupes Windows auxquels il appartient.

Dans les applications Internet ou d'autres scénarios où il n'est pas pratique d'utiliser des comptes Windows, vous pouvez utiliser l'authentification par formulaire pour définir l'identité des utilisateurs. Pour ce faire, vous créez généralement une page où les utilisateurs peuvent entrer un nom d'utilisateur et un mot de passe, puis vous validez leurs informations d'identification. Les contrôles Login ASP.NET peuvent effectuer une grande partie de ce travail, ou vous pouvez créer une page de connexion et utiliser la classe FormsAuthentication pour définir l'identité d'un utilisateur.

Remarque :

Les rôles ne fonctionnent pas avec les utilisateurs dont l'identité n'est pas définie dans votre application (utilisateurs anonymes).

Si vous utilisez les contrôles Login ou l'authentification par formulaire pour définir l'identité d'un utilisateur, vous pouvez également utiliser la gestion des rôles avec l'appartenance. Dans ce scénario, vous utilisez l'appartenance pour définir des utilisateurs et des mots de passe. Vous pouvez ensuite utiliser la gestion des rôles pour définir des rôles et assigner des utilisateurs à ces rôles. Toutefois, la gestion des rôles ne dépend pas de l'appartenance. Tant que vous disposez dans votre application d'un moyen de définir l'identité des utilisateurs, vous pouvez utiliser la gestion des rôles pour les autorisations.

Gestion des rôles et les services de rôles ASP.NET

Vous pouvez accéder aux rôles sous la forme d'un service Windows Communication Framework (WCF) en utilisant le service de rôles ASP.NET. Le service de rôles vous permet de vérifier les rôles d'un utilisateur de toute application qui peut lire ou consommer un service WCF. Par exemple, vous pourriez vérifier les rôles d'un utilisateur d'une application Windows Forms, d'une application Web, ou d'une application qui n'utilise pas le .NET Framework. Pour plus d'informations sur le service d'application des rôles, consultez Vue d'ensemble du service de rôle de Windows Communication Foundation.

API de gestion des rôles

La gestion des rôles ne se limite pas à restreindre les droits d'accès aux pages ou aux dossiers. Elle fournit une API que vous pouvez utiliser pour déterminer par programme si un utilisateur appartient ou non à un rôle. Vous pouvez ainsi écrire du code pour tirer parti des rôles et exécuter les tâches de l'application basées non seulement sur l'identité de l'utilisateur, mais également sur ses rôles.

Si vous définissez l'identité des utilisateurs dans votre application, vous pouvez utiliser les méthodes API de gestion des rôles pour créer des rôles, ajouter des utilisateurs aux rôles ou obtenir des informations pour connaître quels sont les utilisateurs de tels rôles. Ces méthodes vous permettent de créer votre propre interface de gestion des rôles.

Si votre application utilise l'authentification Windows, l'API de gestion des rôles propose moins de fonctionnalités. Vous ne pouvez pas, par exemple, utiliser la gestion des rôles pour créer des rôles. À la place, vous utilisez la gestion des utilisateurs et groupes Windows pour créer des comptes d'utilisateurs ainsi que des groupes, et assigner des utilisateurs aux groupes. La gestion des rôles peut ensuite lire les informations sur les utilisateurs et les groupes Windows, que vous pouvez utiliser pour l'authentification.

Si vous utilisez le service de rôles ASP.NET, vous pouvez vérifier si un utilisateur appartient à un rôle particulier ou récupérer tous les rôles d'un utilisateur. Toutefois, vous ne pouvez pas gérer de rôles à travers l'API de service de rôles.

Mode de fonctionnement de la gestion des rôles ASP.NET

Pour utiliser la gestion des rôles, vous devez d'abord l'activer, puis éventuellement configurer des règles d'accès qui peuvent tirer parti des rôles. Vous pouvez ensuite employer les fonctions de gestion des rôles au moment de l'exécution pour utiliser les rôles.

Configuration de la gestion des rôles

Pour utiliser la gestion des rôles ASP.NET, vous devez l'activer dans le fichier Web.config de votre application à l'aide d'un paramètre comme celui-ci :

<roleManager 
    enabled="true" 
    cacheRolesInCookie="true" >
</roleManager>

Les rôles sont utilisés généralement pour établir des règles qui autorisent ou refusent l'accès aux pages ou aux dossiers. Vous pouvez configurer ces règles d'accès dans la section authorization du fichier Web.config. L'exemple suivant autorise les utilisateurs appartenant au rôle membres à afficher les pages du dossier memberPages et interdit cet accès à tous les autres utilisateurs :

<configuration>
  <location path="MemberPages">
    <system.web>
      <authorization>
        <allow roles="members" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
  <!-- other configuration settings here -->
<configuration>

Pour plus d'informations sur la configuration des règles d'accès, consultez Autorisation ASP.NET.

Vous devez créer également des rôles tels que gestionnaire ou membre, puis leur assigner des ID d'utilisateur. Si votre application utilise l'authentification Windows, vous utilisez l'outil Gestion de l'ordinateur Windows pour créer des utilisateurs et des groupes.

Si vous utilisez l'authentification par formulaire, vous pouvez configurer les utilisateurs et les rôles à l'aide de l'outil Administration de site Web ASP.NET. Si vous préférez, vous pouvez exécuter cette tâche par programme en appelant plusieurs méthodes de gestionnaire de rôles. L'exemple suivant montre comment créer le rôle members :

Roles.CreateRole("members")
Roles.CreateRole("members");

L'exemple de code suivant montre comment ajouter l'utilisateur JoeWorden au rôle manager, et comment vous pouvez ajouter simultanément les utilisateurs JillShrader et ShaiBassli au rôle members :

Roles.AddUsersToRole("JoeWorden", "manager")
Dim userGroup(2) As String
userGroup(0) = "JillShrader"
userGroup(1) = "ShaiBassli"
Roles.AddUsersToRole(userGroup, "members")
Roles.AddUsersToRole("JoeWorden", "manager");
string[] userGroup = new string[2];
userGroup[0] = "JillShrader";
userGroup[1] = "ShaiBassli";
Roles.AddUsersToRole(userGroup, "members");
Remarque :

Les fonctionnalités de la gestion du rôle ne sont pas disponibles à travers le service de rôles ASP.NET. Le service de rôles ne peut retourner des informations à propos que d'un utilisateur particulier.

Utilisation des rôles au moment de l'exécution

Au moment de l'exécution, lorsque les utilisateurs visitent votre site, ils définissent une identité, soit en tant que nom de compte Windows, soit en se connectant à votre application. (Dans un site Internet, si les utilisateurs visitent votre site sans se connecter (c'est-à-dire de façon anonyme), ils n'auront pas d'identité d'utilisateur et par conséquent n'appartiendront à aucun rôle.) Votre application peut accéder aux informations sur l'utilisateur connecté à partir de la propriété User. Lorsque les rôles sont activés, ASP.NET recherche les rôles de l'utilisateur actuel et les ajoute à l'objet User afin que vous puissiez les vérifier. L'exemple suivant indique comment déterminer si l'utilisateur actuel est dans le rôle de membre. Si l'utilisateur est dans le rôle, le code affiche un bouton pour les membres :

If User.IsInRole("members") Then
   buttonMembersArea.Visible = True
End If
if (User.IsInRole("members"))
{
   buttonMembersArea.Visible = True;
}

ASP.NET crée également une instance de la classe RolePrincipal et l'ajoute au contexte de demande actuel. Cela vous permet d'effectuer des tâches de la gestion du rôle par programme, telles que déterminer quels utilisateurs sont dans un rôle spécifique. . L'exemple suivant indique comment obtenir une liste des rôles pour l'utilisateur connecté actuel.

Dim userRoles() as String = CType(User, RolePrincipal).GetRoles()
string[] userRoles = ((RolePrincipal)User).GetRoles();

Si vous utilisez le contrôle LoginView dans votre application, il vérifie les rôles de l'utilisateur et peut créer dynamiquement une interface utilisateur basée sur ces rôles.

Mise en cache des informations sur les rôles

Si le navigateur d'un utilisateur autorise les cookies, ASP.NET peut éventuellement stocker les informations sur les rôles dans un cookie chiffré sur l'ordinateur de l'utilisateur. À chaque demande de page, ASP.NET lit le cookie et remplit les informations sur les rôles de cet utilisateur à partir du cookie. Cette stratégie évite d'avoir à lire les informations sur les rôles dans la base de données. Si le navigateur de l'utilisateur ne prend pas en charge les cookies ou si les cookies sont désactivés, les informations sur les rôles ne sont mises en cache que pour la durée de chaque demande de page.

Voir aussi

Concepts

Fournisseurs de gestion des rôles

Classes de gestion des rôles

Autres ressources

Sécurisation de sites Web ASP.NET