Partager via


Utilisateurs et rôles sur le site web de production (C#)

par Scott Mitchell

Notes

Depuis la rédaction de cet article, les fournisseurs d’appartenance ASP.NET ont été remplacés par ASP.NET Identity. Nous vous recommandons vivement de mettre à jour les applications pour utiliser la plateforme d’identité ASP.NET plutôt que les fournisseurs d’appartenance proposés au moment de la rédaction de cet article. ASP.NET Identity présente un certain nombre d’avantages par rapport au système d’appartenance ASP.NET, notamment :

  • Meilleures performances
  • Extensibilité et testabilité améliorées
  • Prise en charge d’OAuth, OpenID Connect et de l’authentification à deux facteurs
  • Prise en charge des identités basées sur les revendications
  • Meilleure interopérabilité avec ASP.Net Core

L’outil WSAT (ASP.NET Website Administration Tool) fournit une interface utilisateur basée sur le web pour la configuration des paramètres d’appartenance et de rôles, ainsi que pour la création, la modification et la suppression d’utilisateurs et de rôles. Malheureusement, le WSAT ne fonctionne qu’en cas de visite à partir de localhost, ce qui signifie que vous ne pouvez pas accéder à l’outil d’administration du site web de production via votre navigateur. La bonne nouvelle est qu’il existe des solutions de contournement qui permettent de gérer les utilisateurs et les rôles en production. Ce tutoriel examine ces solutions de contournement et d’autres.

Introduction

ASP.NET 2.0 a introduit un certain nombre de services d’application, qui sont une suite de services de blocs de construction que vous pouvez ajouter à votre application web. Nous avons ajouté les services Appartenance et rôles au site web Book Reviews dans le didacticiel Configuration d’un site web qui utilise les services d’application. Le service Appartenance facilite la création et la gestion des comptes d’utilisateur ; le service Rôles offre une API pour catégoriser les utilisateurs en groupes. Le site Book Reviews a trois comptes d’utilisateur - Scott, Jisun et Alice - et un seul rôle, Administration, avec Scott et Jisun dans le rôle Administration.

ASP. Les services d’application de NET ne sont pas liés à une implémentation spécifique. Au lieu de cela, vous demandez aux services d’application d’utiliser un fournisseur particulier, et ce fournisseur implémente le service à l’aide d’une technologie particulière. Nous avons configuré l’application web Book Reviews pour utiliser les SqlMembershipProvider fournisseurs et SqlRoleProvider pour les services Appartenance et Rôles. Ces deux fournisseurs stockent les informations de compte d’utilisateur et de rôle dans une base de données SQL Server et sont les fournisseurs les plus couramment utilisés pour les applications web basées sur Internet hébergées dans une société d’hébergement web.

Un défi courant pour les développeurs qui utilisent les services Appartenance et Rôles consiste à gérer les utilisateurs et les rôles dans l’environnement de production. Comment supprimer un compte d’utilisateur du site web de production, ajouter un nouveau rôle ou ajouter un utilisateur existant à un rôle existant ? Ce tutoriel explore différentes techniques de gestion des utilisateurs et des rôles sur le site web de production.

Utilisation de l’outil d’administration de site web ASP.NET

ASP.NET comprend un outil WSAT ( Web Site Administration Tool ) qui facilite la création et la gestion des comptes d’utilisateur et des rôles, ainsi que la spécification de règles d’autorisation basées sur les utilisateurs et les rôles. Pour utiliser WSAT, cliquez sur l’icône Configuration ASP.NET dans le Explorateur de solutions, ou accédez au menu Site web ou Projet et choisissez l’option Configuration ASP.NET. L’une ou l’autre approche lance un navigateur web et le pointe vers le WSAT à une adresse comme : http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication

Le WSAT est divisé en trois sections :

  • Sécurité : gérez les utilisateurs, les rôles et les règles d’autorisation.
  • ApplicationConfiguration : gérez les <paramètres appSettings> et SMTP à partir d’ici. Vous pouvez également mettre l’application hors connexion et gérer les paramètres de débogage et de suivi à partir d’ici, ainsi que spécifier la page d’erreur personnalisée par défaut.
  • ProviderConfiguration : configurez les fournisseurs utilisés par les services d’application.

La section Sécurité (illustrée dans la figure 1) comprend des liens pour la création d’utilisateurs, la gestion des utilisateurs, la création et la gestion des rôles, ainsi que la création et la gestion des règles d’accès. À partir de là, vous pouvez ajouter un nouveau rôle au système, supprimer un utilisateur existant ou ajouter ou supprimer des rôles à partir d’un compte d’utilisateur particulier.

Capture d’écran montrant les options de gestion des utilisateurs et des rôles.

Figure 1 : La section Sécurité WSAT inclut des options pour la gestion des utilisateurs et des rôles
(Cliquez pour afficher l’image en taille réelle)

Malheureusement, le WSAT n’est accessible que localement. Vous ne pouvez pas visiter le WSAT sur votre site web de production à distance; si vous visitez, www.yoursite.com/asp.netwebadminfiles/default.aspx vous obtenez une réponse 404 Introuvable. Le code qui alimente le WSAT utilise les Membership classes et Roles dans le .NET Framework pour créer, modifier et supprimer des utilisateurs et des rôles. Ces classes consultent les informations de configuration de l’application web pour déterminer le fournisseur à utiliser ; Dans le tutoriel Configuration d’un site web qui utilise les services d’application, nous avons configuré le site web Book Reviews pour utiliser les SqlMembershipProvider fournisseurs etSqlRoleProvider. Cela a nécessité l’ajout <membership> de sections et <roleManager> à Web.config.

<?xml version="1.0"?>
<configuration>
  ...

  <connectionStrings configSource="ConfigSections\databaseConnectionStrings.config" />

  <system.web>
  ...

  <membership defaultProvider="ReviewMembership">
  <providers>
  <clear />

  <add type="System.Web.Security.SqlMembershipProvider" 
  name="ReviewMembership" 
  connectionStringName="ReviewsConnectionString" 
  applicationName="BookReviews" />
  </providers>
  </membership>

  <roleManager enabled="true" defaultProvider="ReviewRole">
  <providers>
  <clear />

  <add type="System.Web.Security.SqlRoleProvider" 
  name="ReviewRole" 
  connectionStringName="ReviewsConnectionString" 
  applicationName="BookReviews" />
  </providers>
  </roleManager>
  </system.web>

  ...
</configuration>

Notez que les <membership> sections et <roleManager> référencent respectivement les SqlMembershipProvider fournisseurs et SqlRoleProvider dans leur type attribut. Ces fournisseurs stockent les informations d’utilisateur et de rôle dans une base de données SQL Server spécifiée. La base de données utilisée par ces fournisseurs est spécifiée par l’attribut connectionStringName , ReviewsConnectionStringqui est défini dans le ~/ConfigSections/databaseConnectionStrings.config fichier. Rappelez-vous que le databaseConnectionStrings.config fichier dans l’environnement de développement contient la chaîne de connexion à la base de données de développement, tandis que le databaseConnectionStrings.config fichier en production contient la chaîne de connexion à la base de données de production.

En résumé, le WSAT doit être accessible localement via l’environnement de développement, et il fonctionne avec les informations d’utilisateur et de rôle dans la base de données spécifiée dans le databaseConnectionStrings.config fichier. Par conséquent, si nous modifions les informations de chaîne de connexion dans le databaseConnectionStrings.config fichier sur l’environnement de développement, nous pouvons utiliser WSAT localement pour gérer les utilisateurs et les rôles dans l’environnement de production.

Pour illustrer cette fonctionnalité, ouvrez le databaseConnectionStrings.config fichier dans Visual Studio sur l’environnement de développement et remplacez la chaîne de connexion de la base de données de développement par la chaîne de connexion à la base de données de production. Ensuite, lancez WSAT, accédez à l’onglet Sécurité, puis ajoutez un nouvel utilisateur nommé Sam avec le mot de passe « password! » (moins les guillemets). La figure 2 montre l’écran WSAT lors de la création de ce compte.

Capture d’écran montrant le nouvel utilisateur créé dans l’environnement de production.

Figure 2 : Créer un utilisateur nommé Sam dans l’environnement de production
(Cliquez pour afficher l’image en taille réelle)

Étant donné que nous avons modifié la chaîne de connexion dans databaseConnectionStrings.config pour pointer vers le serveur de base de données de production, Sam a été ajouté en tant qu’utilisateur dans l’environnement de production. Pour vérifier cela, remplacez la chaîne de connexion dans le databaseConnectionStrings.config fichier en la base de données de développement, puis visitez la Login.aspx page de l’environnement de développement. Essayez de vous connecter en tant que Sam (voir figure 3).

Capture d’écran montrant que vous ne pouvez pas vous connecter en tant que Sam dans l’environnement de développement.

Figure 3 : Vous ne pouvez pas vous connecter en tant que Sam dans l’environnement de développement
(Cliquez pour afficher l’image en taille réelle)

Vous ne pouvez pas vous connecter en tant que Sam dans l’environnement de développement, car les informations de compte d’utilisateur n’existent pas dans la base de données locale. A la place, est ajouté à la base de données de production. Pour vérifier cela, affichez le contenu de la aspnet_Users table dans les bases de données de développement et de production. Dans l’environnement de développement, il ne doit y avoir que trois enregistrements pour les utilisateurs Scott, Jisun et Alice. Toutefois, la aspnet_Users table de la base de données de production comporte quatre enregistrements : Scott, Jisun, Alice et Sam. Par conséquent, Sam peut se connecter via le site web en production, mais pas via l’environnement de développement.

Capture d’écran montrant que Sam peut se connecter au site web de production.

Figure 4 : Sam peut se connecter sur le site web de production
(Cliquez pour afficher l’image en taille réelle)

Notes

N’oubliez pas de modifier la chaîne de connexion dans le databaseConnectionStrings.config fichier en la chaîne de connexion de la base de données de développement lorsque vous avez terminé d’utiliser WSAT, sinon, vous allez utiliser des données de production lors du test du site via l’environnement de développement. Gardez également à l’esprit que bien que la technique que nous venons d’aborder nous permette d’utiliser WSAT pour gérer à distance les utilisateurs et les rôles, les modifications apportées à toutes les autres options de configuration WSAT (règles d’accès, paramètres SMTP, paramètres de débogage et de suivi, etc.) modifient le Web.config fichier. Par conséquent, toutes les modifications apportées aux paramètres s’appliquent à l’environnement de développement et non à l’environnement de production.

Création de pages web personnalisées de gestion des rôles et des utilisateurs

WSAT fournit un système prête à l’emploi pour la gestion des utilisateurs et des rôles, mais ne peut être lancé que localement et nécessite d’apporter des modifications aux informations de chaîne de connexion afin de gérer les utilisateurs et les rôles en production. La plupart des sites web qui prennent en charge les comptes d’utilisateur incluent également un certain nombre de pages web d’administration d’utilisateurs et de rôles qui permettent aux administrateurs de gérer les utilisateurs et les rôles à partir de pages au sein du site. Ces pages d’administration web facilitent considérablement la gestion des utilisateurs et des rôles et sont essentielles pour les sites où de nombreux administrateurs ou administrateurs n’ont pas accès à ou n’ont pas l’arrière-plan technique pour utiliser Visual Studio pour lancer le WSAT.

ASP.NET inclut un certain nombre de contrôles web intégrés liés à la connexion qui facilitent l’implémentation de plusieurs de ces pages web administratives comme le glisser-déplacer. Par exemple, vous pouvez créer une page permettant aux administrateurs de créer un compte d’utilisateur en faisant glisser le contrôle CreateUserWizard sur la page et en définissant quelques propriétés. En fait, la page de création d’utilisateurs dans le WSAT illustré dans la figure 2 utilise le même contrôle CreateUserWizard que vous pouvez ajouter à vos pages. En outre, les fonctionnalités des services Appartenance et Rôles sont disponibles par programmation via les Membership classes et Roles dans le .NET Framework. Avec ces classes, vous pouvez écrire du code pour créer, modifier et supprimer des utilisateurs et des rôles, ainsi que pour ajouter ou supprimer des utilisateurs à des rôles, pour déterminer quels utilisateurs sont dans quels rôles et pour effectuer d’autres tâches liées aux utilisateurs et aux rôles.

Dans le didacticiel Configuration d’un site web qui utilise Application Services, j’ai ajouté une page au Admin dossier nommé CreateAccount.aspx. Cette page permet à un administrateur d’ajouter un nouveau compte d’utilisateur au site et de spécifier si l’utilisateur nouvellement créé est ou non dans le rôle Administration (voir figure 5).

Capture d’écran montrant que les administrateurs peuvent créer de nouveaux comptes d’utilisateur.

Figure 5 : Les administrateurs peuvent créer des comptes d’utilisateur
(Cliquez pour afficher l’image en taille réelle)

Pour obtenir un aperçu plus détaillé de la création de pages d’administration des rôles et des utilisateurs, ainsi que des instructions pas à pas sur l’utilisation Membership des classes et et Roles des contrôles web ASP.NET liés à la connexion, veillez à lire mes tutoriels sur la sécurité du site web. Vous y trouverez des conseils sur la façon de créer des pages web pour créer de nouveaux comptes, créer et gérer des rôles, attribuer des utilisateurs à des rôles et d’autres tâches administratives courantes.

Pour implémenter des fonctionnalités de type WSAT sur le site web de production, vous pouvez toujours créer votre propre série de pages web qui implémentent les fonctionnalités de WSAT. Pour commencer, case activée le code source WSAT, qui se trouve dans le dossier %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles. Une autre option consiste à utiliser l’alternative WSAT de Dan Clem, qu’il partage dans son article, Rolling Your Own Web Site Administration Tool. Dan guide les lecteurs tout au long du processus de création d’un outil de type WSAT personnalisé, inclut le code source de son application pour le téléchargement (en C#), et fournit des instructions pas à pas pour ajouter son WSAT personnalisé à un site web hébergé.

Résumé

L’outil WSAT (Web Site Administration Tool) ASP.NET peut être utilisé en tandem avec les services d’application Appartenance et Rôles pour gérer les informations d’utilisateur et de rôle pour votre site web. Malheureusement, le WSAT est accessible uniquement localement et ne peut pas être visité à partir de votre site web de production. Toutefois, en modifiant la chaîne de connexion dans l’environnement de développement pour pointer vers la base de données de production, vous pouvez utiliser WSAT pour gérer les utilisateurs et les rôles sur le site web de production.

Bien que l’approche WSAT offre un moyen rapide et simple de gérer les utilisateurs et les rôles, elle nécessite le lancement du WSAT à partir de Visual Studio ainsi que des modifications temporaires des informations de chaîne de connexion. WSAT offre un moyen rapide de gérer les utilisateurs et les rôles en production, mais il est fastidieux et ne fonctionne pas bien pour les sites web avec plusieurs administrateurs ou les administrateurs qui n’ont pas ou ne sont pas familiarisés avec Visual Studio et le WSAT. Pour ces raisons, la plupart des sites web qui prennent en charge les comptes d’utilisateur incluent un ensemble de pages web administratives. Un tel ensemble de pages web élimine la nécessité d’utiliser le WSAT et utilisé par divers utilisateurs administratifs à partir de n’importe quel ordinateur.

Bonne programmation!

En savoir plus

Pour plus d’informations sur les sujets abordés dans ce tutoriel, reportez-vous aux ressources suivantes :