Vous êtes sur la page 1sur 33

< Atelier 5 /> Scuriser lapplication web

Microsoft France

Tutorial Dcouverte de ASP.NET 2.0

Microsoft

Scuriser lapplication web Atelier 5

Sommaire
1 INTRODUCTION .................................................................................................................................................... 3 1.1 1.2 2 CONTEXTE FONCTIONNEL .................................................................................................................................... 3 CONTEXTE TECHNIQUE ........................................................................................................................................ 4 CREER UNE PAGE DENREGISTREMENT DUN NOUVEL UTILISATEUR .................................................................... 5 CREER UNE PAGE DAUTHENTIFICATION (LOGIN) .............................................................................................. 11 CONFIGURER LAUTHENTIFICATION EN MODE FORMULAIRE .............................................................................. 14 CONFIGURER LA GESTION DES ROLES ................................................................................................................ 15 PREPARER LA STRUCTURE DE REPERTOIRE DES PAGES WEB ............................................................................... 18 CREER DES REGLES DAUTORISATION ................................................................................................................ 20 CONTROLER LA VISIBILITE DES LIENS DANS LA NAVIGATION ............................................................................. 22

CREER LES PAGES DE GESTION DE LAUTHENTIFICATION ................................................................. 5 2.1 2.2

PARAMETRER LAUTHENTIFICATION ET LAUTORISATION ............................................................. 14 3.1 3.2 3.3 3.4 3.5

AFFICHER DES INFORMATIONS PERSONNALISEES ............................................................................... 26 4.1 4.2 AFFICHER UN MENU PERSONNALISE .................................................................................................................. 26 AFFICHER UN MESSAGE DE BIENVENUE PERSONNALISE ..................................................................................... 27 VALIDER LE FORMAT DES PARAMETRES DACCES .............................................................................................. 32 METTRE LES ROLES EN CACHE ........................................................................................................................... 32

POUR ALLER PLUS LOIN .............................................................................................................................. 32 5.1 5.2

RENDEZ-VOUS DANS LE PROCHAIN ATELIER ...................................................................................... 33

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 2 sur 33

Microsoft

Scuriser lapplication web Atelier 5

1 Introduction
Cet atelier sinscrit dans le cadre du tutorial de dcouverte de ASP.NET 2.0 dont lobjectif est la construction dune application web pas pas. Les exercices de latelier 5 prsentent les techniques de mise en uvre de la scurit avec ASP.NET 2.0.

1.1 Contexte fonctionnel


Rappel du contexte fonctionnel du Tutorial de dcouverte de ASP.NET 2.0 Lobjectif du tutorial est de construire pas pas un site web de petites annonces (type bonnes affaires) proposant des services de : dpt dune annonce en ligne. consultation de toutes les annonces publies. gestion du compte des utilisateurs du site qui souhaitent slectionner des annonces et revenir rgulirement sur la consultation de leur slection. Ladresse de ce site fictif serait http://www.affairessansrisque.fr . Pour ceux qui nous rejoindraient maintenant o en tions-nous la fin de latelier prcdent ? Dans latelier 4, Afficher et manipuler des donnes, vous avez construit des pages daccs aux donnes des annonces dans une base SQL Server Express. Rcuprez les fichiers de solution de latelier prcdent dans le rpertoire ..\Atelier 5\Dmarrage.

Contexte fonctionnel de latelier 5 dans le cadre du Tutorial Il se trouve que toutes les pages web de votre application ne sont pas accessibles tout le monde. Cest pourquoi vous allez mettre en place un certain nombre de rgles de scurit et proposer lutilisateur de sauthentifier pour contrler ses dplacements et ses agissements dans le site. (Dans le prochain atelier, vous ajouterez galement la possibilit pour lutilisateur de sauvegarder sa slection dannonces parmi les annonces quil a retenues sur le site. ) Voici les rgles de scurit essentielles de lapplication AffairesSansRisque : 1. Lutilisateur peut utiliser lapplication de faon anonyme ou connect e. Pour se connecter il sidentifie sur une page de login. Sil sagit de la toute premire fois quil se connecte, il doit dabord senregistrer auprs de lapplication en rpondant un questionnaire. 2. Lutilisateur voit un message de bienvenue personnalis dans la rubrique Espace Membre. (Cest dans espace que vous lui donnerez les moyens de retrouver sa slection dannonces dans latelier suivant). 3. En fonction des rgles de scurit daccs tablies sur les pages du site, il faut que le menu de lapplication sadapte et cache les pages non autorises lutilisateur en cours. 4. Les rgles daccs sur les pages sont : a. Toutes les annonces publies sur le site sont accessibles tout le monde : ConsulterAnnoncesJournaux.aspx ConsulterAnnoncesParRegion.aspx b. Les annonces ne peuvent tre modifies que par des utilisateurs ayant un rle dadministrateur du site : AdministrerAnnonces.aspx DetailsAnnonce.aspx c. Pour pouvoir publier une annonce sur le site, lutilisateur doit tr e authentifi auprs du systme : DiffuserAnnonce.aspx Automne 2005 Tutorial Dcouverte de ASP.NET 2.0 Page 3 sur 33

Microsoft

Scuriser lapplication web Atelier 5 DiffuserAnnonceTerminee.aspx d. Pour rpondre lenqute de satisfaction de la page daccueil, il faut tr e authentifi et connu du site : EnqueteSatisfaction.aspx EnqueteSatisfactionTerminee.aspx

1.2 Contexte technique


