Authentification par formulaire sous ASP.Net

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 3

Par Christian PEYRUSSE

L’AUTHENTIFICATION
PAR FORMULAIRE
SOUS ASP.NET
PRATIQUE
Après avoir traité
l’authentification
N ous allons décrire la mise en œuvre du mécanisme d’au-
thentification à base de formulaire. La liste des utilisa-
teurs autorisés sera dans un premier temps décrite dans un fi-
chier de configuration XML puis intégrée à une table des
Windows, nous utilisateurs d’une base de données SQL2000.
Regardons plus précisément le fonctionnement interne de l’au-
allons aborder ce thentification par formulaire.
mois-ci
Le mécanisme d’authentification à
l’authentification par base de formulaire
formulaire. Ce mode
Fonctionnement de l’authentification par formulaire
d’authentification
consiste à rediriger
tout utilisateur vers
une page de login,
tant que celui-ci ne
s’est pas authentifié.
L’authentification Voici comment fonctionne sous ASP .Net l’authentification par for-
mulaire :
peut-être réalisée 1 ■ Un client soumet une requête http pour accéder à une page
ASP sécurisée.
soit à partir d’un 2 ■ IIS transmet la requête à ASP .Net pour authentification. Il faut
fichier de cocher l’accès anonyme pour l’authentification IIS.
3 ■ ASP .Net vérifie si le client dispose d’un cookie d’authentifica-
configuration XML tion. Si l’utilisateur n’est pas authentifié alors il est redirigé
vers une page de login.
soit à partir d’un 4 ■ L’utilisateur saisit son identité et son mot de passe.
système externe 5 ■ Les informations d’authentification sont vérifiées (fichier de
configuration, SGBD…). Si l’utilisateur n’est pas authentifié
(SGBD ou Active alors un message d’accès refusé est affiché.
6 ■ Les informations d’authentification ont été validées, un cookie
Directory). d’authentification est généré.
7 ■ Si l’utilisateur est autorisé par ASP .Net alors il accède à la

ASP.NET
NIVEAU : INTERMEDIAIRE
page demandée.
Passons à la pratique et mettons en place ce système d’authentifi-
cation en déroulant les étapes suivantes :
■ Paramétrage du fichier Web.Config

■ Définition du mode d’authentification 57

Programmez N°52 • AVRIL 2003


■ Définition de la page de redirection systématiquement redirigé tant qu’il ne sera pas authentifié. La
■ Définition de la liste des utilisateurs authentifiés avec cryptage balise timeout indique la durée en minutes du cookie d’authentifi-
de leur mot de passe cation. Les informations concernant les utilisateurs sont définies
■ Création d’un formulaire Web pour recueillir les informations dans la balise credentials. Il faut ensuite définir pour chaque utili-
d’identification du client sateur un nom et un mot de passe au sein d’une balise user, seuls
■ Vérification des informations d’authentification du client à partir ces comptes seront habilités à s’authentifier sur notre application.
d’un fichier de configuration XML Enfin, nous complétons la sécurité de notre application Web, en
interdisant son accès à tous les utilisateurs non authentifiés.
Paramétrage du fichier Web.Config
Le cryptage du mot de passe :
Pour positionner l’authentification par formulaire, voici les modifi- Mais me direz-vous, que signifie le format MD5 et comment cryp-
cations à réaliser dans le fichier Web.Config. ter le mot de passe des utilisateurs ?
Le cryptage du mot de passe peut être réalisé grâce à la fonction
<authentication mode="Forms"> HashPasswordForStoringInConfigFile de la classe FormsAuthenti -
<forms loginUrl="login.aspx" timeout="20">
cation. Elle permet de générer un mot de passe crypté selon un
<credentials passwordFormat="MD5">
<user name="christian" password="7FF135854376850E9711BD75C
algorithme de hachage SHA1 ou MD5. Ces deux valeurs peuvent
E942E07"/> être utilisées comme format du mot de passe ainsi qu’une valeur
</credentials> "Clear" à utiliser si vous ne souhaitez pas le crypter.
</forms>
</authentication>
Le formulaire d’authentification
<authorization>
<deny users="?" /> Voici une copie de notre écran d’authentification.
</authorization > Exemple de formulaire d’authentification

Tout d’abord le mode d’authentification a été basculé à " Forms ".


La balise LoginUrl indique la page vers laquelle l’utilisateur sera

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 préoccupons
pas pour l’instant des autres boutons.
Regardons maintenant le code exécuté lorsque l’utilisateur clique
sur le bouton Connexion.
PRATIQUE

using System.Web.Security;

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 !";

ASP.NET
NIVEAU : INTERMEDIAIRE
La classe FormsAuthentication fait partie de l’espace de noms Sys-
tem.Web.Security. Il faut donc l’inclure dans notre page.
La méthode Authenticate vérifie le nom d’utilisateur et son mot de
passe à partir des éléments contenus dans la balise Credentials du
58 fichier Web.Config.. Si l’utilisateur est habilité, alors un cookie

