2009-10-01 5 views
1

Je suis encore un peu confus au sujet de quelque chose à propos de FormsAuthenticationTicket et le conteneur de cookie réel.Que peut-on définir dans FormsAuthenticationTicket?

  1. Qu'est-DateExpiration en FormsAuthenticationTicket() référence? Est-ce quand le cookie meurt? Est-ce que c'est combien de temps l'utilisateur peut rester connecté sans aucune action active (c'est-à-dire timeout)?

  2. <forms loginUrl="~/Account/LogOn" 
         protection="All" 
         timeout="20160" 
         name="test" 
         path="/" 
         requireSSL="false" 
         slidingExpiration="false" 
         defaultUrl="default.aspx" 
         cookieless="UseDeviceProfile" 
         enableCrossAppRedirects="false" /> 
    

    C'est ce qui est dans ma configuration web. Maintenant, est-ce que l'un d'entre eux est réglé automatiquement sur le cookie? Par exemple, puis-je saisir dans le champ name ce que je dois saisir lorsque je prépare mon cookie?

    HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); 
    

    Mais qu'en est mise en protection (quel qu'il soit), timeout, slidingExpiration, enableCrossAppRedirects, cookieless etc.? Je ne vois pas de propriétés pour les définir. Sont-ils automatiquement pris du webconfig ou quoi?

  3. Quelle est la différence entre DateExpiration défini dans le FormsAuthTicket et celui que vous avez défini pour le cookie (authCookie.Expires)?

Merci

Répondre

3
  1. FormsAuthenticationTicket.Expiration est le moment où le billet expire. La date/l'heure d'expiration du ticket est stockée dans le ticket chiffré, elle est donc indépendante de l'heure d'expiration du cookie. Notez que le client peut voir et modifier l'heure d'expiration du cookie, mais ne doit pas être en mesure de modifier le ticket chiffré.

Il contrôle combien de temps l'utilisateur peut accéder au site sans réauthentifier.

  1. Les valeurs de web.config sont utilisées pour générer le ticket. Vous pouvez également créer votre propre ticket avec les valeurs souhaitées, le chiffrer et le stocker dans un cookie. Il existe un exemple de cela dans la documentation MSDN pour la classe FormsAuthenticationTicket.

MISE À JOUR

This MSDN article a d'info sur ce sujet. Si la protection est définie sur Tous dans votre fichier web.config, le ticket est chiffré à l'aide de l'algorithme spécifié sur l'élément machineKey. La valeur par défaut est SHA1 et AES selon this article.

Si vous souhaitez voir un ticket non crypté, vous pouvez définir protection = "None" dans votre fichier web.config, même si vous ne voulez normalement pas le faire dans une application de production.

Vous pouvez également utiliser un outil tel que Lutz Reflector pour examiner la source des classes FormsAuthentication et FormsAuthenticationTicket afin de mieux comprendre comment le ticket est généré.

+0

Alors qu'arriverait-il si vous définissiez la date d'expiration du cookie plus courte que la date d'expiration du ticket? Donc il utilise les valeurs de web.config pour la plupart? – chobo2

+0

Je me demandais aussi ce que la méthode Encrypt utilise encrytpion de toute façon pour formsAuthentication et où peut-elle être chagée si désiré? Aussi, comment pouvez-vous ajouter un cookie formAuthetnication sans le chiffrer? Je voulais voir à quoi cela ressemblerait s'il n'était pas encyrté mais je n'arrive pas à comprendre comment convertir le ticket en une chaîne de caractères afin de l'ajouter à un cookie. – chobo2

Questions connexes