ASP.NET 2.0 fournit de nouveaux services intgrs pour grer lappartenance et la gestion des rles utilisateurs. Ces services sont bass sur des fournisseurs qui grent la sauvegarde des informations de scurit (par dfaut dans une base SQL Server) et peuvent donc tre trs facilement tendus pour mieux rpondre vos besoins. Vous disposez galement dune batterie de nouveaux contrles graphiques qui sappuient sur c es services pour dessiner plus rapidement vos formulaires de scurit. Nous allons parler : 1. dauthentification : Il sagit du principe didentification dun utilisateur sur lapplication partir dun nom dutilisateur et dun mot de passe (il doit montrer patte blanche). ASP.NET peut fonctionner conjointement avec IIS (authentification intgre), avec Microsoft Passport ou, et cest ce qui va nous intresser dans cet atelier, en mode formulaire de faon laisser lapplication web grer elle-mme la vrification des paramtres daccs de lutilisateur. 2. dautorisation : Il sagit des rgles daccs mises en place pour autoriser ou non laccs une partie du site. (maintenant quon sait qui il est, on ne va pas le laisser fouiner partout) Le premier systme dautorisation sur une ressource repose sur les ACLs (permissions par exemple NTFS) sur le fichier correspondant. Nous allons nous intresser dans cet atelier au second systme dautorisation qui utilise les rgles daccs aux urls implmentes dans le fichier de configuration de lapplication. 3. de rles : Il sagit de groupe dutilisateurs regroups en fonction de leurs agissements et leurs rgles daccs communes sur le site. (par exemple les administrateurs sont des utilisateurs qui ont les pleins pouvoirs partout o ils se baladent) A la fin de cet atelier, vous saurez comment : Crer un formulaire dauthentification pour les utilisateurs. Crer un formulaire denregistrement dun nouvel utilisateur. Crer des rgles daccs pour contrler les diffrentes parties dune application web. Crer des rles utilisateurs. Afficher des informations personnalises lutilisateur et lui proposer un menu vers les pages dont il a les droits daccs.

La solution de cet atelier est disponible dans le rpertoire ..\Atelier 5\Solution. Les fichiers utiles, auxquels font rfrence les exercices sont disponibles dans le rpertoire ..Atelier 5\Fichiers utiles.

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 4 sur 33

Microsoft

Scuriser lapplication web Atelier 5

2 Crer les pages de gestion de lauthentification


Dans cet exercice, vous allez apprendre : Crer une page de login et denregistrement dun nouvel utilisateur.

Objectif Lobjectif de cet exercice est de crer une page pour quun utilisateur puisse sauthentifier sur le site. Contexte fonctionnel Lobjectif de cet exercice est de construire une page Login.aspx proposant lutilisateur : - sil est dj membre de la communaut des utilisateurs du site : de saisir ses paramtres daccs pour se connecter. - Sil ne sest encore jamais enregistr auprs de AffairesSansRisque : de rpondre un questionnaire et de dfinir ses paramtres daccs au site.

2.1 Crer une page denregistrement dun nouvel utilisateur


Droulement de lexercice : 1. Ouvrez le projet prcdent ralis lors de latelier 4 : Menu Fichier > Ouvrir le site web. Retrouvez le chemin du rpertoire AffairesSansRisque que vous avez utilis lors de latelier 4 ou, si vous navez pas fait latelier prcdent, rcuprez le projet de solution dans le rpertoire : ..\Atelier 5\Dmarrage\AffairesSansRisque. 2. Crez une nouvelle page Login.aspx dans votre projet web : Faites un clic droit sur la racine du projet dans lExplorateur de solutions > Ajouter un nouvel lment > modle Formulaire Web > nommez la page Login.aspx et cochez Placer le code dans un fichier distinct et Slectionnez la page matre > Ajouter. Slectionnez la page matre MasterPage.master puis OK. 3. Dessinez un contrle CreateUserWizard sur la page : Automne 2005 Tutorial Dcouverte de ASP.NET 2.0 Page 5 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Ouvrez la page Login.aspx en mode Design. Faites un glisser dplacer de la Bote outils > rubrique Connexion > CreateUserWizard sur le contrle Content1 de la page.

Remarquez la batterie de nouveaux contrles de connexion travaillant sur le service dappartenance dASP.NET 2. Ils vont nous simplifier la vie en matire de construction des pages de gestion classique de la scurit dans une application web (page de login, denregistrement dun nouvel utilisateur, de rcupration du mot de passe en cas doubli, de changement de mot de passe etc) Vous obtenez en mode Design : Les * sont des contrles de validation ASP.NET 2.0 (du type RequiredFieldValidator pour les champs obligatoires)

Champs traditionnels denregistrement dun nouvel utilisateur dans la base des comptes.

Zone daffichage des messages derreur.

Affichez le menu de la balise active du contrle.

Ce contrle hrite du nouveau contrle avanc Wizard de ASP.NET 2.0 ( Pour rappel, vous lavez utilis latelier 2 pour la mise en uvre de lenqute de satisfaction du site) et propose donc plusieurs tapes (WizardSteps) personnalisables. Ltape par dfaut actuelle est Inscrivez-vous pour obtenir votre nouveau compte. Vous pouvez ajouter de nouvelles tapes en cliquant sur Ajouter/Supprimer WizardSteps. Automne 2005 Affichez ltape suivante dans la liste droulante Etape : Termin : Tutorial Dcouverte de ASP.NET 2.0 Page 6 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Ce contrle nest donc pas seulement une reprsentation graphique ! Il est capable de proposer lutilisateur une succession dcrans et va bien sr soccuper de faire lenregistrement de lutilisateur pour nous dans une base de donnes. Regardons cela de plus prs 4. Sauvegardez la page Login.aspx et excutez-la dans Internet Explorer (Attention ! rebasculez le contrle sur la premire tape si vous voulez que celle-ci saffiche par dfaut au lancement de la page). Saisissez les informations demandes. Entrez volontairement un mot de passe diffrent pour la ligne Mot de passe et Confirmer le mot de passe. Que se passe-t-il lorsque vous passez au champ de saisie suivant avec la touche TAB ? Les contrles de validation de ASP.NET 2.0 dtectent le problme. Ils gnrent en effet du script client sur votre page.

