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.
2012
12
Ottobre
Come mandare in crash Google Immagini
Maurizio Ceravolo
Casualmente abbiamo scoperto una procedura che manda sistematicamente in errore Google Immagini. In 3 semplici passi si arriva ad una pagina di errore.
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.
2011
19
Aprile
Cambiare l'indirizzo del proprio sito senza penalizzare il pagerank
Maurizio Ceravolo
Quando si decide di spostare il proprio sito ad un altro indirizzo occorre fare alcune operazioni per non perdere il pagerank guadagnato con tanto lavoro.
2010
22
Ottobre
Windows Phone 7, un nuovo contendente nella guerra mobile
Maurizio Ceravolo
Il nuovo sistema operativo mobile di casa Microsoft. Potenzialità e debolezze del nuovo prodotto.


Archivio Mensile Blog
Tag Cloud
analisi Apple copia Disney evoluzionismo digitale Facebook finanza Firefox geek Google Google+ humor innovazione libri Microsoft mobile Motori di ricerca social network social plugin video
Ultimi Post
I migliori di oggi
I più popolari del mese
Top post