Comment utiliser un mot de passe pour protéger vos contenus à l’aide d’ASP.NET sous Expression WebAuthor : Jim Cheshire - Jimco Software and Books Web site :
www.jimcobooks.com La question qui revient le plus souvent au cours de mes nombreuses communications avec les utilisateurs d’Expression Web est la suivante : « Comment activer un mot de passe dans Expression Web pour protéger un site Web ou une partie d’un site Web ? ». La protection par mot de passe peut être activée de différentes façons, mais si le serveur qui héberge votre site Web est un serveur Windows et si vous pouvez utiliser ASP.NET, le plus simple est encore d’utiliser les puissantes fonctions d’appartenance ASP.NET disponibles dans Expression Web. Les outils fournis avec Expression Web contiennent tous les contrôles de connexion pris en charge par ASP.NET version 2.0 et suivantes. (Voir Figure 1.) Certains utilisateurs d’Expression Web hésitent encore à exploiter ces contrôles car ils ne sont pas programmeurs et ne veulent pas se voir contraints d’apprendre à rédiger du code. Le but de cet article est précisément de démontrer comment utiliser les contrôles de connexion et les fonctions d’appartenance ASP.NET pour protéger vos contenus à l’aide d’un mot de passe sans écrire une seule ligne de code. Remarque : ASP.NET protège uniquement les pages ASPX, les pages maîtres et les contrôles utilisateur. Pour protéger des pages PHP ou HTML standard, vous devez faire appel à une autre méthode.
.png) Figure 1: Contrôles de connexion Fonctionnement de la protection par mot de passe d’ASP.NETLa procédure à utiliser pour protéger un contenu à l’aide des contrôles de connexion ASP.NET dans Expression Web est la suivante : 1. Ajoutez une page de connexion à votre site Web. 2. Configurez ASP.NET pour l’utilisation de l’authentification par formulaire. 3. Ajoutez des utilisateurs le cas échéant. Si vous le souhaitez, vous pouvez également ajouter des rôles (c’est-à-dire des groupes) d’utilisateurs. 4. Ajoutez des règles d’accès afin d’indiquer à ASP.NET les contenus du site Web auxquels les utilisateurs et/ou les rôles doivent être autorisés à accéder. Les étapes 2 à 4 paraissent plus compliquées qu’elles ne le sont réellement. L’objectif de cet article est précisément de démontrer comment l’outil Administration de site Web permet d’effectuer ces opérations à partir d’une interface Web très simple à utiliser. Ajout d’une page de connexionL’appartenance ASP.NET utilise un mécanisme d’authentification intégré appelé « authentification par formulaire ». Au lieu d’utiliser laboîte de dialogue d’ouverture de session du système d’exploitation, ce mécanisme invite l’utilisateur à entrer son ID de connexion et son mot de passe dans une page Web standard, qui peut être modifiée en fonction du style de présentation de votre site Web. Pour créer une page de connexion, procédez comme suit : - Dans Expression Web, sélectionnez Fichier - Nouveau, puis Page.
- Sélectionnez Général ou ASP.NET dans le volet de gauche de la boîte de dialogue Nouveau.
- Dans la liste des types de pages représentée Figure 2, sélectionnez ASPX.
.png) Figure 2: Sélection du type de page ASPX Le champ affiché en bas à droite de la boîte de dialogue Nouveau permet de sélectionner un langage de programmation. Étant donné que nous n’avons pas l’intention d’écrire du code ASP.NET dans le cadre de cet article, le choix d’un langage de programmation n’a aucun intérêt. Cependant, si vous envisagez d’intégrer du code ASP.NET à vos pages de contenu lors d’une étape ultérieure, il peut s’avérer judicieux de sélectionner dès maintenant le langage que vous connaissez le mieux. Pour utiliser la syntaxe JavaScript, choisissez C#. Si vous préférez la syntaxe Visual Basic, choisissez l’option VB. Une fois la nouvelle page ASP.NET créée, enregistrez-la à la racine de votre site Web sous le nom login.aspx. Il est possible d’attribuer un autre nom à la page de connexion, mais cela nécessite quelques opérations de configuration supplémentaires qui ne sont pas couvertes dans cet article. Pour que vos utilisateurs puissent se connecter à l’aide de cette nouvelle page, vous devez y ajouter un contrôle de connexion ASP.NET. Pour ce faire, procédez comme suit : 1. Passez en mode création si nécessaire. 2. Sélectionnez un contrôle de connexion dans la section Contrôles ASP.NET de la boîte à outils et faites-le glisser sur votre page. 3. Cliquez sur Format automatique et sélectionnez le format de votre choix. Une fois ces étapes terminées, votre page de connexion devrait ressembler à celle qui est représentée Figure 3.
.png) Figure 3: Page de connexion Vous pouvez également modifier la présentation de cette page en fonction du style de votre site Web ; il vous suffit pour cela d’utiliser le modèle Web dynamique d’Expression Web ou une page maître ASP.NET. D’autres contrôles peuvent aussi être ajoutés à cette page, notamment le contrôle ASP.NET CreateUserWizard, qui permet à vos utilisateurs de créer eux-mêmes l’ID avec lequel ils se connecteront sur votre site. Les contrôles ChangePassword et PasswordRecovery peuvent également s’avérer utiles dans l’éventualité où un utilisateur oublierait son mot de passe. Pour obtenir des informations supplémentaires concernant les contrôles de connexion non abordés dans cet article, vous pouvez vous reporter au document The Expression Web Developer’s Guide to ASP.NET 3.5. Configuration d’utilisateurs et de règles d’accèsLes paramètres relatifs au mécanisme d’authentification par formulaire d’ASP.NET sont rassemblés dans un fichier de configuration XML nommé web.config. Il peut y avoir plusieurs instances de ce fichier, selon la façon dont vous configurez votre site Web. Le site Web décrit dans le présent article comprend deux fichiers web.config, dont un est enregistré à la racine du site et l’autre dans le dossier admin. Vous pouvez ajouter les fichiers web.config manuellement à votre site Web, puis ajouter le code XML nécessaire pour l’authentification par formulaire. Cependant, cette solution risque de s’avérer fastidieuse car le langage XML tient compte de la casse. La moindre erreur contenue dans un fichier web.config risque de générer des messages d’erreur difficiles à décrypter. Beaucoup plus simple, l’alternative que nous vous proposons consiste à utiliser l’outil Administration de site Web, qui offre une interface Web simple pour la configuration d’un site Web ASP.NET. Lancement de l’outil Administration de site WebLe menu contextuel « Login Tasks » représenté Figure 3 contient un lien intitulé « Administer Website ». Ce lien généré par ASP.NET permet de lancer l’outil Administration de site Web, mais il n’est pas pris en charge par Expression Web. Si vous cliquez dessus, vous obtenez le message d’erreur présenté Figure 4.
.png) Figure 4: Message d’erreur affiché lors d’une tentative d’accès à l’outil Administration de site Web L’outil Administration de site Web peut toutefois être utilisé via une procédure un peu plus complexe. Les opérations à effectuer sont les suivantes : 1. Si vous utilisez un site Web sur disque, naviguez jusqu’à l’une des pages ASP.NET de ce site pour que Microsoft Expression Development Server démarre et charge votre site. 2. Ouvrez une ligne de commande et accédez au dossier WebDesigner d’Expression Web. Le chemin d’accès par défaut de ce fichier est C:\Program Files\Microsoft Expression\Web 2\WebDesigner. 3. Exécutez la commande suivante : expression.devserver /port:65000 /path:C:\Windows\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles /vpath:/asp.netwebadminfiles
Remarque : cette commande n’apparaît sur plusieurs lignes dans cet article que pour des raisons de présentation. Elle doit être saisie en une seule fois. Cette commande lance une nouvelle instance de Microsoft Expression Development Server exécutant l’outil Administration de site Web. Pour utiliser cet outil avec le site en cours de configuration dans Expression Web, vous devez accéder à l’URL suivante : http://localhost:65000/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=<disk_path_to_website>&applicationUrl=/<name_of_website> Par exemple, supposons que vous travailliez sur un site Web dont l’emplacement est c:\users\jim\websites\mysite. L’URL à utiliser pour gérer ce site à l’aide de l’outil Administration de site Web serait la suivante : http://localhost:65000/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=C:\Users\jim\websites\mysite\&applicationUrl=/mysite Ces opérations sont moins compliquées qu’il n’y paraît. En ajoutant l’URL à vos favoris, vous éviterez de devoir la saisir à chaque fois. En outre, j’envisage de développer un complément pour Expression Web qui permettra d’automatiser ce processus grâce à un bouton ajouté à la barre d’outils. Des informations sur ce complément seront fournies sur le site www.jimcosoftware.com, que je vous invite à consulter régulièrement. Configuration de l’authentification par formulaire à l’aide de l’outil Administration de site WebAvertissement : avant d’utiliser l’outil Administration de site Web, vérifiez que vous n’avez pas déjà ouvert le fichier web.config dans Expression Web. Sinon, vous risquez de remplacer par erreur les modifications apportées à l’aide de l’outil d’administration. L’URL ci-dessus vous permet d’accéder à l’outil Administration de site Web présenté Figure 5. Lorsque vous accédez à cet outil pour la première fois pour gérer un site spécifique, ASP.NET ajoute automatiquement à ce dernier un dossier App_Data. Ce dossier contient une base de données SQL Server Express dans laquelle sont regroupées toutes les informations relatives à votre appartenance. Ce processus prend quelques secondes ; patientez jusqu’à ce qu’il soit terminé. (Vous trouverez dans la suite de cet article un lien contenant des informations sur l’utilisation d’autres types de bases de données.)
.png) Figure 5: Outil Administration de site Web Pour activer l’authentification par formulaire sur votre site Web, cliquez sur l’onglet ou sur le lien « Security ». Vous accédez à la page représentée Figure 6.
.png) Figure 6: Onglet « Security » La section « Users » affichée à gauche de cet onglet indique que le type d’authentification sélectionné est « Windows ». Pour activer l’authentification par formulaire, vous devez modifier ce paramètre en cliquant sur le lien « Select Authentication Type », puis sur l’option « From the Internet » affichée dans la page représentée Figure 7.
.png) Figure 7: Sélection de l’option « From the Internet » pour activer l’authentification par formulaire Cliquez ensuite sur le bouton « Done » affiché en bas à droite de la fenêtre pour appliquer la modification. L’outil Administration de site Web ajoute un fichier web.config dans le dossier racine de votre application et le configure pour l’utilisation de l’authentification par formulaire. Création d’utilisateurs Une fois actualisé, l’onglet « Security » contient de nouvelles options permettant de créer et de gérer des utilisateurs, d’activer des rôles et de configurer des règles d’accès (voir Figure 8).
.png) Figure 8: Nouvelles options affichées après l’activation de l’authentification par formulaire Cliquez sur le lien « Create User ». La fenêtre représentée Figure 9 s’affiche. N’oubliez pas que pour être conformes aux exigences de sécurité d’ASP.NET, les mots de passe doivent être relativement complexes. Si vous souhaitez modifier les paramètres requis, vous trouverez des informations à la page suivante :
http://weblogs.asp.net/owscott/archive/2005/05/11/406550.aspx.
.png) Figure 9: Création d’un utilisateur Par défaut, les utilisateurs créés sont ajoutés à la base de données du dossier App_Data. Vous pouvez cependant modifier les fonctions d’appartenance ASP.NET pour qu’ils soient enregistrés dans un autre type de base de données. Pour plus de détails, reportez-vous au lien fourni dans la section Ressources supplémentaires, à la fin de cet article. Création de rôleLes rôles facilitent la gestion des contrôles d’accès. Par exemple, vous pouvez les utiliser pour empêcher certains utilisateurs d’accéder à une zone réservée de votre site Web. Pour ce faire, il suffit de créer un rôle donnant accès à cette zone réservée, puis d’ajouter au groupe correspondant tous les utilisateurs que vous souhaitez autoriser à accéder à cette zone. Les rôles permettent de simplifier le contrôle des accès aux différentes parties de votre site Web tout en réduisant les risques d’erreurs. Avant de créer un rôle, vous devez activer l’utilisation des rôles sur votre site Web. Pour ce faire, cliquez sur le lien « Enable Roles » représenté Figure 8 pour afficher le lien « Create or Manage Roles », qui est encadré Figure 10.
.png) Figure 10: Lien permettant de créer et de gérer des rôles Après avoir cliqué sur ce lien, entrez le nom du nouveau rôle et cliquez sur le bouton « Add ». Une fois ce nouveau rôle affiché dans a liste, vous pouvez ajouter et supprimer des utilisateurs du groupe correspondant, comme indiqué Figure 11.
.png) Figure 11: Création d’un nouveau rôle « Admins » Lorsque vous cliquez sur le lien « Manage » affiché sous « Add/Remove Users », un écran affiche la liste des utilisateurs disponibles. Pour ajouter un utilisateur à un rôle, cochez la case « User Is In Role » comme indiqué Figure 12. Pour supprimer l’association entre un utilisateur et un rôle, il suffit de désélectionner cette case.
.png) Figure 12: Case à cocher « User Is In Role » Configuration de règles d’accèsUne fois l’ajout des utilisateurs et la configuration des rôles effectués, vous pouvez créer des règles définissant les modalités d’accès relatives à l’intégralité ou à certaines parties de votre site Web. Pour créer des règles d’accès, cliquez sur le lien « Create Access Rules » représenté Figure 10. L’écran « Add New Access Rule » présenté Figure 13 s’affiche.
.png) Figure 13: Écran « Add New Access Rule » Dans cet écran, vous devez tout d’abord indiquer le répertoire auquel la règle doit s’appliquer. Dans la Figure 13, j’ai sélectionné le répertoire racine, car je souhaite définir une règle pour l’ensemble du site. Remarque importante : ne créez pas vos règles d’accès directement dans les dossiers _vti tels que le dossier _vti_cnf représenté Figure 13. Ces dossiers sont utilisés par Expression Web et risquent de ne pas être transférés lors de la publication du site. Après avoir sélectionné le répertoire associé à votre règle d’accès, vous devez choisir les personnes auxquelles cette règle doit s’appliquer. Vous pouvez donc sélectionner un rôle, un utilisateur spécifique, tous les utilisateurs ou uniquement les utilisateurs anonymes. Dans la Figure 13, j’ai sélectionné « Anonymous Users », car je souhaite définir une règle invitant tous les utilisateurs à ouvrir une session avant de pouvoir accéder à mon site Web. L’étape suivante consiste à indiquer si votre règle a pour but d’autoriser ou d’interdire l’accès. Dans la Figure 13, j’ai sélectionné « Deny » pour empêcher tous les utilisateurs anonymes d’accéder à mon site Web. Une fois la règle configurée, cliquez sur OK pour l’ajouter. Les règles d’accès prennent effet immédiatement. Gestion des règles d’accèsPour gérer vos règles d’accès, cliquez sur le lien « Manage Access Rules » représenté Figure 10. Vous accédez à l’écran représenté Figure 14.
.png) Figure 14: Écran « Manage Access Rules » Les règles d’accès affichées Figure 14 sont celles du répertoire admin. (Le système affiche les règles associées au répertoire sélectionné dans l’écran « Manage Access Rules ».) Lorsqu’un utilisateur tente d’accéder à un fichier du répertoire admin, ASP.NET applique les règles d’accès en suivant leur ordre d’apparition dans la liste. Cependant, toutes les règles d’accès ne sont pas nécessairement utilisées. En effet, dès qu’une règle s’applique à l’utilisateur en cours, ASP.NET ne tient pas compte des règles suivantes. Dans la configuration représentée Figure 14, la première règle définie indique que l’accès doit être refusé à tous les utilisateurs. Par conséquent, aucun utilisateur ne peut accéder aux fichiers du dossier admin, qu’il soit ou non membre du groupe Admins. La seconde règle autorisant les utilisateurs du rôle Admins à accéder à ce dossier n’est pas appliquée. Ce problème peut facilement être résolu en intervertissant la première et la deuxième règle. Pour ce faire, cliquez sur « Admins » dans la deuxième règle pour la sélectionner, puis cliquez sur « Move Up » comme indiqué Figure 15 pour la faire remonter d’un cran.
.png) Figure 15: Repositionnement d’une règle La Figure 16 présente la liste des règles d’accès réorganisée.
.png) Figure 16: Liste des règles d’accès après réorganisation Ce nouvel ordre permet aux membres du rôle Admins d’accéder aux fichiers du dossier admin. La première règle applicable annulant toutes les autres, les règles suivantes ne sont pas prises en compte. En revanche, si l’utilisateur n’est pas membre du groupe Admins, ASP.NET passe à la deuxième règle. Celle-ci indiquant que l’accès doit être refusé à tous les utilisateurs, elle empêche les non-administrateurs d’accéder au contenu du dossier admin. Fichier web.config résultantPour avoir une idée plus précise des opérations effectuées à l’aide de l’outil Administration de site Web, examinons les fichiers web.config créés par ce dernier. La liste ci-dessous correspond au contenu du fichier web.config situé dans le dossier racine du site Web. <configuration> <system.web> <roleManager enabled="true" /> <authentication mode="Forms" /> <authorization> <deny users="?" /> </authorization> </system.web> </configuration>
L’élément <roleManager>active l’utilisation des rôles, tandis que l’élément <authentication>active l’authentification par formulaire. La section <authorization> située sur la ligne suivante contient la définition des règles d’accès. En l’occurrence, le fichier web.config situé à la racine du site Web contient une seule règle interdisant l’accès à tous les utilisateurs anonymes. (Dans les règles d’accès ASP.NET, les utilisateurs anonymes sont représentés par un point d’interrogation.) Étant donné que nous avons également créé des règles d’accès pour le dossier admin, ce dernier contient un autre fichier web.config ajouté par l’outil Administration de site Web. Le contenu de ce fichier est indiqué ci-dessous. <configuration> <system.web> <authorization> <allow roles="Admins" /> <deny users="*" /> </authorization> </system.web> </configuration>
Ce fichier web.config définit deux règles d’accès. La première de ces règles donne accès à tous les membres du rôle Admins, tandis que la seconde refuse l’accès à tous les utilisateurs. (Souvenez-vous que les règles d’accès sont appliquées dans leur ordre d’apparition et que la première règle applicable annule les suivantes.) Concrètement, lorsque vous modifiez l’ordre des règles d’accès à l’aide de l’outil Administration de site Web, vous intervertissez les éléments <allow> et <deny> du fichier web.config. ConclusionCet article vous a permis de vous familiariser avec les fonctions d’appartenance ASP.NET disponibles dans Expression Web et d’apprendre à utiliser l’outil Administration de site Web pour gérer les utilisateurs de votre site, les rôles et les règles d’accès, sans écrire une seule ligne de code. J’espère que vos nouvelles connaissances vous permettront d’optimiser votre site Web tout en continuant à découvrir les nombreuses possibilités offertes par les contrôles de connexion et les fonctions d’appartenance ASP.NET. Ressources supplémentairesLe blog de Scott Guthrie, Vice-président de la division .NET Developer de Microsoft, propose un article très intéressant qui vous permettra de vous familiariser avec les fonctions d’appartenance ASP.NET et d’éviter certains pièges liés à l’utilisation de l’authentification par formulaire. Vous trouverez cet article à l’adresse suivante (en anglais) :
http://weblogs.asp.net/scottgu/archive/2006/02/24/ASP.NET-2.0-Membership_2C00_-Roles_2C00_-Forms-Authentication_2C00_-and-Security-Resources-.aspx .
|