Corrigez les deux mots de passe pour quils soient identiques et cliquez sur Crer un utilisateur. Vous obtenez lcran de la seconde tape :

Par contre si vous cliquez sur Continuer, vous restez sur la mme page...ce nest pas trs logique 5. Branchez la redirection automatique de lutilisateur vers la page daccueil du site en fin denregistrement : Ouvrez Login.aspx en mode Design. Affichez la fentre de proprits du contrle CreateUserWizard. Ajoutez une valeur la proprit ContinueDestinationPageUrl en cliquant sur slectionnez Default.aspx. et

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 7 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Notez au passage toutes les autres proprits de ce contrle : Les proprits de contenu des diffrents messages :

Et beaucoup dautres qui influencent le comportement du contrle comme RequireEmail, MembershipProvider etc Sauvegardez et r excutez la page pour crer un autre utilisateur et valider le transfert sur la page daccueil lors de la dernire tape.

6. Donc vos comptes ont t crs ? Sans blagueo a ? Ouvrez lExplorateur de solutions de Visual Web Developer et cliquez sur dans la barre dicne pour ractualiser votre rpertoire de projet. Ouvrez le rpertoire App_Data. Vous constatez quune nouvelle base de donnes ASPNETDB.MDF a t cre. Double cliquez sur le fichier .mdf pour ouvrir une connexion dans lExplorateur de bases de donnes de Visual Web Developer.

Cette base de donnes contient en fait toutes les tables et les lments pour la sauvegarde des donnes de tous les services de ASP.NET 2.0 : aspnet_Membership pour le service dappartenance, aspnet_Roles pour la gestion des rles etc Elle a t cre automatiquement (merci ASP.NET 2.0 !) au moment o vous avez insrer un premier utilisateur avec le contrle CreateUserWizard. Pour la crer vous-mme directement, utilisez lutilitaire aspnet_regsql (dj vu latelier 4 pour configurer la dpendance de cache sur SQL Server Express). Cet assistant vous guide dans la cration de la base de donnes que vous souhaitez mettre en uvre. Automne 2005 Tutorial Dcouverte de ASP.NET 2.0 Page 8 sur 33

Microsoft

Scuriser lapplication web Atelier 5

7. Chargez les donnes de la table aspnet_Membership : Faites un clic droit sur la table > Afficher les donnes de la table.

Voil o ont t mmorises les informations denregistrement des deux comptes nouvellement crs. Remarquez quASP.NET a encrypt les donnes confidentielles.

Vous pouvez choisir votre propre systme de sauvegarde et personnaliser compltement la gestion de lenregistrement dun compte puisque le service dappartenance de ASP.NET 2.0 sappuie sur un fournisseur. Il vous suffit dcrire votre propre fournisseur. Vous avez vu galement dans latelier prcdent lutilitaire aspnet_regsql qui permet de prparer une base de donnes quelconque la sauvegarde des donnes de tous les services dASP.NET 2.0. 8. Il ne reste plus qu retravailler le style du contrle CreateUserWizard pour amliorer le rendu de la page : Ouvrez la page Login.aspx en mode Source pour observer la reprsentation du contrle <asp :CreateUserWizard> :

Vous constatez que le contrle contient une collection dtapes <WizardSteps> contenant ici les tapes intgres ASP.NET 2.0 <asp :CreateUserWizardStep> et <asp :CompleteWizardStep>. Notez galement la proprit ContinueDestinationPageUrl qui redirige lutilisateur sur la page Default.aspx en fin denregistrement. Rebasculez la page en mode Design. Slectionnez la balise active du contrle > Mise en forme automatique.

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 9 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Lidal serait dajouter une dfinition des caractristiques graphiques du contrle au fichier dapparence Default.skin de lapplication (cf. atelier 2). Vous retrouvez les nombreuses proprits de style pour les diffrentes parties du contrle dans sa fentre de proprits.

Nous allons implmenter notre propre mise en forme et surtout personnaliser le dessin de chacune des tapes. Pour cela, toujours dans la balise active du contrle, slectionnez Personnaliser ltape Crer un utilisateur.

Chaque contrle est maintenant disponible dans une structure tableau HTML, y compris les contrles de validation et daffichage des messages derreur. Vous pouvez donc le remodeler comme vous le souhaiter. Prenez plutt lhabitude davoir recours au balisage structurel (balises <div>) et la feuille de style. Pour simplifier, dans cet exercice, vous allez juste apporter quelques modifications de contenu. Notez que le menu dans la balise active propose maintenant loption Rinitialiser ltape pour le cas o vous souhaiteriez annuler. Basculez en mode Source et remplacez le contenu de la premire colonne de la premire ligne du tableau par :

<td align="left" colspan="2"> <h1>Vous souhaitez devenir membre de notre espace annonces en ligne :</h1> <h2>Crez votre compte. Tous les champs suivants sont obligatoires pour la cration de votre espace personnel.</h2> </td> De la mme manire, slectionnez la seconde tape de lassistant et personnalisez -l comme suit :

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 10 sur 33

Microsoft

Scuriser lapplication web Atelier 5

La balise <ContentTemplate> dlimite le modle de contenu pour le contrle <asp :CompleteWizardStep>. Ne laissez que cette ligne de texte (aligne gauche).

