Identidad Asp.net expira sesión Cookie

Estamos utilizando MVC 5.2 y elIdentidad ASP.NET El marco para la autenticación con una pantalla de autenticación de formulario (combinación de usuario y contraseña) y la identidad se conserva utilizando una cookie. Tengo configuración en mi método de inicio para el marco de Identity para establecer la caducidad de la cookie de autenticación en 30 días, esto funciona bien cuando el usuario selecciona 'recordarme' (IsPersistent = true). Cuando IsPersistent = false (el usuario elige no seleccionar 'Recordarme') se crea una cookie de sesión de forma predeterminada. Esta cookie de sesión funciona muy bien en Internet Explorer y también en Firefox, cuando el navegador se cierra, la cookie se pierde. En Chrome y Safari (y tal vez otros navegadores también) hay opciones para garantizar que las cookies de sesión no se pierdan, en este caso el usuario permanece conectado incluso cuando el navegador se cierra y se vuelve a abrir.

Me gustaría trabajar para garantizar que las cookies de sesión no se conserven para siempre, sino que se descarten en una hora. Podría darme cuenta de esto comprobando si la cuenta no está activa durante X minutos / horas y el usuario nunca eligió 'Recordarme', entonces la identidad del usuario se 'rechaza' con la próxima solicitud si transcurre ese lapso de tiempo.

¿Alguien ha creado una solución alternativa en su implementación de Identidad ASP.NET para garantizar que las cookies de sesión caduquen en el back-end después del tiempo X o tal vez haya una mejor manera de evitar esta limitación? ¿Tal vez sea posible hacer esto usando una implementación personalizada del Proveedor de autenticación de cookies o entregar una fecha / hora de vencimiento al reclamo del usuario que se puede verificar en algún lugar del proceso ValidateIdentity?

Cualquier idea sería genial. Gracias de antemano, -Igor

Editar - más información: Mi implementación de autenticación tiene 2 "modos" básicos (no puedo pensar en una palabra mejor en este momento). Mi implementación es para un simple formulario de nombre de usuario / contraseña con una casilla de verificación 'recordarme'. El valor de la casilla de verificación se pasa a la propiedad IsPersistent del objeto AuthenticationProperties que se pasa al método AuthenticationManager :: SignIn.

El usuario quiere "recordarme", que crea una cookie de larga duración con una caducidad de 30 días establecida mediante una caducidad deslizante. Esto permite al usuario permanecer autenticado entre las sesiones del navegador y no hay tiempo de espera debido a la inactividad, con la excepción de no visitar el sitio por más de 30 días. La configuración en mi método de inicio de Owin refleja que el tiempo de vencimiento de la cookie es de 30 días (CookieAuthenticationOptions.ExpireTimeSpan configurado en 30 días). Esto funciona independientemente de la plataforma del navegador (por lo que puedo decir).

El usuario no quiere "recordarme", lo que debería ser el comportamiento esperado es que se crea una cookie de sesión y cuando se cierra un navegador, la cookie de sesión se elimina del navegador. Estadebería asegúrese de que la próxima vez que se inicie el navegador, el usuario no esté autenticado. Esto es especialmente importante cuando un dispositivo compartido se usa como una computadora pública. El problema no es que todos los navegadores siempre eliminen las cookies de sesión, algunas las dejan a propósito si la configuración del navegador está habilitada (Chrome es un buen ejemplo). Una cookie de sesión no tiene una fecha / hora de vencimiento, por lo que CookieAuthenticationOptions.ExpireTimeSpan no tiene ningún efecto aquí. Aquí es donde busco consejos, ya que estoy seguro de que no puedo ser el primero en encontrar esto. Probablemente haya una manera de hacer que este comportamiento sea más seguro, ya que la alternativa es no hacer nada y posiblemente dejar una cookie de sesión (¡que nunca caduca!) En el navegador.

Consulte este enlace para obtener más detalles sobre Chrome y las cookies de sesión.

Respuestas a la pregunta(2)

Su respuesta a la pregunta