diff --git a/nginx/default.conf b/nginx/default.conf index c663eb1..97a45c2 100644 --- a/nginx/default.conf +++ b/nginx/default.conf @@ -24,5 +24,6 @@ server { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; } } \ No newline at end of file diff --git a/src/main/java/com/ftm/server/infrastructure/session/CookieSerializerConfig.java b/src/main/java/com/ftm/server/infrastructure/session/CookieSerializerConfig.java new file mode 100644 index 0000000..f9bf46f --- /dev/null +++ b/src/main/java/com/ftm/server/infrastructure/session/CookieSerializerConfig.java @@ -0,0 +1,14 @@ +package com.ftm.server.infrastructure.session; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.session.web.http.CookieSerializer; + +@Configuration +public class CookieSerializerConfig { + + @Bean + public CookieSerializer cookieSerializer() { + return new ProtocolAwareCookieSerializer(); + } +} diff --git a/src/main/java/com/ftm/server/infrastructure/session/ProtocolAwareCookieSerializer.java b/src/main/java/com/ftm/server/infrastructure/session/ProtocolAwareCookieSerializer.java new file mode 100644 index 0000000..c6f80a1 --- /dev/null +++ b/src/main/java/com/ftm/server/infrastructure/session/ProtocolAwareCookieSerializer.java @@ -0,0 +1,22 @@ +package com.ftm.server.infrastructure.session; + +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.session.web.http.DefaultCookieSerializer; + +public class ProtocolAwareCookieSerializer extends DefaultCookieSerializer { + + @Override + public void writeCookieValue(CookieValue cookieValue) { + HttpServletRequest request = cookieValue.getRequest(); + String proto = request.getHeader("X-Forwarded-Proto"); + + boolean isHttps = request.isSecure() || "https".equalsIgnoreCase(proto); + + // HTTPS -> Secure O + SameSite=None + // HTTP -> Secure X + SameSite null + setUseSecureCookie(isHttps); + setSameSite(isHttps ? "None" : null); + + super.writeCookieValue(cookieValue); + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index f59b3bf..35cb8ed 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -5,4 +5,7 @@ spring: jpa: hibernate: - ddl-auto: none \ No newline at end of file + ddl-auto: none + +server: + forward-headers-strategy: native \ No newline at end of file