Vous remarquez que lon a supprim galement le bouton Continue car il va savrer inutile pour la suite de lexercice (vous allez comprendre pourquoi dans le suivant). Vous pouvez donc supprimer aussi lattribut ContinueDestinationPageUrl="~/Default.aspx" dans la dfinition du contrle <asp :CreateUserWizard>. Rebasculez le contrle sur la premire tape puis sauvegardez la page Login.aspx et excutez-la dans Internet Explorer pour observer le rsultat final :

Note :

2.2 Crer une page dauthentification (login)


Nous avons choisi pour lexercice de positionner les lments dauthentification sur la mme page Login.aspx. Cest un scnario dapplication comme un autre qui permet de ne pas disperser lutilisateur sur plusieurs pages diffrentes Droulement de lexercice : 1. Dessinez un contrle Login sur la page Login.aspx : Ouvrez la page Login.aspx en mode Design. Automne 2005 Tutorial Dcouverte de ASP.NET 2.0 Page 11 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Faites un glisser dplacer de la Bote outils > rubrique Connexion > Login sur le contrle Content1 de la page au dessus du contrle CreateUserWizard.

2. Affichez la fentre de proprits du contrle.

Notez les diffrentes proprits de ce contrle : - DestinationPageUrl : pour rediriger lutilisateur vers une page dfinie aprs authentification. Dans lexercice, nous allons laisser ASP.NET 2.0 rediriger lutilisateur automatiquement vers la page initialement demande par lutilisateur avant quon lui demande de sauthentifier. - CreateUserUrl et CreateUserText pour ajouter un lien hypertexte vers la page denregistrement dun nouvel utilisateur (pour nous cest la mme page). - PasswordRecoveryText et PasswordRecoveryUrl pour ajouter un lien hypertexte vers une page permettant lutilisateur de retrouver son mot de passe (utilise le contrle PasswordRecovery). - Et beaucoup dautres 3. Changez lapparence du contrle : En mode Design, slectionnez le contrle Login > sa balise active > Convertir en modle.

Basculez en mode Source puis insrez une ligne de sparation entre les deux contrles serveur avec la balise <hr/>.

Remplacez le contenu du texte den-tte sur la premire ligne/colonne du tableau par :

<td align="left" colspan="2"> <h1>Vous tes dj membre :</h1> <h2> Saisissez vos paramtres d'accs.</h2> </td> 4. Sauvegardez la page Login.aspx et excutez-la dans Internet Explorer. Connectez-vous avec lun des comptes crs prcdemment pour valider le fonctionnement des contrles.

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 12 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Crez un nouveau compte utilisateur (vous pouvez essayer de crer deux fois de suite le mme compte, le contrle CreateUserWizard vous renverra un message derreur dans sa zone de message).

Zone dauthentification directement disponible aprs lenregistrement. Message de fin denregistrement

Note :

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 13 sur 33

Microsoft

Scuriser lapplication web Atelier 5

3 Paramtrer lauthentification et lautorisation


Dans cet exercice, vous allez apprendre : Paramtrer lauthentification par formulaire. Crer des rles. Implmenter des rgles dautorisation daccs aux pages du site. Utiliser loutil dadministration de site web de ASP.NET 2.0.

Objectif Lobjectif de cet exercice est de configurer lapplication web pour quelle fonctionne avec lauthentifica tion ASP.NET en mode formulaire, de dfinir des rles utilisateurs et des rgles daccs aux pages du site en fonction de ceux-ci. Contexte fonctionnel Lapplication AffairesSansRisque autorise certains utilisateurs administrer les annonces du site (page AdministrerAnnonces.aspx). Pour faire cette distinction, vous allez crer un rle appel Administrateurs et placer dans ce rle un nouveau compte appel Admin. Rgles daccs Toutes les annonces publies sur le site sont accessibles tout le monde (dj vrai par dfaut) Les annonces ne peuvent tre modifies que par des utilisateurs ayant un rle dadministrateur du site Pour pouvoir publier une annonce sur le site, lutilisateur doit tre authentifi auprs du systme Pour rpondre lenqute de satisfaction de la page daccueil, il faut tre authentifi et connu du site Pages correspondantes ConsulterAnnoncesJournaux.aspx ConsulterAnnoncesParRegion.aspx AdministrerAnnonces.aspx DetailsAnnonce.aspx DiffuserAnnonce.aspx DiffuserAnnonceTerminee.aspx EnqueteSatisfaction.aspx EnqueteSatisfactionTerminee.aspx

Avant de mettre en place de rgles daccs, vous allez restructurer le rpertoire du projet pour rassembler les pages en fonction des utilisateurs y ayant accs dans des sous rpertoires [0] et [1] : Nom de la page AdministrerAnnonces.aspx DetailsAnnonce.aspx DiffuserAnnonce.aspx DiffuserAnnonceTerminee.aspx EnquteSatisfaction.aspx EnquteSatisfactionTerminee.aspx Toutes les autres pages du site Utilisateurs ayant accs la page Rle Administrateurs Rpertoire [0]

Utilisateur authentifi

[1] [rpertoire racine de lapplication]

Utilisateur anonyme

3.1 Configurer lauthentification en mode formulaire


Droulement de lexercice : 1. Configurez lauthentification par formulaire dans le fichier de configuration de lapplication : Ouvrez le fichier de configuration Web.config. Retrouvez la section dauthentification et remplacez Windows par Forms pour indiquer ASP.NET que vous souhaitez travailler en mode formulaire.

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 14 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Ce systme dauthentification sappuie sur lutilisation de cookies. Vous pouvez grer le nom du cookie, le nom de la page de login, le niveau de protection du cookie etc en ajoutant la balise <forms> lintrieur de <authentication> avec le format suivant : <forms name="nom du cookie" loginUrl="url page de login" protection="[All|None|Encryption|Validation]" timeout="dure de vie du cookie" path="/"></forms> 2. Sauvegardez le fichier Web.config.

