Utilisateurs et rôles sur le site web de production (VB)
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.
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
, ReviewsConnectionString
qui 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.
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).
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.
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).
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é conjointement avec les services d’application Appartenance et Rôles pour gérer les informations sur les utilisateurs et les rôles de votre site web. Malheureusement, le WSAT n’est accessible que 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 qu’elle pointe 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 simple et rapide 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 avec des 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 d’administration. Un tel ensemble de pages web élimine le besoin du 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 didacticiel, consultez les ressources suivantes :
- Examen d’ASP. Appartenance, rôles et profil de NET
- Déploiement de votre propre outil d’administration de site web
- Vue d’ensemble de l’outil d’administration de site web
- Tutoriels sur la sécurité des sites web