Pregunta

Tengo curiosidad por cómo se acuerda de trabajo Me y ¿cómo funciona en la primavera de Seguridad?

Yo entiendo que servidor envía las cookies de larga vida para el cliente. Y a continuación, el cliente envía de vuelta de la galleta y el servidor puede reconocer el cliente porque no hay algo así como un mapa de hachís en el servidor con cookie --> session relaciones.

No entiendo cómo el servidor [aplicación de servidor] reconoce un cliente por el servidor después de galletas [Tomcat] se ha reiniciado.

¿Cómo y dónde guardar la primavera de Seguridad mapa cookie-session antes de apagar el servidor? ¿Es el servidor específico (es decir, algo diferente se pasó en Tomcat, Espolón, etc)?

P.S. Uno de los problemas más relacionado con la primavera de Seguridad y redistribución: aunque yo no marque RememberMe sesión, todavía estoy reconoce después de redistribución durante unos 3 minutos. Es reparable?

¿Fue útil?

Solución

Los documentos de seguridad Primavera discuten cómo funciona en realidad.

  

Este enfoque utiliza hash para lograr una estrategia de recordar-me útil. En esencia, se envía una cookie al navegador si la autenticación tiene éxito interactiva, con la cookie que se compone de la siguiente manera:

     

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

     

...

     

Como tal, el recordar-me ficha sea válida únicamente para el período especificado, y siempre que el nombre de usuario, contraseña y la clave no cambia. En particular, esto tiene un problema de seguridad potencial en el que un capturado recordar-me token se puede utilizar desde cualquier agente de usuario hasta el momento en que expira el token. Este es el mismo problema que con la autenticación implícita.

Básicamente, la cookie contiene el nombre de usuario, contraseña, fecha de caducidad y una clave (que se especifica), todos los cuales son hash juntos. Cuando su navegador envía el contenido de esta cookie al servidor, Spring Security:

  1. Recupera la contraseña del programa de fondo para el nombre de usuario dado
  2. calcula el md5Hex() del nombre de usuario / contraseña / etc de la base de datos y lo compara con el valor de la cookie
  3. Si coinciden - que está en el sistema! Si no es un partido, entonces usted ha suministrado una cookie forjado o uno de los / contraseña / nombre de usuario clave ha cambiado.

La suposición subyacente es que la función hash - la parte md5Hex() anterior - proporciona una manera de codificar fácilmente alguna pieza de datos en una dirección todavía es increíblemente difícil y poco práctico para invertir (para recuperar la contraseña del texto md5Hex).

Otros consejos

cookies de sesión confundir Dont' con las galletas Recuerde Me.

cookies

Sesión es enviado por el servidor (por ejemplo, Tomcat) y se utiliza para solicitud entrante asociado con la sesión.

Recordarme cookie se envía por la primavera de Seguridad para autenticar al cliente en las diferentes sesiones (por ejemplo, después de la expiración de la sesión original o después del reinicio del servidor).

Para autenticar un usuario por Recordarme cookie Spring Security ofrece 2 estrategias:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top