Les autres configurations de scurit associes lauthentification en mode formulaire, notamment des rles et autorisations sur le site, vont galement reposer sur le fichier de configuration de votre application (Web.config). Dans lexercice suivant, vous allez utiliser loutil dadministration de site web fourni par ASP.NET 2.0 qui propose une interface web conviviale pour configurer les options de scurit de l application web plutt que dditer directement le fichier Web.config. Quoiquil en soit au final, cet assistant gnre les balises et les lignes correspondantes dans le fichier de configuration.

Note :

3.2 Configurer la gestion des rles


Nous allons crer un rle Administrateurs pour lapplication AffairesSansRisque, contenant lutilisateur Admin. Droulement de lexercice : 1. Lancez loutil dadministration de site web de ASP.NET 2.0 : Dans Visual Web Developer, cliquez le menu Site Web > Configuration ASP.NET (ou cliquez dans la barre dicnes de lExplorateur de solutions)

. Automne 2005 Tutorial Dcouverte de ASP.NET 2.0 Page 15 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Notez dans la barre de tche le lancement du site web dans le serveur web intgr VWD : http//localhost :<n port>/asp.netwebadminfiles Loutil de configuration est en effet une application web ddie la configuration de votre application web. 2. Avant dactiver les rles, crez un nouvel utilisateur Admin : Vous constatez que vous avez dj un certain nombre dutilisateurs dans votre base de compte.

Cliquez sur le lien (ou longlet) Scurit.

Cet assistant vous guide pas pas dans tout le processus complet de configuration de la scurit.

Remarquez la rubrique Utilisateurs qui vous permet de crer, supprimer, dsactiver les utilisateurs qui se sont enregistrs sur le site. Vous auriez pu configurer la scurit en mode formulaire au 3.1 en cliquant sur Slectionnez le type dauthentification pour gnrer automatiquement la balise <authentication> du fichier Web.config.

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 16 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Lauthentification en mode formulaire correspond un accs public depuis Internet par opposition lauthentification intgre qui sappuie sur des utilisateurs connus de Windows (donc du rseau local).

Revenez sur lcran daccueil de longlet Scurit. Cliquez sur Crer un utilisateur. Saisissez les paramtres daccs comme suit :

Utilisateur actif vs dsactiv

Pour linstant aucun rle nest dfini pour lapplication mais vous auriez pu insrer lutilisateur directement dans le rle Administrateurs si celui-ci tait dj cr.

Cliquez sur Crer un utilisateur pour valider lenregistrement.

Vous reconnaissez cet cran ? CreateUserWizard.

Vous venez de drouler les deux tapes du contrle

Cliquez sur Continuer puis sur Prcdent.

3. Vous allez maintenant activer la gestion des rles : Sur lcran daccueil de longlet Scurit, cliquez sur Activer les rles. La rubrique Rles devient :

4. Crez un rle Administrateurs pour les utilisateurs qui auront lautorisation dadministrer des annonces. Cliquez sur Crer ou grer des rles. Saisissez : Administrateurs

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 17 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Cliquez sur Ajouter le rle. Le rle est ajout la liste des rles de votre application.

5. Ajoutez lutilisateur Admin au rle Administrateurs : Dans la liste des rles, cliquez sur Grer pour le rle Administrateurs. Saisissez Admin dans la zone pour puis cliquez sur Rechercher un utilisateur pour retrouver le compte Admin que vous avez cr prcdemment. Cochez la case Lutilisateur est dans le rle pour linclure dans le rle.

6. Fermez loutil dadministration de site web de ASP.NET 7. Ouvrez le fichier Web.config de lapplication et notez la nouvelle ligne : <roleManager enabled="true" /> dans la balise <system.web> qui indique ASP.NET 2.0 dactiver son service de gestion des rles au lancement de lapplication.

Note :

3.3 Prparer la structure de rpertoire des pages web


Avant de crer des rgles dautorisation sur les pages web du site, il faut remodeler la structure du rpertoire de votre application et regrouper les pages prsentant les mmes autorisations d accs entre elles. Droulement de lexercice : 1. Crez un rpertoire pour les pages accessibles uniquement au rle des Administrateurs du site : Automne 2005 Tutorial Dcouverte de ASP.NET 2.0 Page 18 sur 33

Microsoft

Scuriser lapplication web Atelier 5 Dans lExplorateur de solutions, faites un clic droit sur la racine du projet > Ajouter un dossier > Dossier normal.

Nommez le dossier : 0. Faites un glisser dplacer dans ce dossier des pages AdministrerAnnonces.aspx et DetailsAnnonce.aspx. 2. Rptez lopration pour les pages accessibles aux utilisateurs authentifis et nommez le rpertoire : 1. Pages pour les Administrateurs . Pages pour les utilisateurs authentifis..

3. Ouvrez le fichier Plan de site Web.sitemap pour mettre jour les liens de navigation vers les pages DiffuserAnnonce.aspx et AdministrerAnnonces.aspx dans les menus :

Sauvegardez le fichier Web.sitemap.

4. Ouvrez la page le code de la page Default.aspx. Mettez jour le lien hypertexte vers la page EnqueteSatisfaction.aspx dans la ligne de code qui charge dynamiquement le pied de page de la page matre : <a href=1/EnqueteSatisfaction.aspx> Sauvegardez le fichier. 5. Dans le fichier dapparence Default.skin, mettez jour la proprit FinishDestinationUrl du contrle Wizard pour quelle pointe maintenant sur ~/1/EnqueteSatisfactionTerminee.aspx Sauvegardez le fichier. Automne 2005 Tutorial Dcouverte de ASP.NET 2.0 Page 19 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Note :

3.4 Crer des rgles dautorisation


