Comment ne se souvient de moi travail au printemps de sécurité?
-
01-10-2019 - |
Question
Je suis curieux de voir comment le travail ne se souvient de moi et comment ça marche au printemps de sécurité?
Je comprends que le serveur envoie des cookies à long terme au client. Et puis le client renvoie cookie et le serveur peut reconnaître le client, car il y a quelque chose comme le hachage carte sur le serveur avec les relations cookie --> session
.
Je ne comprends pas comment le serveur [d'application côté serveur] ne reconnaît un client par cookie qui serveur [Tomcat] a été redémarré.
Comment et où la sécurité Spring Enregistrer la carte de cookie-session
avant l'arrêt du serveur? Est-il spécifique au serveur (à savoir différent de quelque chose est arrivé dans Tomcat, Jetty, etc.)?
P.S. un problème plus lié à la sécurité et le redéploiement du printemps: même si je ne cochez pas RememberMe
et se connecter, je suis encore reconnu après le redéploiement pendant environ 3 minutes. Est-il réparable?
La solution
Les docs Printemps sécurité discutent comment cela fonctionne réellement.
Il utilise l'approche de hachage pour obtenir un utile souvenir-moi stratégie. Essentiellement un cookie est envoyé au navigateur lors de l'authentification interactive réussie, avec le cookie étant composé comme suit:
base64(username + ":" + expirationTime + ":" + md5Hex(username + ":" + expirationTime + ":" password + ":" + key))
...
En tant que tel le souvenir-moi jeton est valide que pour la période spécifiée, et à condition que le nom d'utilisateur, mot de passe et clé ne change pas. En particulier, ce qui a un problème de sécurité en ce qu'un souvenir capturé-moi jeton sera utilisable de tout agent utilisateur jusqu'à ce que le jeton expire. Ce problème est le même que l'authentification Digest.
Fondamentalement, le cookie contient le nom d'utilisateur, mot de passe, le temps d'expiration et une clé (que vous spécifiez), qui sont tous
Autres conseils
cookies de session confondez « Dont avec les cookies Se souvenir de moi.
Session cookie est envoyé par le serveur (par exemple Tomcat) et utilisé pour associer requête entrante à la session.
Se souvenir de moi cookie est envoyé par Spring Security pour authentifier le client dans les différentes sessions (par exemple après l'expiration de la session d'origine ou après le redémarrage du serveur).
Pour authentifier un utilisateur par Se souvenir de moi cookie Spring Security offre 2 stratégies:
-
TokenBasedRememberMeServices
- utilisé par défaut, moins sécurisé - cookie contient un hachage du mot de passe et d'autres données -
PersistentTokenBasedRememberMeServices
- plus sûr, nécessite un accès de base de données - cookies contiennent un identifiant unique stocké dans la base de données