policies net cookie asp and asp.net asp.net-mvc cookies cross-platform forms-authentication

asp.net - net - Compartir una cookie entre dos sitios web en el mismo dominio.



net core authorization cookie (2)

Aquí está la situación:

Estoy tratando de compartir una cookie (autenticación de formularios) entre los sitios web.

No estoy utilizando la autenticación de formularios per se. Estoy usando los métodos integrados (Encriptar, Descifrar, etc.), pero estoy configurando mi propia cookie personalizada.

Cuando configuro la cookie en uno de los sitios web, los otros ven la cookie, pero no pueden descifrarla. El error es el genérico "Error ocurrido durante una operación criptográfica".

Lo que he asegurado:

  1. La cookie tiene el dominio configurado en "example.com" (lo que significa que los subdominios pueden acceder. La prueba es que el otro sitio web puede "ver" la cookie).
  2. Ambos sitios web comparten la misma clave de máquina. El web.config para ambos tiene el mismo valor para decryptionKey y validationKey.
  3. La versión del ticket de autenticación de formularios y el nombre de la cookie son los mismos en ambos sitios web.
  4. La ruta se establece en "/".

He hecho esto antes y funciona bien, pero en ese escenario ambas aplicaciones compartían el mismo código base.

En este caso, son aplicaciones separadas. Esto se debe a que estoy creando un prototipo de una solución en la que dos aplicaciones independientes de la plataforma en el mismo dominio de nivel superior pueden compartir una cookie de autenticación.

¿Alguien puede decirme lo que me falta o proporcionar una solución alternativa?

He leído todas las preguntas relacionadas, pero la respuesta es generalmente 2) arriba.


Cuando crea una nueva aplicación ASP.NET 4.5 (por ejemplo, ASP.NET MVC 4), la siguiente línea se agrega a web.config:

<httpRuntime targetFramework="4.5" />

Esto no estaba presente en mi otra aplicación, posiblemente porque mi otra aplicación era una aplicación ASP.NET 3.5 que se actualizó a 4.5.

Eliminar esa línea en la nueva aplicación web ASP.NET solucionó el problema.

Creo que esto se debe al valor del modo de compatibilidad: http://msdn.microsoft.com/en-us/library/system.web.configuration.machinekeysection.compatibilitymode.aspx

Marco45. Las mejoras criptográficas para ASP.NET 4.5 están vigentes. Este es el valor predeterminado si el archivo web.config de la aplicación tiene el atributo targetFramework del elemento httpRuntime establecido en "4.5".

No estoy seguro de saber cómo eliminar esa línea resolvió el problema. Supongo que la aplicación uno tiene un modo de compatibilidad diferente, ya que no tenía ese elemento httpRuntime .