IIS6 & IIS7 formes auth compatibilité
De fond:
J'ai deux applications web, mis en place sur des serveurs web différents, qui sont actuellement les deux IIS6. Application 1 (A1 - a1.domain.com) utilise les formes auth cookie fixés en application 2 (A2 - a2.domain.com).
Dans A1 web.config j'ai:
<authentication mode="Forms">
<forms name=".ASPXAUTH" domain="domain.com" protection="All" path="/" loginUrl="http://a2.domain.com/login.aspx" timeout="60" />
</authentication>
En A2 web.config j'ai:
<authentication mode="Forms">
<forms name=".ASPXAUTH" domain="domain.com" protection="All" path="/" loginUrl="login.aspx" timeout="60" />
</authentication>
Ces deux applications aussi partager machineKey valeurs dans le web.config
Cela fonctionne parfaitement sans aucun problème.
Problème:
Je me suis mise à niveau A1 à utiliser .NET 4.0 et exécuter dans IIS7, et maintenant l'partagé formes d'authentification ne fonctionne pas. Je suis toujours redirigé vers la bonne page de connexion sur A2, et je vois qu'il définit la auth cookie, mais quand je vais à A1 l'authentification échoue avec l'erreur suivante (à partir de l'Observateur d'Événements):
Formes échec de l'authentification de la demande. La raison: Le billet fourni n'est pas valide.
J'ai essayé:
- La configuration de mise à niveau de la version de A1 dans IIS6 (cela a fonctionné - donc pas de problèmes de compatibilité entre les formes auth dans différents .NET versions dans IIS6)
- La configuration de mise à niveau A1 dans IIS7 à l'aide d'une connexion locale page c'est à dire copié de la page de login à partir de A2 à A1 et définir A1 loginUrl="login.aspx" (marche aussi)
Cela m'a laissé deviner qu'il y a de problème de compatibilité causés par l'auth cookie créé en vertu d'une IIS6 site utilisé pour authentifier les utilisateurs sous un IIS7 site.
Personne ne sait comment résoudre ce problème?
OriginalL'auteur Chris | 2010-11-25
Vous devez vous connecter pour publier un commentaire.
.NET 4.0, le moyen d'authentification des billets sont cryptées a changé. Si vous voulez être compatible avec les anciennes versions, vous pouvez définir la
ticketCompatibilityMode
attribut comme ceci:Le cookie d'authentification n'est pas créé par IIS, mais par ASP.NET. Donc la raison pour laquelle cela pourrait ne pas fonctionner est soit parce que vous n'avez pas la même machine clés, la
ticketCompatibilityMode
.NET 4.0 et enfin le dernier patch que Microsoft a publié à propos de l'Oracle de Rembourrage vulnérabilité dans ASP.NET: si vous l'avez installé sur un seul serveur et pas sur l'autre, il pourrait poser des problèmes.Installez le correctif de sécurité sur ma machine locale semble avoir fait le tour. Lire les infos autour de l'ticketCompatibilityMode il semble que cela fera une différence quand il s'agit de l'expiration du cookie de temps donc je vais garder ce qu'il y à trop. Grâce Darin!
OriginalL'auteur Darin Dimitrov