Vous êtes sur la page 1sur 4

Authentification par formulaire en asp.

net

http://dotnet.developpez.com/articles/authentification/

Forums Tutoriels Magazine FAQs Blogs Projets Chat Newsletter tudes Emploi Club Contacts

Accueil Conception Java .NET Dv. Web EDI Langages SGBD Office Solutions d'entreprise Applications Systmes
.NET
FORUMS .NET

Visual Studio

ASP.NET

C#

Visual Basic.NET
LIVRES .NET

Windows Phone
OUTILS .NET

Windows Azure
BLOG .NET DOTNET TV

FAQs .NET

TUTORIELS .NET

SOURCES .NET

L'authentification par formulaire en ASP.NET


26/05/2003 Par Leduke (autres articles)

niveau : facile dure : de 30 45 minutes Cet article a pour but de vous montrer comment grer l'authentification par formulaire en ASP.NET.

Introduction 1. L'authentification par formulaire sous ASP .Net 2. Paramtrage du fichier Web.Config 3. Le formulaire d'authentification 4. L'authentification des utilisateurs via une base de donnes 5. La dconnexion de l'utilisateur 6. Conclusion

Introduction

Nous allons aborder l'authentification par formulaire. Ce mode d'authentification consiste rediriger tout utilisateur vers une page de login tant que celui-ci ne s'est pas authentifi. L'authentification peut-tre ralise soit partir d'un fichier de configuration XML soit partir d'un systme externe (SGBD ou Active Directory). Nous allons dcrire la mise en ouvre du mcanisme d'authentification base de formulaire. La liste des utilisateurs autoriss sera dans un premier temps dcrite dans un fichier de configuration XML puis intgre une table des utilisateurs d'une base de donnes SQL2000. Regardons plus prcisment le fonctionnement interne de l'authentification par formulaire.

1. L'authentification par formulaire sous ASP .Net

Voici comment fonctionne sous ASP .Net l'authentification par formulaire : 1. Un client soumet une requte http pour accder une page ASP scurise. 2. IIS transmet la requte ASP .Net pour authentification. Il faut cocher l'accs anonyme pour l'authentification IIS. 3. ASP.NET vrifie si le client dispose d'un cookie d'authentification. Si l'utilisateur n'est pas authentifi alors il est redirig vers une page de login. 4. L'utilisateur saisit son identit et son mot de passe.

1 sur 4

29/06/2011 16:04

Authentification par formulaire en asp.net

http://dotnet.developpez.com/articles/authentification/

5. Les informations d'authentification sont vrifies (fichier de configuration, SGBD .). Si l'utilisateur n'est pas authentifi alors un message d'accs refus est affich. 6. Les informations d'authentification ont t valides, un cookie d'authentification est gnr. 7. Si l'utilisateur est autoris par ASP.NET alors il accde la page demande. Passons la pratique et mettons en place ce systme d'authentification en droulant les tapes suivantes :

Paramtrage du fichier Web.Config : Dfinition du mode d'authentification.Dfinition de la page de redirection.Dfinition de la liste des utilisateurs authentifis avec cryptage de leur mot de passe. Cration d'un formulaire Web pour recueillir les informations d'identification du client. Vrification des informations d'authentification du client partir d'un fichier de configuration XML.

2. Paramtrage du fichier Web.Config

Pour positionner l'authentification par formulaire, voici les modifications raliser dans le fichier Web.Config. <authentication mode="Forms"> <forms loginUrl="login.aspx" timeout="20"> <credentials passwordFormat="MD5"> <user name="christian" password="7FF135854376850E9711BD75CE942E07" /> </credentials> </forms> </authentication> <authorization> <deny users="?" /> </authorization> Tout d'abord le mode d'authentification a t bascul "Forms". La balise LoginUrl indique la page vers laquelle l'utilisateur sera systmatiquement redirig tant qu'il ne sera pas authentifi. La balise timeout indique la dure en minutes du cookie d'authentification. Les informations concernant les utilisateurs sont dfinies dans la balise credentials. Il faut ensuite dfinir pour chaque utilisateur un nom et un mot de passe au sein d'une balise user, seuls ces comptes seront habilits s'authentifier sur notre application. Enfin, nous compltons la scurit de notre application Web, en interdisant son accs tous les utilisateurs non authentifis. Le cryptage du mot de passe : Mais me direz-vous que signifie le format MD5 et comment crypter le mot de passe des utilisateurs ? Le cryptage du mot de passe peut tre ralis grce la fonction HashPasswordForStoringInConfigFile de la classe FormsAuthentication. Elle permet de gnrer un mot de passe crypt selon un algorithme de hachage SHA1 ou MD5. Ces deux valeurs peuvent tre utilises comme format du mot de passe ainsi qu'une valeur Clear utiliser si vous ne souhaitez pas le crypter.

3. Le formulaire d'authentification

Voici une copie de notre cran d'authentification.

L'cran d'authentification est relativement simple avec une zone de saisie pour le nom de l'utilisateur, une zone de saisie pour le mot de passe et un bouton de connexion. Ne nous proccupons pas pour l'instant des autres boutons. Regardons maintenant le code excut lorsque l'utilisateur clique sur le bouton Connexion. using System.Web.Security;

2 sur 4

29/06/2011 16:04

Authentification par formulaire en asp.net

http://dotnet.developpez.com/articles/authentification/