Dans cet exercice, vous allez rutiliser loutil dadministration de site de web de ASP.NET 2.0. Droulement de lexercice : 1. Lancez loutil dadministration de site web de ASP.NET 2.0 2. Cliquez sur longlet Scurit. 3. Ajoutez une premire rgle daccs qui autorise le rle Administrateurs accder au rpertoire 0 Dans la rubrique Rgles daccs, cliquez sur Crer des rgles daccs.

Cliquez sur OK.

Attention cette rgle daccs ne suffit pas pour obtenir le comportement que vous souhaitez. En effet, par dfaut, nimporte quel utilisateur anonyme a accs toutes les pages. Donc ce nest pas en autorisant le rle Administrateurs que vous vitez cela. Il vous faut rajouter la rgle suivante qui garantit que en effet, seul les Administrateurs auront accs ce rpertoire car tous les autres utilisateu rs ny ont plus droit !

4. Ajoutez une rgle qui nautorise laccs au rpertoire 1 que pour les utilisateurs authentifis.

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 20 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Il est intressant de voir que, compte tenu du formalisme utilis par ASP.NET, vous tes amen prendre le problme lenvers et considrer que vous devez refuser laccs aux utilisateurs anonymes. 5. Fermer loutil dadministration de site web de ASP.NET 2.0. 6. Observez ce qui sest pass dans le fichier de configuration de lapplication : Ouvrez lExplorateur de solutions et cliquez sur licne Actualiser. Loutil dadministration a cr deux nouveaux fichiers de configuration dans chacun des sous rpertoires de lapplication, rgissant chacun laccs aux pages contenues dans le rpertoire correspondant. Observez le contenu des fichiers de configuration.

* signifie tous les utilisateurs

? signifie utilisateur anonyme

7. Excutez lapplication (CTRL F5) pour tester le nouveau comportement du site maintenant scuris : Dans la page daccueil, cliquez dans le pied de page sur le lien Enqute de satisfaction.

Vous devez tre redirig sur la page de login par ASP.NET qui dtecte que vous tes un utilisateur anonyme donc quil faut vous authentifier avant de pouvoir prte ndre consulter la page demande ! Cest l, vous lavez compris, tout lintrt de lauthentification par formulaire que vous avez configure au 3.1. ASP.NET sait (grce aux informations lues dans le fichier Web.config) que si les autorisations daccs ne le permettent pas, il doit automatiquement prsenter lutilisateur le formulaire de login que vous avez construit (par dfaut il cherche une page login.aspx). Ensuite, le service dappartenance de ASP.NET 2.0 valide que les paramtres daccs sont corrects. Enfin ASP.NET redirige automatiquement lutilisateur sur la page initialement demande. Le tout (merci ASP.NET !) sans une seule ligne de code Saisissez les paramtres daccs dun utilisateur du site dans la fen tre de login > Se connecter. Une fois authentifi, vous tes alors redirig automatiquement vers la page que vous aviez demand initialement, savoir EnqueteSatisfaction.aspx.

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 21 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Lenqute est maintenant accessible.

Note :

3.5 Contrler la visibilit des liens dans la navigation


Vous avez peut-tre remarqu que la navigation est intelligente et ne prsente dans les menus que les pages en relation avec les autorisations daccs dfinies pour lapplication. Voici le menu vu par un utilisateur authentifi :

Lutilisateur peut diffuser une annonce.

Par contre, il faut vous identifier en tant quadministrateur pour voir apparatre le menu Administrer les annonces :

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 22 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Menu vu par lutilisateur Admin une fois authentifi.

Attention ! Ce phnomne de filtrage est la fonctionnalit dite de security trimming du service de navigation de ASP.NET 2.0 et nest pas actif par dfaut. Rappelez-vous ! Vous avez activ cette fonctionnalit sur le service de navigation dans le fichier de configuration de lapplication dans lexercice 5 de latelier 3 (Ajouter la navigation). Cette fonctionnalit sappuie directement sur les rgles daccs dfinies sur les urls des pages (et sur les permissions ventuelles de fichier galement) pour dterminer quels sont les liens cacher dans les menus. Vous allez dsactiver la fonctionnalit pour mettre en vidence son fonctionnement. Droulement de lexercice : 1. Supprimez provisoirement la balise <siteMap> dans le fichier de configuration de lapplication : Ouvrez le fichier web.config. Mettez en commentaire la balise <siteMap> activant le security trimming sur le fournisseur de service de navigation AspNetXmlSiteMapProvider.

Sauvegardez le fichier web.config.

2. Excutez lapplication (CTRL F5) et observez que tous les menus sont maintenant visibles pour lutilisateur anonyme. Le filtrage des liens a t dsactiv.

3. Rtablissez le comportement initial en supprimant le commentaire autour de la balise <siteMap> dans le fichier web.config.

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 23 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Vous pouvez dcider de donner les moyens des utilisateurs nayant normalement pas daccs aux travers des rgles de scurit certaines pages de voir quand mme les liens correspondant dans les menus en utilisant les rles utilisateurs directement dans le fichier de plan de site web.sitemap de lapplication. Imaginons que vous ayez un groupe dutilisateurs pilote qui travaillent sur la mise en place et la validation du site web pour lequel vous souhaitez donner la visibilit sur le menu dadministration des annonces. Crez un nouveau rle nomm UtilisateursAvecPouvoir (cf. point 4 de lexercice 3.2 prcdent). Insrez un utilisateur du site dans ce groupe. Ouvrez le fichier de plan de site web.sitemap. Ajoutez lattribut roles dans le nud correspondant au menu afficher malgr les rgles daccs mises en place sur le site comme suit :

