.htaccess Authentifizierung - aber im Detail...
Timo
- https
1 Dennis0 Timo0 Candid Dauth0 Dennis
2 Henryk Plötz
Hallo,
ich programmiere nun schon seit langer Zeit Webanwendungen aber neulich Nachts ist mir eine Frage gekommen, die ich mir noch nicht beantworten konnte. Auch sämtliche Recherchen meinerseits blieben leider erfolglos. Es geht dabei um die Benutzerauthentifizierung per .htaccess - allerdings die Funktionsweise im Detail.
Nehmen wir mal folgendes an:
Mein Browser greift auf eine Seite des Webservers zu, die per .htaccess geschützt ist. Nennen wir diesen Zugriff mal Request 1. Der Webserver findet die .htaccess, interpretiert diese und schickt meinem Browser einen 403, welcher daraufhin Benutzername und Passwort abfragt. Das ist Response 1. Ich gebe meinen gültigen Benutzernamen und das richtige Passwort ein - Request 2. Woher weiß der Webserver bei Request 3 und höher, dass ich die gleiche Person bin, die sich zuvor in Request 2 authentifiziert hat???
Es gibt keine Cookies, keine Session und nichts anderes mir bekanntes, was mich als die Person identifiziert, die sich in Request 2 angemeldet hat. Versteht Ihr was ich meine? Wird das auf Protokollebene geregelt? Oder regelt das alleine der Browser, was aber ja einem Clientseitigen 'Schutz' entsprechen würde und demzufolge leicht auszuhebeln ist.
Kann mir das jemand erklären oder Links posten?
Hi Timo,
Woher weiß der Webserver bei Request 3 und höher, dass ich die gleiche Person bin, die sich zuvor in Request 2 authentifiziert hat???
Dein Browser merkt sich die von dir eingegebenen Daten und schickt sie bei jedem Aufruf wieder freiwillig mit, d.h. wenn du für example.org/path/ Benutzername und Passwort angegeben hast, schickt der Browser sie für alle Requests (d.h. auch für jede Grafik, CSS Datei usw.) unterhalb von example.org/path/ wieder „freiwillig” mit [1] - für example.org/ oder example.org/anotherpath/ allerdings nicht [2].
[1] Die Daten verbleiben während der Sitzung im Arbeitsspeicher des Browsers oder so.
[2] Möglicherweise versucht der Browser wenn er für /anotherpath/ 403 bekommt automatisch sich mit den Daten von vorhin anzumelden - das weiß ich jetzt nicht so genau, das Verhalten von verschiedenen Browsern kann dort natürlich auch durchaus unterschiedlich sein.
MfG, Dennis.
Hi Dennis,
Dein Browser merkt sich die von dir eingegebenen Daten und schickt sie bei jedem Aufruf wieder freiwillig mit
Oh man ist das billig ;-) Da hätte ich auch eigentlich selber drauf kommen können. Mal wieder zu kompliziert gedacht.
Danke!
Heißa, Dennis,
[2] Möglicherweise versucht der Browser wenn er für /anotherpath/ 403 bekommt automatisch sich mit den Daten von vorhin anzumelden - das weiß ich jetzt nicht so genau, das Verhalten von verschiedenen Browsern kann dort natürlich auch durchaus unterschiedlich sein.
Afaik entscheidet er dies anhand des gesandten AuthNames. Zumindest im SelfHTML-Forum benutzt er für /cgi-bin/user/ ja die gleiche Authentifikation wie für /my/.
Gautera!
Grüße aus Biberach Riss,
Candid Dauth
Hi Candid,
Afaik entscheidet er dies anhand des gesandten AuthNames. Zumindest im SelfHTML-Forum benutzt er für /cgi-bin/user/ ja die gleiche Authentifikation wie für /my/.
Das habe ich auch schon mal gedacht, aber die Pfade müssen auch eine Rolle spielen - kleines Beispiel, wie es real existiert:
Logge ich mich in den Internen Bereich ein, so werde ich für den Developper Bereich nicht mehr nach einem Passwort gefragt. Logge ich mich für den Developper Bereich ein (per Direkteingabe der URL) und gehe dann aufwärts in den Internen Bereich, werde ich erneut nach einem Passwort gefragt.
Gebe ich beiden Bereichen denselben Namen, so ist es egal in welchen ich zuerst gehen - für den jeweiles anderen Bereich werde ich nicht erneut nach Benutzername/Passwort gefragt.
Getestet mit Firefox 1.0.7 unter WinXP.
MfG, Dennis.
Moin,
ich programmiere nun schon seit langer Zeit Webanwendungen aber neulich Nachts ist mir eine Frage gekommen, die ich mir noch nicht beantworten konnte. Auch sämtliche Recherchen meinerseits blieben leider erfolglos. Es geht dabei um die Benutzerauthentifizierung per .htaccess - allerdings die Funktionsweise im Detail.
Bitte, bitte schreib jetzt 100 mal an die Tafel: "Es gibt keine .htaccess-Authentisierung". Nein, wirklich nicht. .htaccess hat absoult überhaupt nichts damit zu tun. Du suchst Informationen über "HTTP Authentication". Die verbindlichen Quellen dazu sind RFC 2616 und RFC 2617.
Mein Browser greift auf eine Seite des Webservers zu, die per .htaccess geschützt ist. Nennen wir diesen Zugriff mal Request 1. Der Webserver findet die .htaccess, interpretiert diese und schickt meinem Browser einen 403,
Nein, tut er nicht. Er schickt einen 401, das ist ein himmelweiter Unterschied.
welcher daraufhin Benutzername und Passwort abfragt. Das ist Response 1. Ich gebe meinen gültigen Benutzernamen und das richtige Passwort ein - Request 2. Woher weiß der Webserver bei Request 3 und höher, dass ich die gleiche Person bin, die sich zuvor in Request 2 authentifiziert hat???
Gar nicht, das braucht er nicht. HTTP ist ein zustandloses Protokoll welches nur Anfrage und Antwort kennt. Anfrage und Antwort, Anfrage und Antwort, ... Eine Anfrage für eine geschützte Ressource, der keine authorisierten Authentisierungsdaten beiliegen wird mit 401 beantwortet. Eine Anfrage für eine geschützte Ressource, der authorisierte Authentisierungsdaten beiliegen wird verarbeitet und entsprechend dem Ergebnis der Bearbeitung beantwortet.
Hi Henryk,
Nein, tut er nicht. Er schickt einen 401, das ist ein himmelweiter Unterschied.
Und ich habe noch gedacht: "403 ist ja Forbidden, aber hieß das, womit der Server das erste mal antwortet nicht irgendwie anders? Not authorisized?" Na ja, ich war jedenfalls zu faul nachzugucken ;-)
MfG, Dennis.