Skip to content

Commit 770e509

Browse files
committed
Merge pull request #28784 from vpavic
* pr/28784: Apply SameSite session cookie property to Spring Session Closes gh-28784
2 parents 70c5eb9 + 0af4431 commit 770e509

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/SessionAutoConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import org.springframework.boot.autoconfigure.web.reactive.WebSessionIdResolverAutoConfiguration;
4949
import org.springframework.boot.context.properties.EnableConfigurationProperties;
5050
import org.springframework.boot.context.properties.PropertyMapper;
51+
import org.springframework.boot.web.server.Cookie.SameSite;
5152
import org.springframework.boot.web.servlet.server.Session.Cookie;
5253
import org.springframework.context.ApplicationContext;
5354
import org.springframework.context.annotation.Bean;
@@ -106,6 +107,7 @@ DefaultCookieSerializer cookieSerializer(ServerProperties serverProperties,
106107
map.from(cookie::getHttpOnly).to(cookieSerializer::setUseHttpOnlyCookie);
107108
map.from(cookie::getSecure).to(cookieSerializer::setUseSecureCookie);
108109
map.from(cookie::getMaxAge).asInt(Duration::getSeconds).to(cookieSerializer::setCookieMaxAge);
110+
map.from(cookie::getSameSite).as(SameSite::attributeValue).to(cookieSerializer::setSameSite);
109111
cookieSerializerCustomizers.orderedStream().forEach((customizer) -> customizer.customize(cookieSerializer));
110112
return cookieSerializer;
111113
}

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationTests.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2020 the original author or authors.
2+
* Copyright 2012-2021 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -143,7 +143,7 @@ void sessionCookieConfigurationIsAppliedToAutoConfiguredCookieSerializer() {
143143
.withPropertyValues("server.servlet.session.cookie.name=sid",
144144
"server.servlet.session.cookie.domain=spring", "server.servlet.session.cookie.path=/test",
145145
"server.servlet.session.cookie.httpOnly=false", "server.servlet.session.cookie.secure=false",
146-
"server.servlet.session.cookie.maxAge=10s")
146+
"server.servlet.session.cookie.maxAge=10s", "server.servlet.session.cookie.sameSite=strict")
147147
.run((context) -> {
148148
DefaultCookieSerializer cookieSerializer = context.getBean(DefaultCookieSerializer.class);
149149
assertThat(cookieSerializer).hasFieldOrPropertyWithValue("cookieName", "sid");
@@ -152,6 +152,7 @@ void sessionCookieConfigurationIsAppliedToAutoConfiguredCookieSerializer() {
152152
assertThat(cookieSerializer).hasFieldOrPropertyWithValue("useHttpOnlyCookie", false);
153153
assertThat(cookieSerializer).hasFieldOrPropertyWithValue("useSecureCookie", false);
154154
assertThat(cookieSerializer).hasFieldOrPropertyWithValue("cookieMaxAge", 10);
155+
assertThat(cookieSerializer).hasFieldOrPropertyWithValue("sameSite", "Strict");
155156
});
156157
}
157158

0 commit comments

Comments
 (0)