URL redirects via ISA 2006 führen zu Webseiten-Reloads
Folgendes Szenario: Ein interner Webserver wird über eine Webseitenveröffentlichungsregel mit dem ISA 2006 extern bereitgestellt. Zwischen ISA und dem internen Webserver ist sowohl eine http wie auch eine https Verbindung möglich.
Ein Besucher kann die nach Extern freigegebene Seite ebenfalls per http oder per https erreichen.
Auf dem Webserver liegt ein Script, welches beim Aufruf den Besucher von einer unverschlüsselten auf eine verschlüsselte Seite umleitet (Typo3 / https_enforcer).
Beobachtung: Beim (externen) Besuch der Webseite und dem Aufruf des Scriptes wird im Firefox Browser angezeigt, dass die Webseite sich endlos neu aufruft und die Anfrage nicht beendet werden kann. Der IE (Version
lädt endlos weiter.
Für ein Debugging schalteten wir auf dem Besucher das Tool Fiddler ein und beobachten die Rückmeldungen, welche vom Webserver (ISA) an den Browser gesendet wurde. Dabei stellten wir fest, dass der Webserver zwar ein “302, Moved temporarily” sendet, der Location Teil des Headers aber imm auf http://(webseite) stand.
Damit lag der Fehler irgendwo zwischen Webserver (sendet er das Richtige an den Besucher?) und ISA Firewall (Bekommt der Besucher auch die richtigen Daten ausgeliefert?).
Eine tiefere Diagnose mit Network Monitor brachte den “Schuldigen” ans Tageslicht: Der Webserver liefert zwar das richtige an den Besucher aus, der ISA verfälscht jedoch das Location Element im Header und tauscht “https” gegen “http” aus:
Nun passiert folgendes:
- Der Browser des Besuchers greift beim ausführen des 302ers auf die http Verbindung zurück
- Der Webserver, respektive das https_enforcer Plugin, erkennt eine unverschlüsselte Verbindung und sendet wieder den 302 mit Location https://(webseite) an den Besucher zurück
- Der ISA modifiziert das Location Feld und ersetzt wieder https gegen http
- Fertig ist die Ladeschleife
“Schuld” ist eine Funktion im ISA 2006, welche interne auf externe Website-Namen umschreiben kann. Die Linkübersetzung erlaubt es, interne Namen auch extern nutzen zu können, indem sie sie in gültige, im Internet erreichbare Namen übersetzt.
In diesem Fall war die Lösung relativ einfach. Da auf dem betroffenen ISA die Linkübersetzung (weder lokal noch global) benutzt wurde, reichte es, das “Linkübersetzungsfilter” unter Add-Ins zu deaktivieren.
Das Blog von MRVirtual bringt weitere Lösungen für den Fall, dass die Linkübersetzung doch benötigt wird.

