Timeout autenticazione moduli vs timeout sessioneState


139

Ho un codice che sto esaminando per quanto riguarda i timeout della sessione del sito Web. Nel web.config mi sono imbattuto in questo codice.

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

<sessionState timeout="30" />

Qualcuno sa se uno ha la precedenza sull'altro e come sono diversi. Grazie.


Risposte:


226

Sono cose diverse. Il valore Timeout autenticazione moduli imposta la quantità di tempo in minuti in cui il cookie di autenticazione è impostato per essere valido, il che significa che dopo il valuenumero di minuti il ​​cookie scadrà e l'utente non sarà più autenticato: verranno reindirizzati all'accesso pagina automaticamente. Il slidingExpiration=truevalore dice sostanzialmente che finché l'utente fa una richiesta entro il valore di timeout, continuerà ad essere autenticato (maggiori dettagli qui ). Se si imposta slidingExpiration=falseil cookie di autenticazione scadrà dopovalue numero di minuti indipendentemente dal fatto che l'utente faccia una richiesta entro il valore di timeout o meno.

Il SessionStatevalore di timeout imposta il periodo di tempo necessario a un provider dello stato della sessione per conservare i dati in memoria (o qualunque archivio di backup venga utilizzato, SQL Server, OutOfProc, ecc.) Per una sessione specifica. Ad esempio, se si inserisce un oggetto in Sessione utilizzando il valore nell'esempio, questi dati verranno rimossi dopo 30 minuti. L'utente può ancora essere autenticato ma i dati nella sessione potrebbero non essere più presenti. Il Session Timeoutvalore viene sempre ripristinato dopo ogni richiesta.


26
Un chiarimento: il timeout di autenticazione dei moduli imposta il tempo di scadenza del biglietto non necessariamente per il cookie in cui il biglietto può essere memorizzato. Il cookie potrebbe non avere alcun tempo di scadenza (chiamato in modo confuso un cookie di sessione, il che significa che dura fino a quando l'utente chiude il browser), oppure potrebbe non esserci nemmeno un cookie (autenticazione dei moduli "senza cookie"). Nel caso di un cookie persistente, l'autenticazione dei moduli imposta la scadenza del cookie e la scadenza del ticket allo stesso tempo.
Data

13
Un altro chiarimento di MSDN: "Per prevenire prestazioni compromesse ed evitare più avvisi del browser per gli utenti che hanno attivato gli avvisi sui cookie, il cookie viene aggiornato quando è trascorso più della metà del tempo specificato." Quindi il timeout dei cookie viene ripristinato solo se è a metà. Da qui il suggerimento di impostarlo su 2x il timeout della sessione.
user917170,

21

Il valore scorrevoleExpiration = true sta sostanzialmente dicendo che dopo ogni richiesta fatta, il timer viene resettato e finché l'utente fa una richiesta entro il valore di timeout, continuerà ad essere autenticato.

Questo non è corretto Il timeout del cookie di autenticazione verrà ripristinato solo se è trascorsa metà del timeout.

Vedi ad esempio https://support.microsoft.com/de-ch/kb/910439/en-us o https://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session -tempo scaduto/


18

Da quello che capisco sono indipendenti l'uno dall'altro. Mantenendo il timeout della sessione minore o uguale al timeout di autenticazione, è possibile assicurarsi che eventuali variabili di sessione specifiche dell'utente non siano persistenti dopo il timeout dell'autenticazione (se questa è la tua preoccupazione, che ritengo sia quella normale quando chiedi questo domanda). Ovviamente, dovrai gestire manualmente lo smaltimento delle variabili di sessione al momento del logout.

Ecco una risposta decente che può rispondere alla tua domanda o almeno indirizzarti nella giusta direzione:


7

La differenza è che uno (Timeout moduli) ha a che fare con l'autenticazione dell'utente e l'altro (Timeout sessione) ha a che fare con il tempo di conservazione dei dati memorizzati nella cache sul server. Quindi sono cose molto indipendenti, quindi l'una non ha la precedenza sull'altra.


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

Questa configurazione mi invia alla pagina di accesso ogni due minuti, il che sembra invertire le risposte precedenti


1
Ciò potrebbe accadere se le informazioni relative all'accesso sono archiviate nelle variabili di sessione e quando ciò viene cancellato, reindirizza all'accesso. Quindi dipende dal codice?
Steve,

0

Per chiunque si imbatta in questa domanda, fare riferimento a questa documentazione di MS - ha davvero buoni dettagli per quanto riguarda l'impostazione Timeout autenticazione Forms.

Questo documento spiega in dettaglio il commento che bmode sta facendo nella Risposta accettata - sul Cookie persistente (Sessione vs Scadenza)

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.