Programmez N°52 • AVRIL 2003


d’authentification est généré et l’utilisateur est redirigé vers la
page demandée initialement ; ces opérations sont réalisées par la // Parcours de la liste des utilisateurs
while (drUtilisateur.Read())
méthode RedirectFromLoginPage. Cette méthode prend également
{
un second paramètre qui indique si le cookie doit persister lors if (drUtilisateur["motdepasse"].ToString() == strMotDePasse)
d’un changement de session. {
Précisons que dans le cas où la méthode RedirectFromLoginPage bOk = true;
ne peut pas identifier de page de retour alors la page default.aspx break;
}
est affichée.
}
}
L’authentification des utilisateurs, via catch
une base de données {
bOk = false;
}
Nous venons de mettre en place une authentification par formu-
oConnexion.Close();
laires, en validant l’identité de l’utilisateur à partir d’informations return bOk;
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 utili- Nous cryptons d’abord le mot de passe saisi par l’utilisateur, puis
sateurs. nous sélectionnons la liste des mots de passe de l’utilisateur qui
Essayons d’améliorer notre solution, en validant désormais les cherche à s’authentifier, enfin nous la parcourons, en comparant
informations à partir d’une table " utilisateurs " d’une base de chaque mot de passe avec celui crypté précédemment. Dès qu’un
données SQL2000. Pour ce faire, nous devons : mot de passe a été trouvé nous retournons Vrai à la fonction
■ Modifier le fichier Web.Config en supprimant la balise creden- appelante.
tials. Il ne nous reste plus qu’à modifier le code associé au bouton
■ Créer une table SQL2000 qui contiendra les informations d’au- Connexion et à invoquer notre méthode Authentifier.
thentification.
■ Développer notre propre fonction d’authentification " Authenti- private void BtConnexion_Click(object sender, System.EventArgs e)
{
fier " chargée de vérifier les informations saisies par l’utilisateur
if (Authentifier(txtUtilisateur.Text,txtMotDePasse.Text))
avec celles contenues en base. FormsAuthentication.RedirectFromLoginPage(txtUtilisateur.Text,false);
■ Modifier le code associé au bouton Connexion afin d’utiliser else
notre nouvelle méthode. lbMessage.Text = "Erreur d'authentification, l'utilisateur ou le mot de passe
n'existent pas!";
}
Description de la table " utilisateurs "
Cette table contient les deux champs suivants :
La déconnexion de l’utilisateur
Champ Type de données SQL2000 Description La plupart des sites, qui proposent un moyen de s’authentifier par
nom Varchar(20) Nom de l’utilisateur formulaires, fournissent également un bouton de déconnexion. La
motdepasse Varchar(50) Mot de passe
méthode SignOut() de la classe FormsAuthentication réalise cette
Pour des raisons de sécurité, nous crypterons le mot de passe au opération de déconnexion en détruisant le cookie d’authentifica-
format MD5. tion, ce qui obligera l’utilisateur à s’authentifier de nouveau pour
accéder à l’une des pages de votre application.
Description de la fonction "Authentifier " Voici le code exécuté lorsque l’utilisateur clique sur le bouton
Déconnexion.
private bool Authentifier(string strUtilisateur, string strMotDePasse)
{
private void BtDeconnexion_Click(object sender, System.EventArgs e)
bool bOk=false; {
FormsAuthentication.SignOut();
// Cryptage du mot de passe Response.Redirect("Login.aspx");
strMotDePasse = FormsAuthentication.HashPasswordForStoringInConfigFile }
(strMotDePasse,"MD5");
Nous détruisons le cookie d’authentification et redirigeons l’utili-
// Création d'une connexion SGBD sateur vers la page de login.
SqlConnection oConnexion = new SqlConnection("user id=sa;
password=;initial catalog=pubs;data source=pttravail");
Conclusion
// Définition de la requête à exécuter
SqlCommand oCommand = new SqlCommand("SELECT * FROM Nous avons pu nous rendre compte de la facilité de mise en œuvre
Utilisateurs WHERE nom='" + strUtilisateur+ "'",oConnexion); de l’authentification par formulaire avec ASP .Net. Il est ainsi pos-
sible en quelques lignes de code et à moindre coût de sécuriser
try
toute application Web Intranet ou Internet. Le mois prochain nous
{
// Ouverture de la connexion et exécution de la requête terminerons notre série d’articles en traitant le mode d’authentifi-
oConnexion.Open(); cation Microsoft Passport Single Sign In. ■
SqlDataReader drUtilisateur = oCommand.ExecuteReader(); Christian PEYRUSSE 59

Programmez N°52 • AVRIL 2003

Vous aimerez peut-être aussi

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy