Domanda

Mentre lavoravo con ASP.Net Forms Authentication mi sono imbattuto nel cookie .ASPXAUTH. Ho un paio di domande:

  • Qual è lo scopo di questo cookie?
  • Qual è la posizione di questo cookie?
È stato utile?

Soluzione

Il cookie ASPXAUTH viene utilizzato per determinare se un utente è autenticato.

Per quanto riguarda la posizione del cookie, dipende dal tuo browser. Se stai utilizzando Firefox puoi visualizzare il cookie facendo clic su Strumenti - > Opzioni - > Privacy. Quindi scorrere verso il basso fino al dominio ed espanderlo per vedere il cookie e il suo valore. Il valore viene crittografato utilizzando la chiave della macchina (che si trova nel file machine.config o web.config del server), quindi guardare il cookie sul client non fornirà realmente alcuna informazione. Puoi decrittografare / visualizzare il valore sul lato server usando:

HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];//.ASPXAUTH
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);

dove authTicket ha questi campi:

inserisci qui la descrizione dell'immagine

L'istruzione "ASPXAUTH è sostanzialmente utilizzata per mantenere lo stato della sessione ASP.NET" non è corretto. ASP.NET emette un cookie completamente diverso, denominato ASP.NET_SessionId, per tenere traccia dello stato della sessione.

Altri suggerimenti

In realtà il cookie .ASPXAUTH non ti dice esattamente quando l'utente è veramente autenticato. Quando l'utente si disconnette dall'app, il cookie .ASPXAUTH viene rimosso dal browser. Tuttavia, se torni al sito entro un breve periodo di tempo (con timeout del cookie di autenticazione modulo) e modifichi il nuovo cookie ASP.NET_SessionId con il seguente:

  • cambia " nome " campo da " ASP.NET_SessionId " a " .ASPXAUTH "
  • modifica " valore " da 24 char sessionID alla vecchia stringa di autenticazione 448 char

Dopo l'aggiornamento sarai in grado di assumere l'identità dell'utente autenticato senza ripetere l'autenticazione tecnica. (sempre assumendo che lo facciate entro il timeout specifico memorizzato nella stringa di autenticazione crittografata .ASPXAUTH)

Un buon blog spiega il problema più in dettaglio. Una possibile soluzione è associare .ASPXAUTH alla sessione ASP.

Se le interazioni di un utente con l'URL di accesso HTML hanno consentito al server TSWPP di stabilire l'identità dell'utente, il server remoto DOVREBBE generare un cookie che identifichi l'utente e consenta l'autenticazione al server. Il contenuto del cookie DOVREBBE essere firmato e crittografato. L'implementazione specifica di questo cookie, inclusi gli algoritmi di firma e crittografia, dipende dall'implementazione del server TSWPP, poiché è necessario solo il server per analizzare il contenuto del cookie. Se il server implementa il cookie, il cookie DEVE essere restituito in un payload HTTP con un tipo di contenuto di " application / x-msts-webfeed-login " ;.

http://msdn.microsoft.com/en-us/library/ ee920427.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top