.... private void BtConnexion_Click(object sender, System.EventArgs e) { if (FormsAuthentication.Authenticate(txtUtilisateur.Text,txtMotDePasse.Text)) { FormsAuthentication.RedirectFromLoginPage(txtUtilisateur.Text,false ); } else { lbMessage.Text = "Login incorrect !"; } } La classe FormsAuthentication fait partie de l'espace de noms System.Web.Security. Il faut donc l'inclure dans notre page. La mthode Authenticate vrifie le nom d'utilisateur et son mot de passe partir des lments contenus dans la balise Credentials du fichier Web.Config.. Si l'utilisateur est habilit alors un cookie d'authentification est gnr et l'utilisateur est redirig vers la page demande initialement ; ces oprations sont ralises par la mthode RedirectFromLoginPage. Cette mthode prend galement un second paramtre qui indique si le cookie doit persister lors d'un changement de session. Prcisons que dans le cas o la mthode RedirectFromLoginPage ne peut pas identifier de page de retour alors la page default.aspx est affiche.

4. L'authentification des utilisateurs via une base de donnes

Nous venons de mettre en place une authentification par formulaires en validant l'identit de l'utilisateur partir d'informations contenues dans un fichier de configuration XML. Cette solution fonctionne mais peut devenir rapidement fastidieuse pour un administrateur charg de saisir un grand nombre de comptes utilisateurs. Essayons d'amliorer notre solution en validant dsormais les informations partir d'une table "utilisateurs" d'une base de donnes SQL2000. Pour ce faire, nous devons :

Modifier le fichier Web.Config en supprimant la balise credentials. Crer une table SQL2000 qui contiendra les informations d'authentification. Dvelopper notre propre fonction d'authentification "Authentifier" charge de vrifier les informations saisies par l'utilisateur avec celles contenues en base. Modifier le code associ au bouton Connexion afin d'utiliser notre nouvelle mthode. Description de la table "utilisateurs" : Champ nom mot de passe Type de donnes SQL2000 Varchar(20) Varchar(50) Description Nom de l'utilisateur Mot de passe

Pour des raisons de scurit, nous crypterons le mot de passe au format MD5. Description de la fonction "Authentifier" : private bool Authentifier(string strUtilisateur, string strMotDePasse) { bool bOk=false ; // Cryptage du mot de passe strMotDePasse = FormsAuthentication.HashPasswordForStoringInConfigFile(strMotDePasse,"MD5"); // Cration d'une connexion SGBD SqlConnection oConnexion = new SqlConnection("user id=sa;password=;initial catalog=pubs;data source=pttravail"); // Dfinition de la requte excuter SqlCommand oCommand = new SqlCommand("SELECT * FROM Utilisateurs WHERE nom='" + strUtilisateur+ "'",oConnexion); try { // Ouverture de la connexion et excution de la requte oConnexion.Open(); SqlDataReader drUtilisateur = oCommand.ExecuteReader(); // Parcours de la liste des utilisateurs while (drUtilisateur.Read()) { if (drUtilisateur["motdepasse"].ToString() == strMotDePasse) { bOk = true ; break ; } } } catch { bOk = false ; } oConnexion.Close(); return bOk; }

3 sur 4

29/06/2011 16:04

Authentification par formulaire en asp.net

http://dotnet.developpez.com/articles/authentification/

Nous cryptons d'abord le mot de passe saisis par l'utilisateur, puis nous slectionnons la liste des mots de passe de l'utilisateur qui cherche s'authentifier, enfin nous la parcourons en comparant chaque mot de passe avec celui crypt prcdemment. Ds qu'un mot de passe a t trouv nous retournons vrai la fonction appelante. Il ne nous reste plus qu'a modifier le code associ au bouton Connexion et invoquer notre mthode Authentifier. private void BtConnexion_Click(object sender, System.EventArgs e) { if (Authentifier(txtUtilisateur.Text,txtMotDePasse.Text)) { FormsAuthentication.RedirectFromLoginPage(txtUtilisateur.Text,false ); } else { lbMessage.Text = "Erreur d'authentification, l'utilisateur ou le mot de passe n'existent pas!"; } }

5. La dconnexion de l'utilisateur

La plupart des sites, qui proposent un moyen de s'authentifier par formulaires, fournissent galement un bouton de dconnexion. La mthode SignOut() de la classe FormsAuthentication ralise cette opration de dconnexion en dtruisant le cookie d'authentification, ce qui obligera l'utilisateur s'authentifier de nouveau pour accder l'une des pages de votre application. Voici le code excut lorsque l'utilisateur clique sur le bouton Dconnexion : private void BtDeconnexion_Click(object sender, System.EventArgs e) { FormsAuthentication.SignOut(); Response.Redirect("Login.aspx"); } Nous dtruisons le cookie d'authentification et redirigeons l'utilisateur vers la page de login.

6. Conclusion

Nous avons pu nous rendre compte de la facilit de mise en oeuvre de l'authentification par formulaire avec ASP .Net. Il est ainsi possible en quelques lignes de code et moindre cot de scuriser toute application Web Intranet ou Internet.

Voir galement mes autres articles : Migrer de C++ vers C# La FAQ .NET par Leduke et Neo.51 L'authentification par formulaire en ASP.NET

Article crit pour la revue programmez par leduke - Toute reproduction, mme partielle doit-tre soumise l'accord de l'auteur.

Responsables bnvoles de la rubrique Microsoft DotNET : Jrme Lambert - Philippe Vialatte - Contacter par email Vos questions techniques : forum d'entraide Microsoft DotNET - Publiez vos articles, tutoriels et cours et rejoignez-nous dans l'quipe de rdaction du club d'entraide des dveloppeurs francophones Nous contacter - Hbergement - Participez - Copyright 2000-2011 www.developpez.com - Legal informations.

4 sur 4

29/06/2011 16:04

Vous aimerez peut-être aussi