Ici, vous dites ASP.NET que vous souhaitez rendre visible ce nud au rle des UtilisateursPilote, bien que ce groupe dutilisateurs nait pas daccs la page en question dans la scurit que vous avez tablie. Excutez lapplication et vous verrez que votre util isateur, une fois connect, voit le lien sur la page AdministrerAnnonces.aspx dans son menu. Malgr tout, il na pas daccs sur cette page, puisquen cliquant sur le lien, le site lui demande de sauthentifier, ne reconnaissant pas un utilisateur autoris travailler sur cette url dans les rgles daccs du site.

Lutilisateur nest pas reconnu comme ayant accs cette page et doit sauthentifier.

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 24 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Note :

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 25 sur 33

Microsoft

Scuriser lapplication web Atelier 5

4 Afficher des informations personnalises


Dans cet exercice, vous allez apprendre : Utiliser les contrles LoginView, LoginName et LoginStatus pour afficher un message personnalis en fonction de lutilisateur en cours. Utiliser la classe Membership du service d appartenance.

Objectif Lobjectif de cet exercice est dutiliser les contrles de connexion LoginView, LoginName et LoginStatus pour proposer lutilisateur un espace membre dans lequel il trouve des informations personnalises. Contexte fonctionnel Vous allez ajouter lapplication une zone Espace membre. Celle-ci propose : - un bouton Connexion/Dconnexion dynamique qui propose lutilisateur de se connec ter (ou au contraire de se dconnecter sil a dj ouvert une session). - un lien vers la slection dannonces enregistre par lutilisateur (cette fonctionnalit sera ensuite implmente dans le prochain atelier avec les profils). - un message de bienvenue en fonction de lutilisateur connect : Utilisateur authentifi (ici christine) Utilisateur dans le rle Administrateurs (ici Admin)

Utilisateur anonyme

4.1 Afficher un menu personnalis


Droulement de lexercice : 1. Dessinez dans la zone Espace membre une liste de valeurs : Ouvrez la page MasterPage.master en mode Source. Positionnez le curseur lintrieur de la balise <div> de classe LiensEspaceMembre et prparez une liste <ul> deux entres <li> : Ouvrez la feuille de style Default.css pour consulter la reprsentation de la liste de valeurs :

<div id="liensEspaceMembre"> <ul class="link"> <li></li> <li></li> </ul> </div>

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 26 sur 33

Microsoft

Scuriser lapplication web Atelier 5

2. Dessinez dans la premire entre <li> un bouton de connexion/dconnexion : Dans la premire entre <li> faites un glisser dplacer de la Bote outils > rubrique Connexion > LoginStatus :

<ul class="link"> <li><asp:LoginStatus ID="LoginStatus1" runat="server" /> </li> <li></li> </ul>

3. Dans la seconde entre <li>, ajoutez un lien hypertexte vers une page MaSelectionDAnnonces.aspx proposant lutilisateur la liste de ses annonces favorites sur le site : Crez une nouvelle page MaSelectionDAnnonces.aspx la racine du projet. Dans la seconde entre <li> faites un glisser dplacer de la Bote outils > rubrique Standard > HyperLink. Pointez dans la proprit NavigateUrl sur la page MaSelectionDAnnonces.aspx. Saisissez un texte dans la proprit Text : Ma slection dannonces. <ul class="link"> <li><asp:LoginStatus ID="LoginStatus1" runat="server" /></li> <li><asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="MaSelectionDAnnonces.aspx" Text="Ma slection d'annonces"> </asp:HyperLink> </li> </ul>

Vous pourriez ajouter ici un lien changer mon mot de passe vers ChangerMotDePasse.aspx qui contiendrait un contrle de connexion ChangePassword.

une

page

4. Sauvegardez la page matre (CTRL S) et lancez lapplication (CTRL F5) pour tester le rsultat.

Cliquez sur Connexion. Le contrle LoginStatus affiche la fentre Login.aspx. Connectez vous avec un compte du site. Le contrle LoginStatus sadapte et affiche maintenant Dconnexion :

4.2 Afficher un message de bienvenue personnalis


Droulement de lexercice : 1. Prparez dans la zone Espace membre une zone de contenu personnalisable en fonction de lutilisateur laide du nouveau contrle de connexion LoginView de ASP.NET 2.0 : Automne 2005 Tutorial Dcouverte de ASP.NET 2.0 Page 27 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Dans la page MasterPage.master en mode Source, positionnez le curseur devant la balise juste aprs le titre Espace membre en style <h1> :

Faites un glisser dplacer de la Bote outils > rubrique Connexion > LoginView sur la page. Basculez la page en mode Design.

2. Ajoutez un message personnalis pour les utilisateurs anonymes. Sur la balise active du contrle LoginView , slectionnez la vue Anonymous Template. Saisissez le message : Bonjour ! Pour passer une annonce vous devez vous identifier . Basculez en mode Source pour mettre ce texte dans une balise <h2> : <AnonymousTemplate> <h2>Bienvenue ! Pour passer une annonce vous devez vous identifier.</h2> </AnonymousTemplate> 3. Ajoutez un message personnalis pour les utilisateurs authentifis. Basculez la page en mode Design. Sur la balise active du contrle LoginView , slectionnez la vue LoggedInTemplate.

Saisissez le message : Bonjour ! Faites un glisser dplacer de la Bote outils > rubrique Connexion > LoginName juste aprs le mot Bonjour. Basculez en mode Source pour mettre le tout dans une balise <h2>.

<LoggedInTemplate> <h2>Bonjour&nbsp;<asp:LoginName ID="LoginName1" runat="server" /> &nbsp;!<h2> </LoggedInTemplate> Vous obtenez :

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 28 sur 33

Microsoft

Scuriser lapplication web Atelier 5

4. Sauvegardez la page matre et lancez lapplication pour tester lespace membre. Vue par dfaut Une fois authentifi

