Le partage d'un cookie entre deux sites sur le même domaine
Voici la situation:
- UN site web, ASP.NET MVC 4 web application. Domaine: http://a.example.com
- Site B, ASP.NET MVC 4 web application. Domaine: http://b.example.com
J'essaie de partager un cookie (authentification par formulaires) entre les sites web.
Je ne suis pas en utilisant l'Authentification par Formulaires per se. Je suis en utilisant les méthodes intégrées (Crypter, Décrypter, etc), mais je suis mon propre témoin.
Quand j'ai mis le cookie sur l'un des sites, les autres voit le cookie, mais ne peut pas le déchiffrer. L'erreur est le générique de "l'Erreur s'est produite lors d'une opération de chiffrement".
Ce que j'ai assuré:
- Le cookie le domaine est défini à "example.com" (ce qui signifie que les sous-domaines peuvent accéder. Preuve en est l'autre site ne peut "voir" le cookie).
- Les deux sites partagent la même clé de l'ordinateur. Le web.config pour les deux a la même valeur pour la decryptionKey et validationKey.
- Les formulaires de ticket d'authentification version et le nom du cookie sont les mêmes dans les deux sites.
- Le chemin est "/".
J'ai fait cela avant et il fonctionne très bien, mais dans ce scénario, les deux applications ont été le partage de la même base de code.
Dans ce cas, ils sont séparés des applications. C'est parce que je suis le prototypage d'une solution où les deux indépendant de la plateforme des applications sur le même domaine de premier niveau peuvent partager un cookie d'authentification.
Quelqu'un peut me dire ce que je manque, ou de fournir une solution alternative.
J'ai lu toutes les questions connexes, mais la réponse est généralement de 2) ci-dessus.
Vous devez vous connecter pour publier un commentaire.
Lorsque vous créez un nouveau ASP.NET 4.5 e.g ASP.NET MVC 4) de l'application, la ligne suivante est ajoutée sur le web.config:
Ce n'était pas présente dans mon autre application, peut-être parce que mon autre application était un ASP.NET 3.5 application qui a été mis à jour à 4,5.
Retrait de cette ligne de la nouvelle ASP.NET application web résolu le problème.
Je pense que cela est dû au mode de compatibilité valeur:
http://msdn.microsoft.com/en-us/library/system.web.configuration.machinekeysection.compatibilitymode.aspx
Pas sûr que j'comment enlever cette ligne a résolu le problème. Je suppose que l'application a un autre mode de compatibilité, car il n'y a pas eu
httpRuntime
élément.targetFramework
attribut, les autres (mis à jour il y a un moment de .NET 3.5) n'a pas. L'ajout de l'attribut dans la deuxième site web résolu le problème.La Meilleure façon de gérer cela est de faire machinekey décryptage de revenir à Framework20SP2
De cet article : http://msdn.microsoft.com/en-us/library/system.web.configuration.machinekeysection.compatibilitymode.aspx
Juste à ajouter que l'attribut machinekey dans votre .net 4.5 application
vous n'aurez pas besoin de retirer targetFramework="4.5" de httpruntime maintenant.