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).