Bewise

Nous développons... votre avance

ASP .NET : un exemple d’authentification par formulaire en Visual Basic .NET

SLF
SWA
10/04/2002 - Frédéric Colin
Télécharger la version Word
Télécharger les sources

1 Introduction

Nombreux sont les types d’applications Internet ou intranet où la mise en place d’un système d’authentification est indispensable.

Pour cela, plusieurs solutions existent :

  • Authentification Windows : l’utilisateur du site est authentifié sur un domaine Windows et appartient à un ou des groupes Windows ayant des droits spécifiques NTFS sur des répertoires ainsi que des fichiers. La mise en place de ces droits sur chaque élément d’une application peut s’avérer fastidieuse.
  • Authentification via une base de données : les utilisateurs saisissent un Login/Password et nous vérifions leur appartenance à une table des utilisateurs stockée dans un SGBD quelconque + droits associés. Plus coûteux à mettre en œuvre en terme de développement.
  • Un mix des deux cas précédents : une authentification Windows et la vérification des droits dans un SGBD en fonction d’un Login Windows.

Toutefois, dans certains cas d’Intranet, il n’est pas peut-être pas nécessaire de sortir l’artillerie lourde (!) pour mettre en place une authentification, surtout si les heures de développement sont comptées.

ASP .NET offre la possibilité de redirection systématique vers une page d’identification tant que l’utilisateur n’a pas été authentifié par un mécanisme déjà implémenté, soit par le Framework .NET, soit par un mécanisme spécifique développé pour la circonstance.

Dans ce cadre, nous allons mettre en place le mécanisme d’authentification via un formulaire dans une application Web. Nous stockerons les informations d’authentification dans le fichier de configuration XML de l’application Web de manière cryptée (algorithme de hashage fourni par le Framework .NET) et utiliserons les classes fournies par ASP .NET pour valider l’authentification.

2 La théorie

ASP .NET nous offre une manière relativement simple de mettre en place un système d’authentification dans une application Web. Voici les étapes à suivre :

  • Configuration du fichier web.config
    • Mise en place de l’authentification par formulaire
    • Spécification de la page de redirection pour l’authentification
    • Spécification des Login/Password (cryptés ou non) à prendre en compte en cas de stockage de ces informations dans le fichier XML (on peut imaginer d’autres mécanismes, mais ce n’est pas l’objet de cet exemple)
    • Spécification éventuelle des rôles applicatifs et spécification des appartenances des Logins précédemment définis à ces rôles
    • Spécification éventuelle des rôles/utilisateurs autorisés par page/répertoire
  • Création de la page d’identification
  • Implémentation du système d’authentification dans la page d’identification. Si l’authentification est valide, le système peut vérifier les autorisations d’accès aux ressources définies dans le fichier de config XML par rôle/utilisateur

ASP .NET se charge de mettre en place le mécanisme suivant :

clip_image001[6]

Enfin, le framework .NET saura nous fournir les classes permettant de récupérer toutes les informations nécessaires sur l’utilisateur une fois ce dernier authentifié (classe user)

Mais assez de théorie et passons un peu à la pratique !

3 L’exemple par le code

Voici le formulaire d’authentification de l’application « Login.aspx »

En mode conception

image

Comme vous pouvez le constater, il n’y a rien d’exceptionnel dans ce formulaire. A noter quand même l’utilisation des contrôles de validations des saisies utilisateurs (Required Field Validator).

En exécution :

clip_image006

Voici le code VB .NET serveur associé au click du bouton de validation :

Imports System.Web.Security Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' Vérification de l'authentification If FormsAuthentication.Authenticate(TextBox1.Text.ToString, TextBox2.Text.ToString) Then FormsAuthentication.RedirectFromLoginPage(TextBox1.Text.ToString, False) Else Label1.Text = "Les éléments fournis ne permettent pas de vous authentifier." End If End Sub

Nous utilisons ici une classe appelée « FormsAuthentification » (appartenant au namespace « System.Web.Security »), et plus particulièrement la méthode statique de classe « Authenticate » qui permet de valider les informations saisies par l’utilisateur en fonction de celles existantes dans le fichier « web.config ». Si l’utilisateur est authentifié, on peut alors créer le ticket/cookie d’authentification et rediriger l’utilisateur vers la page qu’il avait initialement demandé ; c’est l’objet de la méthode « RedirectFromLoginPage ». Le second paramètre de cette méthode permet de spécifier si le cookie doit être persistant au-delà de la session utilisateur en cours.

Web Form vers laquelle on redirige l’utilisateur non authentifié

