Problem mit Authentifizierung (Firefox-Problem?)

  • Hallo zusammen,

    ich betreue ein Web-Plattform und wir haben seit einiger Zeit Schwierigkeiten mit der Authentifizierung von Firefox-Nutzern. Das Problem zeigt sich dadurch, dass User, die sich am System anmelden und auf einen Link des geschützten Bereichs klicken, sofort wieder ausgeloggt werden. Für die Authentifikation wird das Auth-Paket von PEAR eingesetzt. Im Laufe der 3er Versionen des Firefox hat sich die Situation weiter zugespitzt. Nachdem anfangs nach dem Löschen von Cache und Cookies im Browser wieder eine "normale" Anmeldung am System möglich war, gibt es nun einige Nutzer bei denen diese Strategie nicht mehr hilft.

    Mich würde interessieren, ob hier jemand ähnliche Erfahrungen gemacht hat oder mir vielleicht eine Anregung für die Fehlersuche geben könnte. Im folgenden sind die Header zweier Login-Versuche aufgeführt. Merkwürdig finde ich, dass dem Cookie beim ersten Versuch scheinbar zwei Session-IDs zugeordnet sind. Wie kann es dazu kommen?


    Zunächst die Eckdaten des Servers:

    Windows Server 2008
    Apache 2.2.11 mit OpenSSL 0.9.8i
    PHP 5.2.9-1
    PEAR Auth 1.6.1
    PostgreSQL 8.3


    Mit LiveHTTPHeaders 0.15 und Firefox 3.0.11 aufgezeichnete Header:

    1. Anmeldung am System mit Rauswurf nach Klick auf einen Link des geschützten Bereichs:


    2. Anmeldung am System ohne Rauswurf (nach Löschen von Cache und Cookies im Browser):

  • Hallo ans2,

    Willkommen im Forum

    Zitat von ans2

    Nachdem anfangs nach dem Löschen von Cache und Cookies im Browser wieder eine "normale" Anmeldung am System möglich war, gibt es nun einige Nutzer bei denen diese Strategie nicht mehr hilft.

    Damit wurde nur ein Fehlverhalten des Servers kompensiert.

    Das Ausloggen geschieht nicht im FF (CLient) sondern im Host (Server).

    Analysiere die Logs des Servers, um dessen Fehler zu bereinigen.

  • Hallo,

    erst einmal vielen Dank für deine Rückmeldung.

    Zitat von .Ulli


    Das Ausloggen geschieht nicht im FF (CLient) sondern im Host (Server).

    Jein. Du hast natürlich Recht, dass der Firefox vom Server ausgeloggt wird. Allerdings liegt das daran, dass der Firefox die falsche Session-ID sendet. Ich gehe ziemlich stark davon aus, dass dies an der doppelten Session-ID liegt (siehe 1. Header-Log). Das Tückische an der Sache ist, dass sich der Fehler nur sehr schwer reproduzieren lässt. Mit frischem Cache und Cookies kann man an unserem System wieder ganz normal arbeiten. Sogar über mehrere Logins hinweg. Und irgendwann kommt es dann wieder zu den Rauswürfen. Was mich zu der Annahme führt, dass es sich prinzipiell nicht um ein Programmier-Problem im "klassischen" Sinne handelt, sondern vielmehr mit Timing oder ähnlichem zu tun hat.

    Was mich interessieren würde ist, wie es dazu kommen kann, dass Firefox einem Cookie zwei Session-IDs zuordnet. Der Internet Explorer hat dieses Problem (momentan) jedenfalls nicht.

    Grüße

  • Quelle: ans2

    Zitat von ans2

    Allerdings liegt das daran, dass der Firefox die falsche Session-ID sendet.

    Nicht die "falsche", sondern zwei - eine alte, abgelaufene und die aktuelle. Eure Webanwendung scheint aber nicht in der Lage zu sein, dies zu erkennen und den alten Wert zu verwerfen.

    Zitat

    Mit frischem Cache und Cookies kann man an unserem System wieder ganz normal arbeiten.

    Logisch, da eben kein alter PHPSESSID-Cookie vorhanden ist.

    Zitat

    Was mich zu der Annahme führt, dass es sich prinzipiell nicht um ein Programmier-Problem im "klassischen" Sinne handelt, sondern vielmehr mit Timing oder ähnlichem zu tun hat.

    Die Frage sollte zunächst sein, warum der Fx zwei solche Cookies speichert. Normalerweise ist der Name eindeutig, wenn es sich um die selbe Domain und den selben Pfad handelt. In dem Fall, wenn der Fx zwei PHPSESSID-Cookies gespeichert hat, prüfe für welche Domain und für welchen Pfad diese jeweils gespeichert sind. Das sollte dich zu dem Fehler in eurer Anwendung führen, diese wird an irgendeiner Stelle einen Cookie mit modifiziertem Trippel (Name, Domain, Pfad) setzen. Gleichzeit fängt eure Anwendung diesen Fall nicht ab, was aber nicht mehr nötig ist, wenn eure Anwendung für eindeutige Cookies sorgt.