Henryk Plötz: nun mal bitte der Reihe nach ...

Beitrag lesen

Moin,

nun mal der Reihe nach:

Vergiss bitte alles was du über HTTP Auth zu wissen glaubst. Es ist offensichtlich Unfug.

Das läuft so ab (Extremkrankheiten wie NTLM Auth jetzt mal ausgenommen):
1. Der Client sendet einen Request an den Server.
2. Der Server stellt fest, dass er den Request ohne Benutzerkennung nicht beantworten darf.
3. Der Server sendet eine Antwort an den Client die aus zwei Teilen besteht: Einem Header mit Statuscode 401 und weiteren Informationen zur gewünschten Authentisierung, sowie einem Body mit dem unter ErrorDocument 401 eingestellten Dokument (bzw. ggbf. einem Standardtext).
4. Der Client sieht den Status 401 und die weiteren Informationen, überlegt sich wie er sich dem Server gegenüber ausweisen kann und fragt ggbf. den User nach einem Passwort.
5. Der Client sendet einen Request an den Server der Authentisierungsdaten enthält.
6. Der Server findet die Authentisierungsdaten toll und liefert eine Antwort mit Status 200 und der eigentlich angefragten Ressource.

Der Knackpunkt ist Punkt 3: Wenn der Client keinen Status 401 sieht, fragt er natürlich auch nicht nach dem Passwort. An der Stelle hast du es kaputt gemacht: Durch ErrorDocument xxx http://... bewirkst du dass wann immer ein Statuscode xxx gesendet worden wäre stattdessen ein Redirect (Status dreihundertnochwas) auf den neuen URL gesendet wird. Das gilt ganz genau so bei 401: Dein Client kriegt nie einen 401 zu Gesicht, sondern nur den Redirect und führt ihn natürlich aus.

Erst wenn das Passwort NICHT stimmt oder der User auf 'Abbrechen' clickt, kommt die Direktive fuer Error-401 ins Spiel, mit der man die Standardfehlerseite ueberschreibt.

Nein. Das hat Cheatah aber schon länger versucht, dir mitzuteilen: Das Fehlerdokument für 401 wird immer bei Status 401 mitgesendet. Der Server kann ja schliesslich nicht wissen ob der User auf Abbrechen gedrückt hat oder das Passwort nicht stimmt oder ob der Client überhaupt weiss wie man mit HTTP Auth umzugehen hat.

PS:
Die Idee statt einem 401-Doc ein 403-Doc zu definieren bringt nix.
Man erhaelt beim Abbruch oder falschem Passwort die Standardfehlerseite fuer Error-401.

Ja, das ist auch Unsinn. 403 hat nichtmal ansatzweise was mit HTTP Auth zu tun. (Der Fehler wird in Selfhtml 8.1 auch korrigiert sein.)

--
Henryk Plötz
Grüße aus Berlin
~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~