2012-12-05 3 views
5

Unser Betreiber hat einen Round Robin Load Balancer auf unserem Webportal implementiert und es scheint einige Probleme zu verursachen, denen ich nicht auf den Grund gehen kann.Benutzer werden wegen Round Robin Load Balancer von der Website ausgeloggt.

Ich kann feststellen, auf welchem ​​Server wir sind und während wir durch die Site navigieren, bleiben wir auf Server A. Wenn ich es für 5 Minuten belasse und eine andere Seite versuche, werde ich zu Server B gepuffert aus und zeigte die Anmeldeseite an.

Ich habe sie um sicherzustellen, dass der MachineKey in der machine.config ist das gleiche auf beiden Servern und ich habe lokal getestet, dass die Sitzung nicht verwendet wird - ich kann die Sitzung vollständig lokal und es ausschalten funktioniert noch. Ich habe auf beiden Servern verifiziert, dass es ein ASPXAUTH-Cookie auf der Domäne erstellt, so dass wir auf beiden Servern als authentifiziert gelten sollten - aber bei jedem Serverwechsel meine Authentifizierung verlieren.

Irgendwelche Ideen zu was könnte die Abmeldung verursachen? Ich vermute, es ist mein Missverständnis darüber, wie ASPXAUTH funktioniert.

Antwort

2

Sitzungen werden getrennt von der Formularauthentifizierung behandelt. Es gibt eine gute Erklärung dafür here.

Der häufigste Grund für Formularauthentifizierungsfehler in Lastenausgleichsumgebungen ist die fehlende Synchronisierung des MachineKey-Elements. Sie haben angegeben, dass Sie die Server-Operatoren haben, um sicherzustellen, dass der MachineKey synchronisiert ist, aber haben Sie dies selbst verifiziert? Ist dies bei ALLEN Webservern der Fall? Aus früheren Kontakten mit einigen kommerziellen Web-Hosts habe ich festgestellt, dass es (leider) schwierig ist, ihre Zusicherungen zum Nennwert zu nehmen.

Eine andere Sache zu überprüfen ist, wenn die FormsAuthentication-Konfiguration (Timeout, Pfad, Name usw.) auf allen Hosts identisch ist.

Sind die Patch-Level auf allen Hosts gleich? Vielleicht möchten Sie sehen, ob der Kompatibilitätsschalter here in Ihrer Situation anwendbar ist.

Vorausgesetzt, dass das Hosting-Setup korrekt ist, haben Sie möglicherweise Initialisierungscode auf der Seite, die Sie abmeldet, wenn eine Bedingung nicht erfüllt ist?

Versuchen Sie, sich die Serverprotokolle anzusehen und die Reihenfolge der HTTP-Anforderungen zu verfolgen, die während einer fehlgeschlagenen Seitenanforderung beteiligt sind. Das könnte einen Hinweis liefern.

Edit: Diese Anleitung zur Fehlerbehebung Formularauthentifizierung Probleme ist detailliert und sehr hilfreich: Troubleshooting Forms Authentication

+0

Danke, der Troubleshooting Guide half mir festzustellen, dass der Client nicht wirklich den ASPXAUTH Cookie sendet, wenn er die Seite nach der kurzen Verzögerung anfordert, was dazu führt, dass der Server denkt, dass sie nicht authentifiziert sind. Ich kämpfe jedoch immer noch darum, was der nächste Schritt ist. Das Fiddler-Log zeigt beide Male "Tunnel to" "www.mydomain.co.uk:443", warum sollte es dann nicht dieselbe URL sehen und den Cookie weitergeben? Auf beiden Servern zeigt der Cookie den Ablauf als "Am Ende der Sitzung" an und ist der Domäne "https://www.meinedomain.de" zugeordnet ...was in meinem Verständnis funktionieren sollte. – ColinRobertson

+0

Ich habe Ihre Antwort als akzeptiert markiert, weil der Web-Host die Änderungen des MachineKey nicht vollständig implementiert hat. Sie hatten es im Framework-Ordner geändert, aber nicht im Framework64-Ordner geändert. Danke für Ihre Hilfe. – ColinRobertson

+0

Froh, dass es jetzt für dich funktioniert! – Maxam

0

prüfen für andere Anwendungsfunktionen, die auf Cookies abhängt. Der Webserver auf Server B erkennt keine Cookies, die von Server A stammen. Wenn ein Teil Ihrer Authentifizierung davon abhängt, dass Cookies ausgefüllt werden, kann dies zu einem Problem führen.

Sie haben wahrscheinlich bereits sichergestellt, dass die für Cookies verwendete Domain auf allen Servern mit Lastausgleich identisch ist, aber ich dachte, ich würde das erwähnen. Wenn die Domains nicht kompatibel sind, sendet der Browser keine Cookies an den Server.

+0

Mein Verständnis war, wenn Server A und Server B den gleichen Maschinenschlüssel und die gleiche URL hatten, dann würde der Cookie zwischen den beiden übergeben werden. Ich habe gerade festgestellt, dass der Cookie nicht übergeben wird, wenn ich zwischen Servern umschalte, so dass es aus irgendeinem Grund aussieht, dass mein Browser entscheidet, dass sie nicht die gleiche URL sind. – ColinRobertson

+0

Überprüfen Sie zwei Dinge: mit Fiddler oder etwas sehen, ob der Cookie überhaupt übergeben wird. Wenn es übergeben wird, vergleichen Sie die beiden Dateien machine.config. –

+0

Ja, es war die Maschine. Die Configs waren nicht gleich. Der Host hat die Datei machine.config im Framework-Ordner, aber nicht im Ordner framework64 geändert. Danke für Ihre Hilfe – ColinRobertson