Saltar al contenido

Agregue una bandera segura a la cookie JSESSIONID en primavera automáticamente

Solución:

Cuando usa spring-session, por ejemplo, para persistir su sesión en reddis, esto se hace automáticamente. La cookie es creada por org.springframework.session.web.http.CookieHttpSessionStrategy En cual CookieHttpSessionStrategy#createSessionCookie comprueba si la solicitud llega a través de HTTPS y se configura de forma segura en consecuencia:

sessionCookie.setSecure(request.isSecure());

Si lo haces no use spring-session, puede configurar cookies seguras usando un ServletContextInitializer. Utilice una propiedad de la aplicación para establecerla en verdadero / falso según el perfil.

@Bean
public ServletContextInitializer servletContextInitializer(@Value("${secure.cookie}") boolean secure) {
    return new ServletContextInitializer() {

        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
            servletContext.getSessionCookieConfig().setSecure(secure);
        }
    };
}

application.properties (usado en dev cuando el perfil ‘prod’ no está activo):

secure.cookie=false

application-prod.properties (solo se usa cuando el perfil ‘prod’ está activo, sobrescribe el valor en application.properties):

secure.cookie=false

inicie su aplicación en el servidor prod con:

--spring.profiles.active=prod

Parece un esfuerzo, si no ha trabajado con perfiles hasta ahora, pero lo más probable es que necesite un perfil para el entorno de producción de todos modos, por lo que realmente vale la pena.

Si está utilizando Spring Boot, existe una solución simple para ello. Simplemente establezca la siguiente propiedad en su application.properties:

server.servlet.session.cookie.secure=true

Fuente: Spring docs – Apéndice A. Propiedades comunes de la aplicación

Si tiene algún entorno con HTTPS y otro sin él, deberá configurarlo como falso en los perfiles sin HTTPS. De lo contrario, se ignora la cookie segura.

en su application.yml solo agregue

server:
  session:
    cookie:
      secure: true
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *