Browser - Authentifizierung und .htaccess
Jean-Luc
- webserver
Hallo,
Ich habe einen mit ".htaccess" geschützten Bereich auf einem
Linux / Apache Server. Das funktioniert auch alles absolut
einwandfrei. Nachdem ich mich einmal auf dem Server
angemeldet habe, kann ich immer wieder darauf zugreifen.
Erst wenn der Browser komplett beendet wurde, muß ich mich
wieder erneut anmelden.
Nun meine Frage: Gibt es nicht eine andere Möglichkeit
eine erneute Anmeldung ohne beenden des Browsers zu
erzwingen ?
Bzw. woher weiß der Server das ich es bin, der nach
dem Besuch einiger anderer Seiten wieder anklopft ?
Vielen Dank
Gruß
Jean-Luc
Moin!
Bzw. woher weiß der Server das ich es bin, der nach
dem Besuch einiger anderer Seiten wieder anklopft ?
Der Browser kriegt bei der Anmeldung vom Server gesagt: Hier nur mit Paßwort! Und da merkt sich der Browser: Aha, URL soundso nur mit Paßwort, und alle weiteren Anforderungen (wie nächste Seite, Bilder, Skripte etc.) werden dann gleich mit Paßwortangabe abgefordert. Stell dir vor, das wäre nicht so: Du würdest dein Paßwort sehr schnell auswendig kennen, weil du es so häufig eingeben müßtest.
Der Browser vergißt diese Paßwortinformation eben erst, wenn er geschlossen wird. Wenn du das umgehen willst, mußt du den Server irgendwie veranlassen, eine erneute Authentifizierung vorzunehmen. Das geht in der Regel so, daß man nochmal einen HTTP-Response mit Statuscode 401 (ich hoffe, diese Zahl stimmt) erzeugt. Genau den erhält der Browser auch beim ersten Kontakt und liefert daraufhin das Eingabefenster. Er würde also erneut das Eingabefenster liefern und dabei die Paßwortangaben von vorher vergessen.
Ich frage mich aber, ob das mit einem simplen .htaccess möglich ist. Du solltest probieren, eine Logoutseite mit einem weiteren .htaccess-File in einem zweiten Verzeichnis zu schützen, die gleiche Realm-Angabe zu benutzen und "kein Username, kein Paßwort" als Eingabe verlangen - könnte sein, daß das funktioniert. Aber der übliche Automatismus ist eben nur ein Login.
- Sven Rautenberg
Moin!
Bzw. woher weiß der Server das ich es bin, der nach
dem Besuch einiger anderer Seiten wieder anklopft ?
Der Browser kriegt bei der Anmeldung vom Server gesagt: Hier nur mit Paßwort! Und da merkt sich der Browser: Aha, URL soundso nur mit Paßwort, und alle weiteren Anforderungen (wie nächste Seite, Bilder, Skripte etc.) werden dann gleich mit Paßwortangabe abgefordert. Stell dir vor, das wäre nicht so: Du würdest dein Paßwort sehr schnell auswendig kennen, weil du es so häufig eingeben müßtest.
Der Browser vergißt diese Paßwortinformation eben erst, wenn er geschlossen wird. Wenn du das umgehen willst, mußt du den Server irgendwie veranlassen, eine erneute Authentifizierung vorzunehmen. Das geht in der Regel so, daß man nochmal einen HTTP-Response mit Statuscode 401 (ich hoffe, diese Zahl stimmt) erzeugt. Genau den erhält der Browser auch beim ersten Kontakt und liefert daraufhin das Eingabefenster. Er würde also erneut das Eingabefenster liefern und dabei die Paßwortangaben von vorher vergessen.
Ich frage mich aber, ob das mit einem simplen .htaccess möglich ist. Du solltest probieren, eine Logoutseite mit einem weiteren .htaccess-File in einem zweiten Verzeichnis zu schützen, die gleiche Realm-Angabe zu benutzen und "kein Username, kein Paßwort" als Eingabe verlangen - könnte sein, daß das funktioniert. Aber der übliche Automatismus ist eben nur ein Login.
- Sven Rautenberg
Hi,
vielen Dank,
einen schönen Tag noch
Jean-Luc
Hi Sven,
Ich frage mich aber, ob das mit einem simplen .htaccess möglich ist.
das ist vielleicht einer der exotischen Fälle, wo der Apache-handler
"asis" nützlich sein könnte.
Wenn man eine Datei-Endung etc. an diesen handler bindet, dann erzeugt
der Apache (fast) keine HTTP-Header dazu (sondern liefert den Inhalt
der Datei "as is").
Das bedeutet, daß der Verfasser dieser Datei seine HTTP-Header selbst
innerhalb dieser Datei ablegen kann (und auch muß).
In diesem Falle könnte man in diese Datei den kompletten HTTP-Header wie
gewünscht hinein schreiben (ggf. mit Status 401, damit der Browser die
gespeicherte Autorisierung vergißt).
Und eine Bindung zwischen Endung und Handler müßte mit .htaccess möglich
sein (AddType - je nachdem, was an AllowOverride freigegeben ist).
Wäre also vielleicht mal einen Versuch wert ...
Viele Grüße
Michael
Moin!
Wäre also vielleicht mal einen Versuch wert ...
http://httpd.apache.org/docs/mod/mod_asis.html ist vermutlich die einfachste Doku, die Apache zu bieten hat. :)
Einfach eine Datei (Beispiel ist dort abgebildet) mit der Dateiendung "asis" in ein Verzeichnis ablegen und in dieses Verzeichnis eine .htaccess mit dem einzigen dort erwähnten Befehl ablegen:
AddHandler send-as-is asis
Logischerweise würde die Datei für DIESES Problem hier nicht mit 301 antworten, sondern mit 401.
Was da sinnvollerweise noch so drinstehen sollte, weiß ich auch nicht. Welche Angaben die geschützten Seiten zurücksenden, sagt ja dieses Skript hier: http://www.schroepl.net/cgi-bin/http_trace.pl ;) Davon einfach mal abkupfern und testen.
- Sven Rautenberg
Hi Sven,
Was da sinnvollerweise noch so drinstehen sollte, weiß ich auch nicht.
Welche Angaben die geschützten Seiten zurücksenden, sagt ja dieses
Skript hier: http://www.schroepl.net/cgi-bin/http_trace.pl ;)
Davon einfach mal abkupfern und testen.
... und zwar dann, wenn man es auf einen geschützten Bereich richtet:
Viele Grüße
Michael
Moin,
ich habe die Loesung:
Eingach einen Link erzeugen mit einem falschen Kennwort.
Zum Beispiel:
http://Benutzername:FalschesKennwort@server.de/gesperrterBereich
Diesen dann als Logout definieren und fertig.
Gruß
und Danke an alle
Jean-Luc
Auch Moin!
http://Benutzername:FalschesKennwort@server.de/gesperrterBereich
Es gibt keinen Standard, der URLs mit Paßwort definiert. Insofern funktioniert dieser Vorschlag vielleicht in einigen Browsern, aber nicht zwingend in allen.
Lynx hat z.B. ganz generell keinen Bock, obwohl definiert, zumindest den Usernamen zu verstehen, erst recht nicht die Kombination aus Username und Paßwort.
- Sven Rautenberg