6

Ho qualche problema interessante che mi ha totalmente abbandonato.IE8 non applica i cookie su tutto il dominio in modo appropriato - solo su una macchina

Ho un codice di produzione che ho creato che legge un cookie token IBM LTPA impostato da una macchina gestita da un altro reparto, lo convalida e lo utilizza per accedere a un sistema gestito dal mio gruppo (impostando alcuni cookie speciali). Questo processo di single sign-on è completamente trasparente per l'utente finale e ha funzionato bene in produzione per diversi anni su tutti i browser.

Recentemente, ho notato che non funziona correttamente sulla mia macchina di sviluppo con IE8. Di recente ho eseguito l'aggiornamento da Vista a Windows 7. Non sono sicuro che questo non funzionasse sulla mia macchina prima o dopo l'aggiornamento, poiché è qualcosa che ha funzionato per così tanto tempo e non ho motivo di testarlo regolarmente. FireFox 3.5 e Chrome 4 dev su questa stessa macchina funzionano entrambi come previsto. IE6 su XP SP3 virtuale su questa macchina funziona correttamente. IE8 su più macchine a casa funziona bene (Windows Server 2008 e Windows 7).

Per scopi diagnostici, ho eliminato tutti i dati memorizzati nella cache dal mio dev IE8 (cache WinInet) per iniziare con una lavagna pulita. Ho licenziato Fiddler per tracciare il processo e determinare cosa non funzionava. Quello che ho trovato è stato piuttosto interessante, e non riesco a spiegarlo.

Dopo aver effettuato l'accesso al sito iniziale - consente di chiamarlo ltpa.domain.com, i cookie di sessione vengono spostati dal server come previsto con l'intestazione Set-Cookie. Verifico che il dominio sia correttamente impostato su .domain.com e che il percorso sia /. Tutte le richieste successive dal browser dopo l'accesso trasferiscono tutti i cookie sul server con ogni richiesta come previsto. In realtà, questo è un portale e vi sono alcuni contenuti aggiuntivi da, diciamo, portal.domain.com che vengono recuperati; tutti i cookie sono passati correttamente anche a quel server.

Ora per il bit interessante - quando faccio una richiesta a myserver.domain.com - i cookie a livello di dominio impostati da ltpa.domain.com non vengono inviati a myserver.domain.com, anche se essi dovrebbe essere. Il processo Single Sign-on reindirizza automaticamente a ltpa.domain.com se i cookie sono mancanti (e invia un cookie al client che il processo di login ltpa utilizza per reindirizzare) - il cookie a livello di dominio impostato da myserver non viene rinviato a ltpa.domain.com.

Ancora, questo solo si verifica su questa istanza di IE8 sulla mia macchina di sviluppo di cui sono a conoscenza. Questo processo viene utilizzato migliaia di volte al giorno con una base di utenti abbastanza ampia e non abbiamo ricevuto altri reclami da parte degli utenti finali, quindi nessuna indicazione che si tratti di un problema sistemico con IE8 o qualcosa del genere.

Il comportamento mi sembra che stia trattando myserver.domain.com e ltpa.domain.com come domini separati, anche se non lo sono.

Ci sono due punti di interesse che potrebbero essere degni di menzione - ma potrebbero essere delle false lamentele, come è sempre stato in questo modo, e non ha mai causato un problema.

  • DNS è un po 'funky qui. LTPA.domain.com risolve l'IP esterno. Tuttavia, myserver.domain.com risolve l'IP interno. Effettuando una ricerca inversa su quell'IP viene indicato il nome DNS interno, ad esempio myserver.internal.domain.com. Ho teorizzato che forse IE8 stava facendo una specie di ricerca inversa per prevenire attacchi basati su DNS - così ho modificato il mio file HOSTS e ho indirizzato myserver.domain.com all'IP esterno a scopo di test. Ho verificato in Fiddler che le richieste andavano all'IP esterno, ma non ha fatto alcuna differenza con i cookie. Non erano ancora passati.

  • In precedenza, myserver.domain.com era in "Siti attendibili" all'interno delle pagine di configurazione di sicurezza di WinInet di IE. L'ho rimosso e l'altro sito che c'era. Chiamiamo questa macchina, my2.domain.com; questa macchina per coincidenza (o forse no?) non viene passata neanche dai cookie di dominio impostati da ltpa.domain.com. In questo caso, non ho bisogno che i cookie siano passati, ma l'ho verificato comunque per vedere se questo problema stava interessando altre macchine. Nella barra di stato di IE, ltpa.domain.com, portal.domain.com e myserver.domain.com si visualizzano tutti nell'area "Internet". La cosa strana è che my2.domain.com mostra ancora "Siti attendibili" nella barra di stato, anche se non è elencato nella finestra di dialogo ?? Sì, ho riavviato dopo aver apportato le modifiche.

