Blog
home > blog > Bug su Chrome con l'autenticazione di asp.net

Tag: bug, Chrome, .Net

Bug su Chrome con l'autenticazione di asp.net

In caso di autenticazione che si passa fra i subdomini di un sito, che ha una autenticazione .net, chrome periodicamente perde i cookie. Vediamo la soluzione.
di Maurizio Ceravolo
Purtroppo facendo questo lavoro (sviluppare software) ogni tanto capitano problemi che sembrano nascere dall'assurdo e a cui l'unica cosa da dire sarebbe : "Perché proprio a me?".

Ma fa parte di questo lavoro. Nella maggior parte dei casi il problema con cui ci si scontra è per colpa propria. Una banalità non considerata, una conoscenza del problema non corretta, uno sbagliato uso di una libreria. In qualche caso invece la colpa non è la propria, si deve subire il problema, e cercare di trovare un'alternativa. Questo perché le tecnologie che usiamo per sviluppare non sono a loro volta esenti da errori, bug e problemi.

Questo bug è stato per me uno dei problemi più rognosi da risolvere in carriera, ed essenzialmente per più motivi:
  • nessuna documentazione in proposito
  • alcune condizioni specifiche per realizzarsi
  • randomicità dell'apparizione del problema
  • difficoltà nella ripetizione per poter debuggare e porre delle correzioni
Le condizioni in cui si presentava il problema erano le seguenti:
  • Sito in HTTP ed autenticazione su dominio di terzo livello con HTTPS
  • Autenticazione standard .net con cookie di sessione criptato
  • Browser Chrome, con le versioni pubblicate negli ultimi mesi fino ad adesso
Quello che succedeva è che ad alcuni utenti, in maniera assolutamente randomica, l'autenticazione veniva persa subito dopo il login, e per motivi a me non conosciuti, era impossibile dopo quel momento far riconoscere più il cookie di sessione al browser, ne a farlo cancellare e ricreare. Tutto completamente bloccato. L'unica soluzione, ma inaccettabile, era cancellare tutti i cookie del browser dalle impostazioni dello stesso.

Bug Chrome
Bug di Chrome

La prima cosa che ho fatto è stato cercare su Google, ovviamente, ma non ho trovato nulla che facesse veramente al caso mio. Quello di più vicino che ho trovato sono stati due post sui forum di google. Questo e questo. In cui diversi utenti lamentano la perdita dei cookie e della sessione. Ed il suggerimento è di cancellare tutti i cookies dal browser. Ovviamente è inaccettabile dal punto di vista del sito. Ma per diverso tempo è stata l'unica soluzione che ho avuto in mano.

A questo punto non avendo alternative, ho provato rivedere tutto il codice, ho cercato di cancellare tutti i cookie prima di riautenticare, ho cambiato la logica di autenticazione. Il tutto molto frustrante, perché si doveva procedere alla cieca. Fai una modifica, la rilasci, aspetti due o tre settimane e vedi se qualcuno lamenta problemi e dopo ci riprovi.

Dopo mesi di prove, con qualche miglioramento, ma non una risoluzione completa, ho provato la logica di Sherlock Holmes: "Una volta eliminato l'impossibile, ciò che resta, per quanto improbabile, deve essere la verità."

Analizzando con fiddler gli header http che venivano passati da e per il browser, ho notato che il cookie di autenticazione criptato di .net aveva un nome un po' diverso da tutti quelli che vedevo. Si chiama .ASPXAUTH. Con il punto davanti. La scelta è sensata per evitare che un programmatore inavvertitamente scelga un nome che sovrascriva il cookie di autenticazione.

Una volta eliminato l'impossibile, ciò che resta, per quanto improbabile, deve essere la verità. Ma fosse che?
Un rapido giro in documentazione, e vedo come si cambia il nome del cookie su cui è memorizzata l'autenticazione. Scelgo un nome che non contenga il punto.

Rilascio.

Il problema ad ora, sembra essere risolto.

Obiettivamente un problema molto strano e rognoso. Non sono sicuro di tutte le condizioni per avere questo errore, se fosse il dominio di terzo livello, l'https o più probabilmente entrambe le cose. Data la scarsa ripetibilità, sarebbe molto lungo fare test per isolare completamente le cause di errore.

Certo che se uno volesse pensare male, potrebbe sembrare un dispettuccio verso Microsoft...., chi altri usa un punto all'inizio del nome di un cookie? :-)
Post correlati
2010
29
Ottobre
Il tag asp:ImageButton fa fallire la validazione XHTML
Maurizio Ceravolo
Asp.net produce tag xhtml validi, però l'ImageButton crea un errore per il W3C Validator. Vediamo un facile workaround.
2011
18
Agosto
Instant Pages e Web Analytics
Maurizio Ceravolo
Instant Pages su Chrome 13 permette in alcuni casi di azzerare i tempi di scaricamento delle pagine. Ma può contaminare i dati di Web Analysys.
2011
4
Agosto
Instant Pages su Chrome 13
Maurizio Ceravolo
Per Google la velocità è fondamentale. In Chrome 13 è presente una funzionalità che permette in alcuni casi di caricare una pagina in 0 secondi.
2010
13
Ottobre
Inviare fax da una applicazione usando .net
Maurizio Ceravolo
Descrizione di due opzioni per mandare fax attraverso una proprio applicazione: collegandosi ad un servizio esterno o usando WinFax in interoperabilità
2011
15
Febbraio
.net: instanziare un web service con certificato scaduto
Maurizio Ceravolo
Richiamare un web service sotto https con certificato scaduto porta l'applicazione a sollevare un eccezione. Vediamo come ignorarla e fruire lo stesso del servizio.


Archivio Mensile Blog
Tag Cloud
Apple Facebook finanza fisica geek Google Google+ gps humor infografica innovazione iPhone Microsoft Motori di ricerca ottimizzazione Programmazione social network Spazio sql video
Ultimi Post
I migliori di oggi
I più popolari del mese
Top post