2013-03-22 11 views
7

Per quanto tempo posso utilizzare un cookie di sola sessione ? Ho un'applicazione client in cui sono autenticato in un sito di SharePoint e sto utilizzando i cookie per navigare attraverso i siti secondari. Sono salvando il cookie e riutilizzando le intestazioni per accedere al sito in un secondo momento senza eseguire nuovamente l'autenticazione. Non è impostata alcuna data di scadenza. Quanto tempo durerà il cookie e quando dovrò autenticarmi di nuovo?Quanto tempo dura un cookie di sola sessione? Quando devo riautenticare

risposta

-1

Se non c'è scadenza, sarà intorno finché il browser non viene ucciso. Normalmente in ASP.Net i cookie di sessione sono impostati con un timeout di 20 minuti. Di solito è abbastanza buono. A seconda della tua app, potresti volere anche un timer javascript. Altrimenti il ​​browser non capirà quando si disconnette fino a quando non si verifica un aggiornamento della pagina e i dati sensibili possono essere esposti. Vedrai questa implementazione su qualsiasi sito di banking online.

(Modifica per chiarire da downvote) I cookie di sessione, infatti, restano in attesa fino alla chiusura del browser. Si può guardare in su qui: http://www.allaboutcookies.org/cookies/cookies-the-same.html

La risposta di cui sopra è corretta anche in che alcuni browser più recenti si riprenderanno i cookie di sessione dopo un crash/chiusura.

@Grinn, si ottiene un buon punto in grado del biglietto. Quando si utilizza l'autenticazione di moduli ASP.Net, un ticket crittografato viene inserito nel cookie di sessione. Il cookie può essere ancora presente per quanto riguarda il browser, ma se il datestamp all'interno del ticket è scaduto, verrà considerato non valido.

Se si utilizza una parvenza di autenticazione di Forms con Sharepoint, è consigliabile scrivere semplicemente il proprio provider di appartenenza in grado di decifrare il ticket nel cookie, ma ignorare se il datestamp è scaduto. Building Custom Membership Provider

+0

sto autenticato al sito punto di condivisione dal mio cliente application.I utilizzare lo stesso cookie tutto il tempo senza l'autenticazione di nuovo. Sto ottenendo l'account bloccato a volte. Quindi la mia domanda il server avrebbe un timeout per il cookie ?? – rogerstone

+0

Molto poco di questo è vero. I cookie di sessione in realtà non restano in attesa per sempre fino a quando il browser non viene ucciso. L'autenticazione predefinita * ticket * timeout per ASP.Net è di 30 minuti, che in realtà non ha alcun effetto sulla scadenza dei cookie di sessione - è solo che il valore del cookie di sessione non sarà considerato valido dal server quando il la pagina è aggiornata. Un aggiornamento della pagina dopo che una sessione è scaduta non può in alcun modo causare l'esposizione di dati sensibili. – Grinn

+0

La tua risposta/downvote sembra confondere il cookie di autenticazione con i vecchi cookie di sessione ASP.La mia risposta si riferisce a come si comportano i cookie di sessione del browser, a differenza dei cookie permanenti (con scadenza). Il tuo punto sulla scadenza del biglietto, tuttavia, è ben fatto. – goosemanjack

6

La scadenza dei cookie di sessione varia da browser a browser. Non sono riuscito a trovare alcun tipo di riferimento che fornisse le specifiche attuali per browser. Un tempo i cookie di sessione venivano distrutti alla chiusura del browser, ma alcuni browser ora dispongono di impostazioni che, se abilitate, fanno sì che i cookie di sessione persistano dopo la chiusura del browser. Ad esempio, Firefox "All'avvio di Firefox: mostra le mie finestre e schede dall'ultima volta" farà sì che ciò accada, in qualche modo sorprendentemente. Lo stesso vale per "All'avvio: continua da dove mi sono interrotto" in Chrome.

Non mi interessa veramente SharePoint, quindi non l'ho usato da un po ', ma come ricordo utilizza l'autenticazione di moduli ASP.Net, estraendo la configurazione da web.config proprio come qualsiasi altro ASP.Net luogo. Detto questo, non sei davvero interessato al timeout del tuo cookie. Ciò che ti interessa è il timeout del tuo token di sessione lato server, vale a dire, per quanto tempo i dati contenuti in detto cookie verranno riconosciuti dal server. Che è impostato dalla proprietà di timeout nel tag forme del file web.config per un'applicazione ASP.Net:

<system.web> 
    <!-- ... --> 
    <authentication mode="Forms"> 
     <forms timeout="2880" /> 
    </authentication> 
    <!-- ... --> 
</system.web> 
+0

Grazie per la risposta.Purtroppo non sono in grado di convalidare questo momento.Avviso – rogerstone

+0

Ero così confuso perché i miei cookie di sessione non venivano mai eliminati in Chrome. È a causa della tua risposta: "All'avvio: continua da dove mi sono interrotto". Ha senso ora, grazie! –