Altri punti di nota.

  • sono a conoscenza degli altri problemi con IE e non .com domini, valori dei cookie citati e altre anomalie di biscotti - di cui qui su StackOverflow e altrove sull'interwebs. Nessuno di questi si applica. Ho letto l'articolo IEInternals di Eric Law su cookie interni - http://blogs.msdn.com/ieinternals/archive/2009/08/20/WinINET-IE-Cookie-Internals-FAQ.aspx

  • Non ci sono componenti aggiuntivi funky abilitati in IE. Solo Flash, Silverlight, assistente per l'accesso a Live ID e Fiddler2.

  • Non ci sono regole InPrivate per filtrare i contenuti specifici del mio dominio.

  • Dal momento che sono su un laptop, ho provato IE8 dalla rete domestica (dopo un riavvio) per escludere i problemi DNS. Ho lo stesso comportamento a casa, quindi il funky DNS non è un problema per quanto ne so.

  • Ho attraversato tutte le impostazioni di IE, più volte, pensando che avrei potuto perdere un'oscura impostazione dei cookie. Le impostazioni sulla privacy sono su "Medio" e non ci sono siti con gestione speciale.

  • Con gli strumenti di sviluppo, ho verificato che 'Aggiorna sempre dal server' sia deselezionato.

  • Non penso che questo sia qualcosa che posso segnalare a Microsoft poiché non riesco a riprodurre il problema da nessun'altra parte.

Quindi, a questo punto, sono in perdita. A corto di attivare una sorta di modalità diagnostica all'interno di IE8 di cui non sono a conoscenza, o che ha il codice necessario per eseguire il debug ... Ho esaurito le buone idee.

Sto pensando di aver riscontrato un errore, alcune impostazioni del registro o simili sono state ottimizzate, o qualcosa del genere, da qualche parte è diventato corrotto.

Qualche idea?

+0

"il percorso è \"? Davvero, un backslash? Dovrebbe essere una barra in avanti, anche se non so se sarebbe diverso. +1 per i dettagli però :-) – bobince

+0

Whoops - typo. Corretto. –

+0

Cross-postato sui forum MSDN - http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/b2eac7c9-d51d-485b-9f28-89ce0f99af1b –

risposta

3

Penso di aver rintracciato il problema qui.

Questo deve essere un bug in IE. Bene, due in realtà se dividiamo i capelli.

Anche se avevo eliminato myserver.domain.com e my2.domain.com dall'elenco dei siti di siti attendibili nella finestra di dialogo di sicurezza di IE molto presto, questi siti erano entrambi nella configurazione della zona nel registro! Sono stato in grado di capirlo cercando nel registro i nomi dei miei server e voilà, un piccolo lavoro investigativo si è rivelato fruttuoso.

C'è una sottochiave sotto HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ ZoneMap \ Domini

per domain.com

E sotto domain.com rimanevano due sottochiavi per i due diversi server che avevo cancellato dalla finestra di dialogo dell'elenco "Siti attendibili" - entrambi con REG_DWORD per il valore * impostato su 2. Ciò significa, ovviamente, inserire il sito in Siti attendibili.

Sono stato in grado di recuperare un vecchio articolo da "Scripting Guy" discutendo di questa particolare chiave e dei valori disponibili per cambiare le zone. http://blogs.technet.com/heyscriptingguy/archive/2005/05/02/how-can-i-add-a-site-to-internet-explorer-s-restricted-sites-zone.aspx

