Frage

Ich bin gespannt, wie erinnert ich mich und wie funktioniert es in der Frühlingssicherheit?

Ich verstehe, dass der Server langlebige Cookies an den Client sendet. Und dann sendet der Client Cookie zurück und der Server kann den Client erkennen, da auf dem Server mit Beziehungen so etwas wie Hash-Map vorhanden ist cookie --> session.

Ich verstehe nicht, wie der Server [serverseitige Anwendung] einen Client von Cookie erkennt, nachdem Server [Tomcat] neu gestartet wurde.

Wie und wo spart Frühlingssicherheit? cookie-session Karte vor dem Herunterfahren des Servers? Ist es serverspezifisch (dh etwas anderes ist in Tomcat, Steg usw. passiert)?

PS Ein weiteres Problem mit der Frühlingssicherheit und der Umschreckung: Auch wenn ich nicht ticke RememberMe Und melden Sie sich an, ich werde nach einer Umschichtung immer noch ungefähr 3 Minuten erkannt. Ist es reparierbar?

War es hilfreich?

Lösung

Die Spring Security Docs diskutieren diskutieren Wie das tatsächlich funktioniert.

Dieser Ansatz verwendet Hashing, um eine nützliche Erinnerungsstrategie zu erreichen. Im Wesentlichen wird ein Keks nach erfolgreicher interaktiver Authentifizierung an den Browser gesendet, wobei der Cookie wie folgt komponiert wird:

base64(username + ":" + expirationTime + ":" + md5Hex(username + ":" + expirationTime + ":" password + ":" + key))

...

Daher ist das RemaN-Me-Token nur für den angegebenen Zeitraum gültig und vorausgesetzt, der Benutzername, das Passwort und der Schlüssel ändern sich nicht. Insbesondere hat dies ein potenzielles Sicherheitsproblem darin, dass ein erfasster Remin-Me-Token von jedem Benutzeragenten bis zum Ablauf des Tokens von jedem Benutzervertreter verwendet werden kann. Dies ist das gleiche Problem wie bei der Digest -Authentifizierung.

Grundsätzlich enthält das Cookie den Benutzernamen, das Kennwort, die Ablaufzeit und einen Schlüssel (den Sie angeben), der alle sind Hashed zusammen. Wenn Ihr Browser den Inhalt dieses Cookies an den Server sendet, Spring Security:

  1. Ruft das Passwort vom Backend für den gegebenen Benutzernamen ab
  2. Berechnet die md5Hex() des Benutzernamens/Passwort/usw. aus der Datenbank und vergleicht sie mit dem Wert im Cookie
  3. Wenn sie übereinstimmen - Sie sind angemeldet! Wenn Sie nicht übereinstimmen, haben Sie einen gefälschten Cookie geliefert, oder eines der Benutzernamen/Passwort/Schlüssel hat sich geändert.

Die zugrunde liegende Annahme hier ist, dass die Hash -Funktion - die md5Hex() Teil oben - Bietet eine Möglichkeit, einige Daten in eine Richtung leicht zu codieren, aber es ist unglaublich schwierig und unpraktisch, um das Passwort von der wiederherzustellen md5Hex Text).

Andere Tipps

Verwechseln Sie Session Cookies nicht mit Erinnerung an mich Cookies.

Session Cookie wird vom Server (z. B. Tomcat) gesendet und verwendet, um eingehende Anforderungen mit der Sitzung zu verknüpfen.

Denken Sie daran, dass Cookie von Spring Security gesendet wird, um den Client in den verschiedenen Sitzungen zu authentifizieren (z. B. nach Ablauf der ursprünglichen Sitzung oder nach dem Neustart des Servers).

Um einen Benutzer von Remember Me Cookie Spring Security zu authentifizieren, bietet 2 Strategien:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top