Méthode d’authentification par formulaire (existe aussi Windows et passport)

Il reste maintenant à configurer correctement le fichier « web.config ». Voici les balises à ajouter à ce fichier de configuration :

image

Il serait tout à fait possible de définir des rôles ainsi que des appartenances d’utilisateur à ces rôles. De plus, on peut aller jusqu’à définir au niveau d’une ressource fichier les droits d’utilisation :

<location path="test.aspx"> <system.web> <authorization> </authorization> </system.web> </location>

Remarque : pour « dé-signer » un utilisateur authentifié, vous pouvez utiliser la méthode statique « SignOut() » de la classe « FormsAuthentication » et rediriger l’utilisateur vers le formulaire de Login.

Un point doit forcément vous étonner dans ce que j’ai décrit dans le fichier XML. En effet, comment générer le cryptage des mots de passe ? Existe-t-il un outil intégré à Visual Studio .NET pour nous aider à les générer ? La réponse est non. Par contre, le Framework .NET offre une méthode statique permettant de réaliser cette petite transformation. C’est l’objet du formulaire Web suivant :

Voici l’interface en conception

clip_image014

Le click sur le bouton « valider » déclenche le traitement suivant :

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TextBox2.Text = FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox1.Text.ToString, DropDownList1.SelectedItem.Text.ToString) End Sub

La méthode « HashPasswordForStoringInConfigFile » admet deux paramètres : la chaîne à crypter et le type de cryptage (SHA1 ou MD5), et renvoie la chaîne ainsi cryptée. Cette méthode statique est aussi présente pour nous rappeler la richesse des classes du Framework .NET.

4 Conclusion

Si vous ne deviez retenir qu’un élément de cet exemple, il s’agirait de la simplicité de la mise en œuvre de ce mécanisme où, en quelques éléments de configuration via un simple fichier XML et quelques lignes de code (moins d’une dizaine), on peut mettre en place un mécanisme simple d’authentification et d’autorisation. Bien entendu, ce mécanisme peut être surchargé à loisir en fonction des besoins spécifiques des entreprises, notamment au niveau de la façon d’authentifier les utilisateurs et dans le cas où le stockage des informations de Login/Password au sein du fichier « web.config » ne convient pas.

De plus, nous n’avons fait qu’effleurer toutes les possibilités de cryptage offertes par le Framework .NET. Des classes spécifiques existent pour les algorithmes MD5 et SHA1. Mais il s’agit là d’un sujet relativement vaste qui nécessiterait d’autres articles. Affaire à suivre …

Pour résumer, voici un tableau récapitulatif des avantages/inconvénients de chaque méthode d’authentification qu’il est possible de réaliser dans une application .NET :

  • Sécurité Windows
    • Avantages
      • Utilisation des mécanismes standards de Windows
    • Inconvénients
      • Pas approprié dans le cadre de développement Internet où l’utilisateur n’a pas forcément un compte Windows
  • Sécurité par formulaire
    • Avantages
      • Simplicité de la mise en œuvre
      • Adapté pour les Intranet mais aussi pour Internet
    • Inconvénients
      • Basé sur les cookies
  • Sécurité par Passport
    • Avantages
      • Possibilité de se signer sur plusieurs sites avec le même compte d’authentification
    • Inconvénient
      • Pour l’instant, stockage des informations chez un tiers
> Tous les articles

Commentaires

aucun commentaire
Page 1/1
   
Connexion
  • Accueil
  • Plan du site
  • Contact
Bewise TV, Blog technique, Webcasts...

Votre carrière et nous

  • Nos offres
  • Votre candidature
Ignorer les liens de navigation > Accueil > Nos Métiers > Solutions Web Avancées > Détail Article
Ignorer les liens de navigation
Nous
Nos Métiers
Vous Former
Nos Evénements
Nos Références
Nos Activités
Nos Certifications
Nos Chiffres
Le Groupe
Nos Partenaires
On Parle de Nous
Votre Carrière et Nous
Nous Contacter
Défiler vers le haut
Défiler vers le bas
Administration, Système et Communication
Architecture, Méthodes, Industrialisation
Décisionnel et Gestion des Données
Nouvelles Interfaces Utilisateurs
Portail et Travail Collaboratif
Solutions Langages et Framework
Solutions Web Avancées
Défiler vers le haut
Défiler vers le bas
Nos cours
Le Planning
Offres promotionnelles
Défiler vers le haut
Défiler vers le bas
TechDays'12
TechLunch
Windows 8 Camp
Défiler vers le haut
Défiler vers le bas
  • Infos légales
  • Lettre du Regional Director
  • Revue de presse