Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
par Scott Mitchell
Remarque
Depuis l’écriture 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 ASP.NET Identity plutôt que les fournisseurs d’appartenances proposés au moment où cet article a été écrit. 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 assertions
- Meilleure interopérabilité avec ASP.Net Core
L’outil d’administration du site web (WSAT) ASP.NET fournit une interface utilisateur basée sur le web pour la configuration des paramètres d’appartenance et de rôles et pour la création, la modification et la suppression d’utilisateurs et de rôles. Malheureusement, le WSAT fonctionne uniquement lorsqu’il est visité à 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. Les bonnes nouvelles sont 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.
Présentation
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 d’appartenance et de 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, Admin, avec Scott et Jisun dans le rôle Admin.
Les services d'application ASP.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 que ce fournisseur implémente le service à l’aide d’une technologie particulière. Nous avons configuré l'application web Book Reviews pour utiliser les fournisseurs SqlMembershipProvider
et SqlRoleProvider
pour les services d'Appartenance et de 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 auprès d’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 sur 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 inclut un outil WSAT ( Web Site Administration Tool ) qui facilite la création et la gestion des comptes d’utilisateur et des rôles et la spécification des règles d’autorisation basées sur les rôles et les utilisateurs. Pour utiliser WSAT, cliquez sur l’icône ASP.NET Configuration dans l’Explorateur de solutions, ou accédez au menu Site web ou Projet, puis choisissez l’option ASP.NET Configuration. 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érer 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 à la figure 1) inclut des liens pour créer de nouveaux utilisateurs, gérer les utilisateurs, créer et gérer des rôles, et créer et gérer 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 d’un compte d’utilisateur particulier.
Figure 1 : La section Sécurité WSAT comprend des options de gestion des utilisateurs et des rôles
(Cliquez pour afficher l’image de taille complète)
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 classes Membership
et Roles
du .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 quel fournisseur utiliser, de retour dans le didacticiel <membership>
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 sections <membership>
et <roleManager>
font référence aux fournisseurs SqlMembershipProvider
et SqlRoleProvider
respectivement dans leur attribut type
. 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 un mot, le WSAT doit être accessible localement via l’environnement de développement, et fonctionne avec les informations 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 fichier databaseConnectionStrings.config
de l'environnement de développement, nous pouvons utiliser le 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 dans l’environnement de développement et remplacez la chaîne de connexion de base de données de développement par la chaîne de connexion de base de données de production. Ensuite, lancez le WSAT, accédez à l’onglet Sécurité et ajoutez un nouvel utilisateur nommé Sam.
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 de taille complète)
Étant donné que nous avons modifié la chaîne de connexion dans databaseConnectionStrings.config
afin d'indiquer le serveur de base de données de production, Sam a été ajouté comme utilisateur dans l’environnement de production. Pour vérifier cela, modifiez la chaîne de connexion dans le fichier databaseConnectionStrings.config
pour qu'elle pointe à nouveau vers la base de données de développement, puis accédez à la page Login.aspx
dans l’environnement de développement. Essayez de vous connecter en tant que Sam (voir la 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 de taille complète)
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. Au lieu de cela, il a été 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 a 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 de taille complète)
Remarque
N’oubliez pas de changer à nouveau la chaîne de connexion dans le fichier databaseConnectionStrings.config
pour revenir à celle de la base de données de développement lorsque vous avez terminé d’utiliser le WSAT, sinon vous utiliserez des données de production lors du test du site via l’environnement de développement. Gardez également à l’esprit que si la technique que nous venons de discuter nous permet d’utiliser WSAT pour gérer à distance les utilisateurs et les rôles, les modifications apportées à l’une des autres options de configuration WSAT (règles d’accès, paramètres SMTP, paramètres SMTP, paramètres de débogage et de suivi, et ainsi de suite) modifient le Web.config
fichier. Par conséquent, 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 de gestion des rôles et des utilisateurs personnalisés
Le WSAT fournit un système prête à l’emploi pour la gestion des utilisateurs et des rôles, mais peut uniquement être lancé localement et nécessite des modifications apportées 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 des utilisateurs et des rôles qui permettent aux administrateurs de gérer les utilisateurs et les rôles à partir de pages du site. Ces pages d’administration basées sur le web facilitent considérablement la gestion des utilisateurs et des rôles et sont essentielles pour les sites où il peut y avoir de nombreux administrateurs ou administrateurs qui n’ont pas accès à Visual Studio ou l’arrière-plan technique 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 la plupart de ces pages web administratives aussi faciles que 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 permettant de créer des utilisateurs dans le WSAT illustré dans la figure 2 utilise le même contrôle CreateUserWizard que celui que vous pouvez ajouter à vos pages. En outre, les fonctionnalités des services d'appartenance et de rôles sont disponibles de manière programmatique via les classes Membership
et Roles
du .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 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éé se trouve dans le rôle d’administrateur (voir la figure 5).
Figure 5 : Les administrateurs peuvent créer des comptes d’utilisateur
(Cliquez pour afficher l’image de taille complète)
Pour un examen 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 des Membership
classes et Roles
des contrôles Web de connexion ASP.NET, veillez à lire mes didacticiels de sécurité de site web. Vous trouverez des conseils sur la création de pages web pour créer de nouveaux comptes, créer et gérer des rôles, affecter 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 vous aider à commencer, consultez 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 dans le processus de création d’un outil 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 d’administration de site web (WSAT) 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 le 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 facile 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 apportées aux informations de chaîne de connexion. Le WSAT offre un moyen rapide de gérer les utilisateurs et les rôles en production, mais est fastidieux et ne fonctionne pas correctement pour les sites web avec plusieurs administrateurs ou avec des administrateurs qui n’ont pas ou ne connaissent pas 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 la nécessité pour le WSAT et utilisé par différents utilisateurs administratifs de n’importe quel ordinateur.
Bonne programmation !
Pour aller plus loin
Pour plus d’informations sur les sujets abordés dans ce tutoriel, consultez les ressources suivantes :
- Examen de l'adhésion, des rôles et du profil dans ASP.NET
- Déploiement de votre propre outil d’administration de site web
- Vue d’ensemble de l’outil d’administration de site web
- Didacticiels sur la sécurité du site web