Authentification basée sur des formulaires
L'authentification basée sur des formulaires est un service d'authentification ASP.NET permettant aux applications de proposer leur propre interface utilisateur de connexion et d'effectuer leur propre vérification des informations d'authentification. ASP.NET authentifie les utilisateurs, en redirigeant les utilisateurs non authentifiés vers la page de connexion et en effectuant toute la gestion de cookies nécessaire. Ce tri d'authentification est une technique utilisée couramment par de nombreux sites Web.
Une application doit être configurée pour utiliser l'authentification basée sur des formulaires en affectant à <authentication> la valeur Forms et en refusant l'accès aux utilisateurs anonymes. L'exemple suivant illustre comment exécuter cette procédure dans le fichier Web.config de l'application souhaitée :
Les administrateurs se servent de l'authentification basée sur des formulaires pour configurer le nom du cookie à utiliser, le type de protection, l'URL de la page de connexion, la durée de validité du cookie et le chemin d'accès du cookie émis. Le tableau suivant contient les attributs valides pour l'élément <Forms>, qui est un sous-élément de l'élément <authentication>
| Attribut |
Description |
| loginUrl |
URL de connexion vers laquelle les utilisateurs non authentifiés sont redirigés. Elle peut se trouver sur le même ordinateur ou sur un ordinateur distant. Si elle se situe sur un ordinateur distant, les deux ordinateurs doivent utiliser la même valeur pour l'attribut decryptionkey. |
| name |
Nom du cookie HTTP à utiliser à des fins d'authentification. Remarquez que si plusieurs applications souhaitent utiliser les services d'authentification basés sur des formulaires sur un ordinateur unique, elles doivent configurer chacune une valeur de cookie unique. Afin d'éviter la création de dépendances dans les URL, ASP.NET utilise "/" comme valeur de Path lors de la définition de cookies d'authentification, de sorte qu'ils soient renvoyés à toutes les applications du site. |
| timeout |
Durée, exprimée en minutes entières, au terme de laquelle un cookie expire. La valeur par défaut est 30. L'attribut timeout est une valeur variable, expirant n minutes après la réception de la dernière demande. Afin d'éviter de nuire aux performances et d'empêcher l'affichage de plusieurs avertissements du navigateur (si vous avez activé les avertissements de cookies), le cookie est mis à jour lorsque plus de la moitié de la durée s'est écoulée. (Dans certains cas, cela peut entraîner une perte de précision.) |
| path |
Chemin d'accès à utiliser pour le cookie émis. La valeur par défaut est "/" afin d'éviter tout problème de correspondance de la casse dans les chemins d'accès, car les navigateurs respectent strictement la casse lorsqu'ils retournent des cookies. Les applications d'un environnement à serveur partagé doivent utiliser cette directive pour gérer les cookies privés. (Ils peuvent également spécifier le chemin d'accès au moment de l'exécution à l'aide des API pour émettre des cookies.) |
| protection |
Méthode utilisée pour protéger les données des cookies. Les valeurs valides sont les suivantes :
- All : Utilise à la fois la validation et le cryptage de données pour protéger le cookie. L'algorithme de validation des données configuré se base sur l'élément . Triple DES est utilisé pour le cryptage, s'il est disponible et si la clé est suffisamment longue (48 octets). All est la valeur par défaut (proposée).
- None : Utilisez cette valeur pour les sites qui ne recourent aux cookies que pour la personnalisation et possèdent des exigences de sécurité moins pointues. Vous pouvez désactiver le cryptage et la validation. Toutefois, soyez prudent si vous utilisez les cookies de cette manière, car ce paramètre assure les meilleures performances par rapport à de toutes les méthodes permettant d'effectuer la personnalisation à l'aide du .NET Framework.
- Encryption : Crypte le cookie à l'aide de TripleDES ou de DES, mais la validation des données n'est pas effectuée sur le cookie. Ce type de cookie peut être soumis à certaines attaques de texte brut.
- Validation : Ne crypte pas le contenu du cookie, mais valide le fait que les données du cookie n'ont pas été altérées en chemin. Pour créer le cookie, la clé de validation est concaténée dans une mémoire tampon avec les données du cookie et un MAC est calculé, puis ajouté au cookie sortant.
|
Une fois l'application configurée, vous devez fournir une page de connexion. L'exemple suivant illustre une page de connexion simple. Lorsque l'exemple est exécuté, il demande la page Default.aspx. Les demandes non authentifiées sont redirigées vers la page de connexion (Login.aspx), c'est-à-dire un formulaire simple vous invitant à spécifier une adresse électronique et un mot de passe. (Utilisez les informations d'authentification Username="jdoe@contoso.com" and Password="password".)
Une fois les informations d'authentification validées, l'application appelle les éléments suivants :
FormsAuthentication.RedirectFromLoginPage (UserEmail.Value, PersistCookie.Checked);
FormsAuthentication.RedirectFromLoginPage (UserEmail.Value, PersistCookie.Checked)
FormsAuthentication.RedirectFromLoginPage (UserEmail.Value, PersistCookie.Checked);
|
|
C#
|
VB
|
JScript
|
|
De cette manière, l'utilisateur est redirigé vers l'URL demandée à l'origine. Les applications qui ne souhaitent pas effectuer la redirection peuvent appeler soit FormsAuthentication.GetAuthCookie pour extraire la valeur du cookie, soit FormsAuthentication.SetAuthCookie pour joindre un cookie correctement crypté à la réponse sortante. Ces techniques peuvent être utiles pour les applications qui fournissent une interface utilisateur incorporée dans la page contenante ou qui souhaitent contrôler davantage l'endroit vers lequel les utilisateurs sont redirigés. Les cookies d'authentification peuvent être temporaires ou permanents ("persistants"). Les cookies temporaires ne sont conservés que pendant la durée de la session en cours du navigateur. Lorsque le navigateur est fermé, le cookie est perdu. Les cookies permanents sont enregistrés par le navigateur et renvoyés d'une session du navigateur à l'autre, à moins qu'ils soient explicitement supprimés par l'utilisateur.
Le cookie d'authentification utilisé par l'authentification par formulaires est constitué d'une version linéaire de la classe System.Web.Security.FormsAuthenticationTicket . Les informations comprennent le nom d'utilisateur (et non le mot de passe), la version de l'authentification par formulaires utilisée, la date d'émission du cookie et un champ pour les données facultatives propres à l'application.
Le code d'application peut révoquer ou supprimer des cookies d'authentification à l'aide de la méthode FormsAuthentication.SignOut. Cela permet de supprimer le cookie d'authentification, qu'il soit temporaire ou permanent.
Il est également possible de fournir des services d'authentification basée sur des formulaires avec la liste des informations d'authentification valides à l'aide de la configuration, comme le montre l'exemple suivant :
"GASDFSA9823598ASDBAD"/>
"ZASDFADSFASD23483142"/>
L'application peut ensuite appeler FormsAuthentication.Authenticate, en fournissant le nom d'utilisateur ainsi que le mot de passe, pour que ASP.NET vérifie les informations d'authentification. Les informations d'authentification peuvent être enregistrées en texte clair, ou encore sous la forme de hachages SHA1 ou MD5, selon les valeurs suivantes de l'attribut passwordFormat :
| Type de hachage |
Description |
| Clear |
Les mots de passe sont enregistrés en texte clair. |
| SHA1 |
Les mots de passe sont enregistrés sous la forme de résumés SHA1. |
| MD5 |
Les mots de passe sont enregistrés sous la forme de résumés MD5. |
|