Colonne vocale d’assistance d’ASP.NET
Comprendre le Ticket d’authentification de formulaires et de cookies
Pour personnaliser cette chronique selon vos besoins, nous souhaitons vous inviter à soumettre vos idées sur des sujets qui vous intéressent et des problèmes que vous voulez voir traités dans de futurs articles de la Base de connaissances et des chroniques Support Voice. Vous pouvez nous envoyer vos commentaires à l’aide de l’écran Ask For It . Il existe également un lien vers le formulaire au bas de cette colonne.
Introduction
Bienvenue dans la colonne d’assistance vocale ASP.NET de Microsoft ! Je suis Nilay B. Shah avec l’équipe de support de développement ASP.NET. J’ai travaillé avec prise en charge d’ASP.NET depuis plus d’un et demi ans. L’authentification par formulaires est vraiment une fonction d’authentification personnalisé. Cet article décrit certains problèmes que les utilisateurs ont trouvé une confus avec l’authentification par formulaires, tels que la relation entre le ticket d’authentification par formulaires et le cookie d’authentification de formulaires et leurs paramètres pertinents. J’aimerais remercier Jerry Orman, responsable technique pour l’équipe de prise en charge ASP.NET, pour son aide incroyable !
Certaines personnes se posent parfois des questions sur les « tickets » et les « cookies » des authentifications par formulaire, car ils sont étroitement liés. Je suis devenu sur des questions telles que : vous pouvez toute personne expliquer la différence entre la date d’expiration du cookie et la date d’expiration du ticket ? Lorsque le cookie expire, l’utilisateur sera redirigé vers la page d’ouverture de session. Que se passe-t-il lorsque le ticket expire ? Il vérifiera également le cookie expire ? Quel est SlidingUpdate effectivement mis à jour ?
Je me concentrerai sur ces deux aspects de l’authentification par formulaire dans cet article pour répondre aux questions suivantes :
-
Quel est le ticket d’authentification de formulaires et le cookie d’authentification des formulaires ? Comment ils sont liés ?
-
Quel est le rôle d’un ticket de l’authentification par formulaire ?
-
L’expiration du cookie et l’expiration du ticket associés ?
-
Comment fonctionne la plage d'expiration dans le cadre des tickets et formulaires d'authentification ?
-
Dans la propriété de délai d’expiration du cookie d’authentification de formulaires et de ticket d’authentification de formulaires peut être définie ?
-
Scénario du problème : l’authentification de formulaires peut expirer avant la valeur de l’attribut du délai d’attente qui est définie dans le fichier de configuration
Quel est le ticket d’authentification de formulaires et le cookie d’authentification des formulaires ? Comment ils sont liés ?
Cookie d’authentification Forms est rien d’autre que le conteneur de ticket d’authentification de formulaires. Le ticket est passé en tant que la valeur du cookie d’authentification forms avec chaque demande et est utilisé pour identifier un utilisateur authentifié par l’authentification par formulaires, sur le serveur.
Toutefois, si vous choisissez l’authentification par formulaire sans cookie, le ticket est passé dans l’URL dans un format crypté. L’authentification par formulaire sans cookie est utilisée parce que parfois les navigateurs client bloquent les cookies. Cette fonction est introduite dans le Microsoft.NET Framework 2.0.
Pour plus d’informations, visitez le site Web de Microsoft Developer Network (MSDN) à l’adresse suivante :
Quel est le rôle d’un ticket de l’authentification par formulaire ?
Le ticket d’authentification par formulaires est utilisé pour indiquer à l’application ASP.NET qui vous êtes. Ainsi, le ticket est bloc de construction de la sécurité de l’authentification formulaires.
Le ticket est crypté et signé à l’aide de l’élément de configuration < machineKey > du fichier Machine.config du serveur. ASP.NET 2.0 utilise le decryptionKey et le nouvel attribut de déchiffrement de l’élément < machineKey > pour crypter les tickets d’authentification de formulaires. L’attribut de déchiffrement vous permet de spécifier l’algorithme de cryptage à utiliser. ASP.NET 1.1 et 1.0 utiliser le cryptage 3DES, qui n’est pas configurable. Falsification de la valeur du ticket est déterminée par un échec de décrypter le ticket sur le serveur. Par conséquent, l’utilisateur sera être redirigé vers la page d’ouverture de session.
Si l’application est déployée dans une batterie de serveurs Web, il se peut que vous devez vous assurer que les fichiers de configuration sur chaque serveur partagent la même valeur pour les attributs validationKey et decryptionKey dans la balise < machineKey > , qui sont respectivement utilisées pour le déchiffrement du ticket et de hachage. Vous devez le faire, car vous ne peut pas garantir le serveur qui gère les demandes successives. Pour plus d’informations sur les considérations de déploiement de batterie de serveurs Web et de cryptage de FormsAuthenticationTicket , visitez le site Web MSDN suivant :
http://msdn2.microsoft.com/en-us/library/ms998288.aspxParcours des méthodes pour générer des clés manuellement, vous pouvez trouver dans les articles suivants de la Base de connaissances Microsoft :
312906 comment créer des clés à l’aide de Visual C# .NET pour utiliser l’authentification par formulaire
313091 comment créer des clés à l’aide de Visual Basic .NET pour utiliser l’authentification par formulaire
Les tickets d’authentification Forms peuvent être générés manuellement à l’aide de la classe FormsAuthenticationTicket . Pour plus d’informations, visitez le site Web MSDN suivant :
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx
L’expiration du cookie et l’expiration du ticket associés ?
Dans le cas d’un cookie non persistant, si le ticket a expiré, cookie expirera également et l’utilisateur sera redirigé vers la page d’ouverture de session. De l’autre côté, si le ticket est marqué comme permanent, où le cookie est stocké dans la zone client, navigateurs peuvent utiliser le même cookie d’authentification pour se connecter au site Web de n’importe quel moment. Toutefois, nous pouvons utiliser la méthode FormsAuthentication.SignOut pour supprimer persistants ou les cookies non persistants explicitement.
Pour plus d’informations sur la méthode FormsAuthentication.SignOut , visitez le site Web MSDN suivant :
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication.signout.aspxAvec l’authentification par formulaire sans cookies, si le navigateur est fermé, le ticket est perdu et un nouveau ticket est généré lors de la prochaine demande.
Comment fonctionne-t-il coulissant d’expiration dans le cadre du ticket d’authentification de formulaires et formulaires du cookie d’authentification ?
L’expiration décalée fonctionne exactement de la même manière !
Nous prenons un exemple : si la page d’ouverture de session est accessible à 5 h 00:00:00 PM, il doit se terminer à 5:10 00:00:00 PM si l’attribut de délai d’expiration est 10 et l’attribut slidingExpiration est défini sur TRUE. Désormais, si une page Web est consultée à 5:05 00:00:00 PM, les cookies et le délai seront ramenés à 5:15 00:00:00 PM.
Remarque Si la page Web est consultée avant la moitié de l'écoulement de ce délai d'expiration, l'heure d'expiration du ticket ne se réinitialise pas. Exemple de premier plan, si n’importe quelle page Web est accessible à 5:04 00:00:00 PM, les cookies et le délai d’expiration de ticket ne seront pas réinitialisées.
Pour plus d’informations, visitez le site Web MSDN suivant :
http://msdn2.microsoft.com/en-us/library/1d3t3c61(vs.71).aspx
Où est-ce que la valeur de délai d'expiration du cookie d'authentification de formulaires et de ticket d'authentification de formulaires peut être définie ?
Il est le seul paramètre que vous pouvez apporter dans le fichier Web.config ou le fichier Machine.config, dans la balise < forms > . Cette modification déterminera le délai d’authentification de formulaires dans le contexte d’un ticket ou un cookie, sauf si le ticket est généré manuellement.
<!--forms Attributes:
name="[cookie name]" - Sets the name of the cookie used for Forms Authentication.
loginUrl="[url]" - Sets the URL to redirect client to for authentication.
protection="[All|None|Encryption|Validation]" - Sets the protection mode for data in cookie.
timeout="[minutes]" - Sets the duration of time for cookie to be valid (reset on each request).
path="/" - Sets the path for the cookie.
requireSSL="[true|false]" - Should the forms authentication cookie be sent only over SSL?
slidingExpiration="[true|false]" - Should the forms authentication cookie and ticket be reissued if they are about to expire?
-->
Pour plus d’informations, visitez le site Web MSDN suivant :
http://msdn2.microsoft.com/en-us/library/1d3t3c61.aspxSi le ticket est généré manuellement à l’aide de la classe FormsAuthenticationTicket , le délai d’attente peut être définie via l’attribut Expiration . Cette valeur remplace la valeur d’attribut de délai d’attente spécifiée dans les fichiers de configuration.
Pour plus d’informations sur les membres de FormsAuthenticationTicket , visitez le site Web MSDN suivant :
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket_members.aspx
Scénario du problème : l’authentification de formulaires peut expirer avant la valeur de l’attribut du délai d’attente qui est définie dans le fichier de configuration
Si le ticket d’authentification par formulaires est généré manuellement, la propriété de délai d’expiration du ticket remplacera la valeur qui est définie dans le fichier de configuration. Par conséquent, si cette valeur est inférieure à la valeur dans le fichier de configuration, les formulaires de ticket d’authentification expire avant que le fichier de configuration timeout attribut valeur et vice versa. Par exemple, supposons que l’attribut dedélai d’attente < forms >est défini sur 30 dans le fichier Web.config et que la valeur d’Expiration du ticket est définie à 20 minutes. Dans ce cas, le ticket d’authentification par formulaires expire au bout de 20 minutes, et l’utilisateur devra se connecter à nouveau après que.
Liens connexes
Résoudre les problèmes de 910439 l’authentification par formulaires
891032 dépannage ASP.NET
301240 comment implémenter l’authentification basée sur les formulaires dans votre application ASP.NET à l’aide de C# .NET
308157 comment implémenter l’authentification basée sur les formulaires dans votre application ASP.NET à l’aide de Visual Basic .NET
J’espère que vous avez trouvé ces informations utiles dans certaines de la confusion impliquée dans un cookie et le ticket d’authentification de formulaires ASP.NET d’accélération. N’oubliez pas que les colonnes de Support Voice sont pour vous ! Comme toujours, n’hésitez à soumettre des idées sur des sujets que vous souhaitez traités dans de futurs des colonnes ou dans la Base de connaissances Microsoft à l’aide de la
Formulaire Ask For It .