Tiempo de espera de autenticación de formularios vs sesión Tiempo de espera de estado

139

Tengo un código que estoy revisando con respecto a los tiempos de espera de sesión del sitio web. En web.config me encontré con este código.

 <authentication mode="Forms">
  <forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" />
</authentication>

<sessionState timeout="30" />

¿Alguien sabe si uno tiene un precedente sobre el otro y en qué se diferencian? Gracias.

Lucky Luke2
fuente
Posible duplicado de Forms Authentication Timeout vs Session Timeout
Hüseyin Yağlı el

Respuestas:

226

Son cosas diferentes. El valor de Tiempo de espera de autenticación de formularios establece la cantidad de tiempo en minutos que la cookie de autenticación se establece como válida, lo que significa que después de valuevarios minutos, la cookie caducará y el usuario ya no se autenticará; se los redirigirá al inicio de sesión página automáticamente. El slidingExpiration=truevalor básicamente dice que mientras el usuario haga una solicitud dentro del valor de tiempo de espera, continuará siendo autenticado (más detalles aquí ). Si configura slidingExpiration=falsela autenticación, la cookie caducará después de valuevarios minutos, independientemente de si el usuario realiza una solicitud dentro del valor de tiempo de espera o no.

El SessionStatevalor de tiempo de espera establece la cantidad de tiempo que se requiere un proveedor de estado de sesión para mantener los datos en la memoria (o cualquier almacén de respaldo que se esté utilizando, SQL Server, OutOfProc, etc.) para una sesión en particular. Por ejemplo, si coloca un objeto en la sesión utilizando el valor de su ejemplo, estos datos se eliminarán después de 30 minutos. El usuario aún puede estar autenticado, pero los datos en la sesión ya no pueden estar presentes. El Session Timeoutvalor siempre se restablece después de cada solicitud.

Ícaro
fuente
26
Una aclaración: el tiempo de espera de autenticación de formularios establece el tiempo de vencimiento del ticket, no necesariamente para la cookie donde se puede almacenar el ticket. Es posible que la cookie no tenga tiempo de caducidad (se llama confusamente una cookie de sesión, lo que significa que dura hasta que el usuario cierre el navegador), o puede que ni siquiera haya una cookie (autenticación de formularios "sin cookies"). En el caso de una cookie persistente, la autenticación de formularios establece el vencimiento de la cookie y el vencimiento del ticket al mismo tiempo.
bmode
13
Otra aclaración de MSDN: "Para evitar un rendimiento comprometido y evitar múltiples advertencias del navegador para los usuarios que tienen activadas las advertencias de cookies, la cookie se actualiza cuando ha transcurrido más de la mitad del tiempo especificado". Por lo tanto, el tiempo de espera de la cookie solo se restablece si está a la mitad. De ahí la sugerencia de establecerlo en 2 veces el tiempo de espera de la sesión.
user917170
21

El valor slideExpiration = true básicamente dice que después de cada solicitud realizada, el temporizador se restablece y siempre que el usuario realice una solicitud dentro del valor de tiempo de espera, continuará siendo autenticado.

Esto no es correcto. El tiempo de espera de la cookie de autenticación solo se restablecerá si ha transcurrido la mitad del tiempo de espera.

Ver por ejemplo https://support.microsoft.com/de-ch/kb/910439/en-us o https://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session -se acabó el tiempo/

Silvan Hofer
fuente
18

Por lo que entiendo, son independientes entre sí. Al mantener el tiempo de espera de la sesión menor o igual al tiempo de espera de la autenticación, puede asegurarse de que las variables de sesión específicas del usuario no persistan después de que la autenticación haya agotado el tiempo de espera (si eso es lo que le preocupa, lo que creo que es normal al preguntar esto) pregunta). Por supuesto, tendrá que manejar manualmente la eliminación de las variables de sesión al cerrar sesión.

Aquí hay una respuesta decente que puede responder a su pregunta o al menos señalarle en la dirección correcta:

Desequilibrado
fuente
7

La diferencia es que uno (Tiempo de espera de formularios) tiene que ver con la autenticación del usuario y el otro (Tiempo de espera de sesión) tiene que ver con cuánto tiempo se almacenan los datos almacenados en caché en el servidor. Por lo tanto, son cosas muy independientes, por lo que una no tiene prioridad sobre la otra.

Karl Anderson
fuente
5
      <sessionState timeout="2" />
      <authentication mode="Forms">
          <forms name="userLogin" path="/" timeout="60" loginUrl="Login.aspx" slidingExpiration="true"/>
      </authentication>

Esta configuración me envía a la página de inicio de sesión cada dos minutos, lo que parece controlar las respuestas anteriores.

shlasasha
fuente
1
Eso podría suceder si la información relacionada con el inicio de sesión se almacena en variables de sesión y cuando eso se borra, redirige al inicio de sesión. Entonces, ¿depende del código?
Steve
0

Para cualquiera que se encuentre con esta pregunta, consulte esta documentación de MS: tiene muy buenos detalles sobre la configuración del tiempo de espera de autenticación de formularios.

Este documento explica en detalle sobre el comentario que bmode está haciendo en la respuesta aceptada, sobre la cookie persistente (sesión frente a caducidad)

https://docs.microsoft.com/en-us/aspnet/web-forms/overview/older-versions-security/introduction/forms-authentication-configuration-and-advanced-topics-cs#specifying-the-tickets- valor de tiempo de espera

Naren
fuente