Cuando un cliente no autenticado solicita una URL que requiere un nivel de acceso no anónimo como se define en security-config.xml
, la seguridad de primavera envía un redireccionamiento HTTP a nuestra página de inicio de sesión (por ejemplo, /login
). Esta bien.¿Cómo puedo evitar que la seguridad de primavera se anexe; jsessionid = XXX a los redireccionamientos de inicio de sesión?
El problema es que, al no existir una sesión existente (identificada por una cookie provista por el cliente), spring-security emite un redireccionamiento que también especifica la nueva sesión del cliente en la URL, p. /login;jsessionid=8o7pglapojus
.
Muchos contenedores admiten esto (aparentemente funciona bien en tomcat?), Pero parece que Jetty (que es lo que estamos utilizando ahora) no tiene: la URL redirigida llega a nuestro enrutador de URL completamente intacta (incluyendo el "parámetro" jsessionid
, y la sesión nombrada no está asociada con la solicitud /login
por muelle/seguridad de primavera (es decir, se proporciona una ID de sesión totalmente nueva en el encabezado Set-Cookie de la respuesta a la solicitud /login
).
Podemos solucionar esto haciendo coincidir /login.*
en nuestras rutas, pero tengo curiosidad por saber si hay alguna manera de evitar la emisión de la identificación de sesión en la redirección de autenticación para comenzar.
@BalusC ninguna solución conocida previamente muelle 3? – Xorty
@Xorty Eche un vistazo a http://fralef.org/tomcat-disable-jsessionid-in-url.html, si la actualización a Spring Security 3+ no es una opción. –