Ich habe versucht herauszufinden, wie SameSite Cookie mit Spring Boot (Spring Web MVC + Tomcat) verwendet wird.
Siehe die MDN-Dokumentation.
Tomcat serialisiert "javax.servlet.http.Cookie" in eine Zeichenfolge, um das Cookie in die HTTP-Antwort zu schreiben.
Die Serialisierung erfolgt über die Schnittstelle org.apache.tomcat.util.http.CookieProcessor
.
Die Datei org.apache.tomcat.util.http.Rfc6265CookieProcessor wird als Implementierungsklasse bereitgestellt. Sie können das SameSite-Attribut jedoch mithilfe der Methode setSameSiteCookies dieser Klasse Rfc6265CookieProcessor hinzufügen.
Der Satz "Rfc6265CookieProcessor" zum Hinzufügen des SameSite-Attributs muss in "org.apache.catalina.Context" festgelegt werden. Wenn er jedoch in Spring Boot verwendet werden kann, ist dies vorerst in Ordnung. Daher überspringen wir die Anpassungsmethode nur für Tomcat.
Mit Spring Boot können Sie den "Kontext" von Tomcat anpassen, indem Sie eine Komponente bereitstellen, die die Schnittstelle "org.springframework.boot.web.embedded.tomcat.TomcatContextCustomizer" implementiert.
Sie können das SameSite-Attribut einem Cookie mit der folgenden Implementierungsklasse hinzufügen.
package com.example;
import org.apache.catalina.Context;
import org.apache.tomcat.util.http.Rfc6265CookieProcessor;
import org.springframework.boot.web.embedded.tomcat.TomcatContextCustomizer;
import org.springframework.stereotype.Component;
@Component
public class SameSiteCookieTomcatContextCustomizer implements TomcatContextCustomizer {
@Override
public void customize(final Context context) {
final Rfc6265CookieProcessor cookieProcessor = new Rfc6265CookieProcessor();
cookieProcessor.setSameSiteCookies("Lax");
context.setCookieProcessor(cookieProcessor);
}
}
Wie @tokuhirom mir sagte: Bei Verwendung von Spring Session wird standardmäßig das SameSite-Attribut hinzugefügt -session-core / src / main / java / org / springframework / session / web / http / DefaultCookieSerializer.java # L88) Es scheint.
Wir haben festgestellt, dass es zwei Möglichkeiten gibt, SameSite-Cookies mit Spring Boot (Spring Web MVC + Tomcat) zu verwenden:
Recommended Posts