5. Ajoutez un message personnalis pour le rle des Administrateurs Affichez la page en mode Design. Sur la balise active du contrle LoginView , cliquez sur Modifier les RolesGroups Ajoutez le rle Administrateurs.

Affichez la vue RoleGroup[0] Administrateurs pour ajouter un message personnalis ddi aux utilisateurs de ce groupe.

Utilisez le contrle LoginName et un Label pour crire le message suivant :

<RoleGroups> <asp:RoleGroup Roles="Administrateurs"> <ContentTemplate> Bonjour&nbsp; <asp:LoginName ID="LoginName2" runat="server" /> ! Il y a actuellement&nbsp; <asp:Label ID="Label1" runat="server" Text="Label"> </asp:Label> &nbsp;utilisateurs connects sur le site. </ContentTemplate> </asp:RoleGroup> </RoleGroups> 6. Vous allez maintenant rcuprer le nombre dutilisateurs actuellement connects sur le site pour lafficher dans le contrle Label1. Pour cela, utilisez la classe Membership du service Automne 2005 Tutorial Dcouverte de ASP.NET 2.0 Page 29 sur 33

Microsoft

Scuriser lapplication web Atelier 5

dappartenance de ASP.NET 2.0 qui permet de rcuprer toutes sortes dinformation sur la scurit de lapplication. Affichez la page en mode Design. Double cliquez sur un espace vide de la page pour faire apparatre la page de code et gnrer la procdure en rponse lvnement de chargement de la page Page_Load. Saisissez le code suivant : Code VB.NET Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim lblNbUtilisateursConnectes As Label lblNbUtilisateursConnectes = CType(LoginView1.FindControl("Label1"), Label) If Not lblNbUtilisateursConnectes Is Nothing Then lblNbUtilisateursConnectes.Text = Membership.GetNumberOfUsersOnline().ToString() End If End Sub Code C# protected void Page_Load(object sender, EventArgs e) { Label lblNbUtilisateursConnectes; lblNbUtilisateursConnectes = (Label)LoginView1.FindControl("Label1"); if (lblNbUtilisateursConnectes !=null ) { lblNbUtilisateursConnectes.Text = Membership.GetNumberOfUsersOnline().ToString(); } } Cette fonction rcupre le nombre dutilisateurs ayant une session ouverte.

Vous remarquez que le contrle Label1 nest pas accessible directement. Vous devez passer par son container cest--dire le contrle LoginView1. En plus, le Label1 nest instanci en mmoire que dans le cas o cest la vue le contenant qui est charg. Vous pouvez galement utiliser les vnements ViewChanged et ViewChanging sur le contrle pour rcuprer le changement de vue. Le contrle a galement des proprits LoggedInTemplate, AnonymousTemplate et ContentTemplate pour accder aux diffrents modles et RoleGroups pour accder la collection des rles.

La mthode GetUser() de la classe Membership permet de rcuprer un utilisateur particulier et renvoie un objet de type MembershipUser permettant de grer un compte.

7. Sauvegardez et excutez lapplication pour tester le message personnalis destin aux Administrateurs du site. Connectez vous avec lutilisateur Admin du rle Administrateurs. Vous obtenez : Automne 2005 Tutorial Dcouverte de ASP.NET 2.0 Page 30 sur 33

Microsoft

Scuriser lapplication web Atelier 5

Ouvrez une autre fentre dInternet Explorer en rcuprant ladresse url en cours et connectez vous avec un compte utilisateur du site. Faites menu Affichage > Actualiser (F5) sur la fentre de lutilisateur Admin pour observer le message de bienvenue indiquant maintenant 2 utilisateurs connects au site.

Attentionpour mmo une session dure 20 minutes par dfaut sur IIS.

Note :

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 31 sur 33

Microsoft

Scuriser lapplication web Atelier 5

5 Pour aller plus loin


5.1 Valider le format des paramtres daccs
Vous pouvez valider le format des paramtres daccs saisis par lutilisateur (par exemple pour vrifier que le mot de passe contient bien un certain minimum de caractres) en trappant lvnement LoggingIn qui intervient avant la validation des paramtres par le fournisseur du service dappartenance. Branchez une procdure de rponse lvnement comme suit : <asp:Login ID=LoginControl runat=server OnLoggingIn=NomDeLaProcDeReponseDeVotreChoix /> Dans la procdure de rponse, vous pouvez utiliser le paramtre de type CancelEventArgs pour annuler le processus de validation au besoin et afficher le message derreur contenu dans la proprit InstructionText du contrle.

5.2 Mettre les rles en cache


Si le gestionnaire de rle doit accder une base de donnes chaque requte de page pour retrouver les informations sur les rles, cela peut vite devenir coteux en performance. Lide est de mettre en cache les rles auxquels appartient lutilisateur dans un cookie de faon viter au gestionnaire de rles de faire un accs base. Pour raliser cela, activez le cache via lattribut CacheRolesInCookie true sur la balise <RoleManager> dans le fichier web.config. Vous pouvez ensuite changer les paramtres par dfaut du cookie de la mme manire que pour lauthentification. Donc pas de besoin de code ASP.NET 2.0 soccupe de tout et si le navigateur client nautorise pas les cookies, il ira (sans rler) chercher les informations dans la base de donnes faute de pouvoir utiliser le cache.

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 32 sur 33

Microsoft

Scuriser lapplication web Atelier 5

6 Rendez-vous dans le prochain atelier


Dans latelier 6, Personnaliser lapplication, vous allez grer des profils pour vos utilisateurs la scurit de faon leur proposer des services personnaliss.

Automne 2005

Tutorial Dcouverte de ASP.NET 2.0

Page 33 sur 33

Vous aimerez peut-être aussi