Forse queste impostazioni sono deprecate nell'interfaccia utente in qualche modo, ma vengono comunque lette/utilizzate? Non lo so, ma chiaramente c'è un disallineamento b/n, ciò che è mostrato nell'interfaccia utente e ciò che viene effettivamente utilizzato.

Inoltre, come menzionato in un commento precedente, quando si colpisce la radice di myserver.domain.com (che risultava in un 403 dal server btw), la barra di stato mostrava 'Internet | Modalità protetta: Off 'che ha solo aggiunto alla confusione perché avrebbe dovuto essere letto come' Siti attendibili | Modalità protetta: disattivata '.

Quindi la soluzione ha finito per essere uno

un - eliminare le chiavi reg di cui sopra in modo che tutto spostato l'area Internet O b - aggiunge * .domain.com alla lista dei siti attendibili in modo che tutto si è trasferito nella zona Internet

Speriamo di poter archiviare questi problemi con il team di IE Eric?

Grazie per avermi indicato nella giusta direzione!

+0

Sì, non è supportato per scrivere domini direttamente nel registro usando qualcosa di diverso dall'interfaccia utente. Quando lo fai, l'interfaccia utente può andare fuori sincrono e portare a problemi come questo. – EricLaw

+1

Non ho utilizzato altro che l'interfaccia utente per tentare di rimuovere tali siti dalla zona attendibile. Ho appena iniziato a scavare attorno al registro per vedere se il dominio fosse memorizzato in un registro da qualche parte, e in effetti era così. Non l'ho inserito manualmente, forse questo era un residuo di una precedente versione di IE che è stata trasferita in un aggiornamento? Questa finestra era precedentemente Vista w/IE7 ... quindi Vista w/IE8 ... quindi Win7 w/IE8. Vari pacchetti di servizi in mezzo naturalmente. –

1

È necessario essere molto attenti con la parola "dominio", poiché molte persone lo usano per indicare molte cose diverse.

http://blogs.msdn.com/ieinternals/archive/2009/09/19/Private-Domain-Names-and-Public-Suffixes-in-Internet-Explorer.aspx

Dalla descrizione, sembra molto simile si sta colpendo l'edizione # 3 nella sezione "Risoluzione dei problemi Accesso cookie" descritto in questo post: http://blogs.msdn.com/ieinternals/archive/2009/09/11/Troubleshooting-Stored-Login-Problems-in-IE.aspx

È necessario risolvere la zona/Problema di livello di integrità per risolvere il problema dei cookie.

+0

Appena detto questo, ho pensato a GP e ho controllato due volte il criterio del controller di dominio. I siti summenzionati non si trovano nella 'zona attendibile' all'interno dell'oggetto Criteri di gruppo, quindi siamo a posto. Sono stati aggiunti localmente, ma come ho detto prima li ho rimossi e riavviato la macchina. Myserver.domain.com mostra "Internet" nella barra di stato, ma l'altro server - my2.domain.com (che non mi interessa davvero) viene ancora visualizzato come attendibile nella barra di stato, nonostante non sia presente in il dialogo Ma il problema n. 3 nel tuo secondo post qui sopra sembra il problema. Ma ... non vedo come aggiustarlo. –

+0

Ma aspetta - Ho appena notato che il server LTPA ha 'Modalità protetta On' mentre myserver ha 'Modalità protetta Off'. Come è possibile se si presentano nella stessa zona e questa è una funzione per zona? C'è qualcosa di implicito in corso dietro le quinte? –

+0

Ho appena navigato dalla radice di myserver.domain.com a myserver.domain.com/somepath per ha-has. La barra di stato è cambiata da 'Internet | Modalità protetta: Off 'a' Siti attendibili | Modalità protetta: Off '- quindi sembra che ci sia un problema di interfaccia utente in IE qui - e myserver.domain.com è di fatto nella zona' Siti attendibili '. Anche se non appare nella finestra di dialogo. Sembrerebbe che ora devo solo capire come ottenere quei siti da 'Siti attendibili'. Inserirò una richiesta di funzionalità per IE9: sarebbe fantastico avere qualcosa nell'interfaccia utente che mostrava i siti abbandonati dal GP. –