CdE-Datenbank-Logout
LogoutNutzung des Logout-Knopfes:
- Klick auf den Logout-Knopf
- Warnungsfenster -> OK
Evtl. erscheint eine Warnung, dass man dabei ist, sich in die Seite "db.cde-ev.de" mit dem Nutzernamen "logout" einzuloggen. Hier bitte auf OK klicken. - Loginfenster -> Abbrechen
Danach erscheint das Loginfenster der CdE-Datenbank. Dieses bitte abbrechen. - 401 Authorization required -> Logout erfolgreich
Anschließend sollte "401 Authorization required" erscheinen. Diese Meldung bestätigt, dass man sich erfolgreich ausgeloggt hat.
Warnung: Obwohl dies üblicherweise funktioniert, kann nicht garantiert werden, dass der Browser das Passwort auch wirklich vergessen hat! Je nach Browser-Implementierung kann es sein, dass das Passwort danach noch im Speicher des Browsers bzw. des Computers vorhanden ist.
Erklärung:
Die meisten Webseiten nutzen Cookies zur Nutzer-Authentifizierung. Die CdE-Datenbank benutzt jedoch HTTP Auth. Dies hat den Vorteil, dass die Datenbank auch ohne Cookies funktioniert, jedoch den Nachteil, dass bei dieser Technik kein Logout vorgesehen ist.
Um dies zu verstehen, muss man sich die Techniken näher anschauen:
- Cookies: Die Authentifizierung mit Cookies läuft normalerweise so ab, dass
man sich zunächst mit Nutzername/Passwort einloggt, der Server diese Daten
überprüft, dann eine lange Zufallszahl (sogenannte "Session-ID") generiert,
und diese zurückschickt. Diese Session-ID dient fortan zur Authentifizierung,
sprich: Der Browser merkt sich diese Session-ID in einem Cookie, und schickt
sie bei jeder weiteren Anfrage an den Server mit.
Das Ausloggen funktioniert, indem man dem Server mitteilt, dass die Session-ID nicht mehr gültig sein soll (was z.B. über einen anklickbaren Logout-Knopf bzw. Link möglich ist). Häufig sind Session-IDs auch nur eine begrenzte Zeit gültig, so dass man nach einer gewissen (inaktiven) Zeit "automatisch ausgeloggt" wird.
- HTTP Auth: Die Authentifizierung beginnt hier ebenfalls mit der Eingabe der
Zugangsdaten. Allerdings ist HTTP zustandslos, d.h. HTTP kennt keine Zustände
wie "eingeloggt" und "ausgeloggt", und besitzt auch keine Speichermöglichkeit
für soetwas wie eine Session-ID. Stattdessen muss man bei jeder Anfrage an den
Server jedes Mal Nutzername und Passwort mitschicken.
Da es recht unkomfortabel wäre, bei jeder neu geladenen Seite seine Zugangdsaten erneut einzugeben, merkt sich der Browser die Zugangsdaten, und schickt sie automatisch bei weiteren Anfragen an den Server mit.
Dies bedeutet aber, dass man gegenüber dem Server keinen Logout erklären kann, denn es gibt keine Session-ID oder ähnliches, die man für ungültig erklären könnte. Man könnte lediglich die Zugangsdaten selbst für ungültig erklären, z.B. indem man sich ein neues Passwort zusenden lässt [1].
Einen Logout müsste man hier stattdessen gegenüber dem Browser erklären, der Browser bräuchte also einen "bitte vergiss die HTTP-Auth-Daten"-Knopf. Manche Browser besitzen etwas derartiges (meist im Zusammenhang mit den Privatsphäre-Einstellungen), so dass man alle Logins, den Cache, die History usw. löschen kann [2]. Andernfalls werden die Logins erst vergessen, wenn der Browser geschlossen wird.
Es gibt aber eine Möglichkeit, dies zu umgehen: Normalerweise sollte sich ein Browser nur 1 Nutzername/Passwort pro Webseite merken. Versucht man nun, sich mit anderen Zugangsdaten einzuloggen, sollten die bisher-gemerkten-Zugangsdaten vergessen werden. Genau dies tut der obige Knopf: Er versucht, sich mit ungültigen Zugangdaten (in diesem Fall: Nutzername=logout) einzuloggen.
Fußnoten:
[1] Allerdings weiß ich nicht, wie unmittelbar danach die alten Zugangsdaten ungültig werden.
[2] z.B. Firefox: History -> Clear Recent History -> [x] Active Logins