Authentification par formulaire dans C#

Configuration de l'authentification formulaires dans ASP.NET

ASP.NET propose quatre modes d'authentification : Windows, Formulaires, Passport et Aucun. Cette article explique en détail la configuration et l'utilisation de l'authentification par formulaire.

1. Mise en place de l'authentification formulaires

Pour activer l'authentification par formulaire, modifiez le fichier Web.config comme suit :

<configuration>
 <system.web>
   <authentication mode="Forms">
     <forms loginUrl="Login.aspx" name=".ASPXAUTH" timeout="30" />
   </authentication>
   <authorization>
     <deny users="?" />
   </authorization>
 </system.web>
</configuration>

Ce paramétrage permet de rediriger tout utilisateur non authentifié vers la page Login.aspx.

2. Gestion de la connexion et de la déconnexion

Voici un exemple de code pour la méthode de connexion :

private void btnLogin_Click(object sender, EventArgs e)
{
   if (txtUsername.Text == "Admin" && txtPassword.Text == "123456")
   {
       FormsAuthentication.SetAuthCookie(txtUsername.Text, true);
       Response.Redirect("Default.aspx");
   }
}

La méthode SetAuthCookie crée un cookie persistant si le deuxième paramètre est true. Pour se déconnecter, utilisez :

private void btnLogout_Click(object sender, EventArgs e)
{
   FormsAuthentication.SignOut();
}

3. Vérification de l'état d'authentification

Vous pouvez vérifier si l'utilsiateur est connecté via :

if (User.Identity.IsAuthenticated)
{
   // L'utilisateur est authentifié
   string username = User.Identity.Name;
}

4. Contrôle d'accès par répertoire avec Web.config local

Utilisez des fichiers Web.config imbriqués pour définir des règles d'accès spécifiques à chaque dossier. Par exemple, pour autoriser tous les utilisateurs dans un dossier public :

<configuration>
 <system.web>
   <authorization>
     <allow users="*" />
   </authorization>
 </system.web>
</configuration>

Placez ce fichier dans un dossier Public. Il remplace les règles héritées du fichier racine.

5. Centralisation des règles d'accès avec <location>

Plutôt que d'avoir plusieurs fichiers Web.config, vous pouvez regrouper les règles dans le fichier racine en utilisant la balise <location> :

<configuration>
 <location path="Public">
   <system.web>
     <authorization>
       <allow users="*" />
     </authorization>
   </system.web>
 </location>
 <location path="ManageSys">
   <system.web>
     <authorization>
       <allow users="Admin" />
       <deny users="*" />
     </authorization>
   </system.web>
 </location>
</configuration>

6. Protection des fichiers statiques

Les fichiers comme .htm, .js ou .jpg ne sont pas protégés par défaut. Pour les sécuriser, configurez IIS pour que ces extensions soient traitées par aspnet_isapi.dll. Cela force l’authentification même sur les ressources statiques.

7. Implémentation du Single Sign-On (SSO)

Pour que plusieurs applications partagent une session unique, elles doivent partager les mêmes clés de chiffrement. Ajoutez dans Web.config :

<machineKey 
   validationKey="AD117F2F286CDCB15A9D1D4535E16DB0248026939..." 
   decryptionKey="3C89AE62AD117F2F286CDCB15A9D1D4535E16DB0248026939" 
   validation="SHA1" />

Les deux applications doivent avoir exactement les mêmes valeurs pour validationKey, decryptionKey et validation. De plus, le nom du cookie (name dans <forms>) doit être identique.

8. Utilisation des cookies dans ASP.NET

Création d’un cookie personnalisé :

HttpCookie cookie = new HttpCookie("userPrefs");
cookie["theme"] = "dark";
cookie.Expires = DateTime.Now.AddDays(7);
Response.Cookies.Add(cookie);

Lecture d’un cookie :

string theme = Request.Cookies["userPrefs"]["theme"];

9. Cookie persistant pour l'authentification

Un cookie d’authentification persistant peut être créé manuellement via FormsAuthenticationTicket et Encrypt. Veillez à définir correctement la propriété Expires du cookie et son chemin (Path).

Étiquettes: ASP.NET C# authentication forms authentication single sign-on

Publié le 22 octobre à 16h48