Bob verwendet eine Webanwendung, um etwas zu erreichen. Und:
- Sein Browser ist auf Diät, daher unterstützt er keine Cookies .
- Die Webanwendung ist sehr beliebt, sie befasst sich zu einem bestimmten Zeitpunkt mit vielen Benutzern - sie muss gut skalierbar sein . Solange die Beibehaltung der Sitzung die Anzahl der gleichzeitigen Verbindungen begrenzen würde und natürlich eine nicht zu vernachlässigende Leistungseinbuße mit sich bringt , möchten wir möglicherweise ein sitzungsloses System haben :)
Einige wichtige Hinweise:
- Wir haben Transportsicherheit ( HTTPS und seine besten Freunde);
- Hinter den Kulissen delegiert die Webanwendung im Namen des aktuellen Benutzers viele Vorgänge an externe Dienste (diese Systeme erkennen Bob als einen ihrer Benutzer an). Dies bedeutet, dass wir ihnen die Anmeldeinformationen von Bob weiterleiten müssen .
Wie authentifizieren wir Bob (bei jeder Anfrage)? Was wäre ein vernünftiger Weg, um so etwas umzusetzen?
- spielt Tennis mit den Anmeldeinformationen über HTML - Formular ausgeblendeten Felder ... die Kugel enthält die Anmeldeinformationen ( Benutzername und Passwort ) und die zwei Schläger sind der Browser und die Web - Anwendung ist. Mit anderen Worten, wir können Daten über Formularfelder anstatt über Cookies hin und her transportieren. Bei jeder Webanforderung veröffentlicht der Browser die Anmeldeinformationen. Im Fall einer einseitigen Anwendung kann dies jedoch so aussehen, als würde man Squash gegen eine Gummiwand spielen, anstatt Tennis zu spielen , da das Webformular mit den Anmeldeinformationen möglicherweise während der gesamten Lebensdauer der Webseite am Leben bleibt (und der Server wird so konfiguriert, dass die Anmeldeinformationen nicht zurückgegeben werden).
- Speichern des Benutzernamens und des Passworts im Kontext der Seite - JavaScript-Variablen usw. Hier ist eine einzelne Seite erforderlich, IMHO.
- verschlüsselte tokenbasierte Authentifizierung. In diesem Fall würde die Anmeldeaktion zur Generierung eines verschlüsselten Sicherheitstokens (Benutzername + Kennwort + etwas anderes) führen. Dieses Token wird dem Client zurückgesandt, und die anstehenden Anforderungen werden von dem Token begleitet. Macht das Sinn? Wir haben bereits HTTPS ...
- Andere...
- letzter Ausweg: Tun Sie dies nicht, speichern Sie Anmeldeinformationen in der Sitzung! Die Sitzung ist gut. Mit oder ohne Cookies.
Denken Sie an Web- / Sicherheitsbedenken in Bezug auf eine der zuvor beschriebenen Ideen? Beispielsweise,
- Zeitüberschreitung - Möglicherweise behalten wir einen Zeitstempel zusammen mit den Anmeldeinformationen bei (Zeitstempel = die Zeit, zu der Bob seine Anmeldeinformationen eingegeben hat). Wenn beispielsweise JETZT - Zeitstempel> Schwellenwert , wird die Anforderung möglicherweise abgelehnt.
- Cross-Site-Scripting- Schutz - sollte in keiner Weise anders sein, oder?
Vielen Dank, dass Sie sich die Zeit genommen haben, dies zu lesen :)