[JAVA] SameSite-Cookie im Spring Boot (Spring Web MVC + Tomcat)

Ich habe versucht herauszufinden, wie SameSite Cookie mit Spring Boot (Spring Web MVC + Tomcat) verwendet wird.

Was ist SameSite Cookie?

Siehe die MDN-Dokumentation.

Unterstützung für Tomcat SameSite-Cookies

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.

Passen Sie den Cookie-Prozessor mit Spring Boot an

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);
    }
}

Die Frühlingssitzung verfügt standardmäßig über das SameSite-Attribut

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.

Zusammenfassung

Wir haben festgestellt, dass es zwei Möglichkeiten gibt, SameSite-Cookies mit Spring Boot (Spring Web MVC + Tomcat) zu verwenden:

Recommended Posts

SameSite-Cookie im Spring Boot (Spring Web MVC + Tomcat)
Testen Sie den Controller mit Mock MVC im Spring Boot
Legen Sie den Kontextparameter in Spring Boot fest
Spring Boot 2 Multiprojekt mit Gradle
[Spring Boot] Erstellung von Webanwendungen
Wichtige Änderungen in Spring Boot 1.5
NoHttpResponseException in Spring Boot + WireMock
Beispiel einer Webanwendung, die mit Spring Boot 1.5 mehrere Datenbanken verwaltet
Frühlingsstiefel Hallo Welt in Eclipse
Spring Boot-Anwendungsentwicklung in Eclipse
Schreiben Sie den Testcode mit Spring Boot
Implementieren Sie die REST-API mit Spring Boot
Was ist @Autowired im Spring Boot?
Implementieren Sie die Spring Boot-Anwendung in Gradle
Verwendung von Thymeleaf mit Spring Boot
Spring Boot 2.0.0 startet den integrierten Tomcat nicht
Starten Sie mit IntelliJ ein (altes) Spring Boot-Projekt
Erstellen Sie mit Gradle ein Spring Boot + Docker-Image
Statische Dateizugriffspriorität beim Spring Boot
Spring Boot-Protokoll im JSON-Format ausgeben
Memorandum zum Herunterladen lokaler Dateien mit Spring Boot
Erstellen Sie mit IntelliJ ein Java Spring Boot-Projekt
Lösen Sie die Thymeleaf-Syntaxprüfung in Spring Boot
Automatische Bereitstellung von in Java entwickelten Webanwendungen mit Jenkins [Spring Boot App Edition]
Starten Sie die Entwicklung von Webanwendungen mit Spring Boot
WAR die WEB-Anwendung per Spring Boot und stellen Sie sie auf dem Tomcat-Server bereit
[Trainieren! ] Zeigen Sie Hello World mit Spring Boot an
Funktionsweise des Dispatcher-Servlets in Spring MVC
Verwenden Sie die DynamoDB-Abfragemethode mit Spring Boot
Versuchen Sie Spring Boot 1 (Umgebungskonstruktion ~ Tomcat-Start)
DI SessionScope Bean im Spring Boot 2-Filter
Ändern Sie das Sitzungszeitlimit in Spring Boot
Führen Sie die WEB-Anwendung mit Spring Boot + Thymeleaf aus
Fügen Sie dem Cookie in Java das SameSite-Attribut hinzu
Melden Sie sich bei Spring Boot-Webanwendungen auf der Microsoft ID-Plattform an
Wichtige Änderungen in Bezug auf Spring Framework 5.0 Web MVC
Asynchrone Verarbeitung mit regelmäßiger Ausführung in Spring Boot
Führen Sie ein Spring Boot-Projekt mit VS-Code aus
Anforderungs- und Antwortprotokolle mit Spring Boot ausgeben
Servlet-Filter mit Spring Boot verwenden [Spring Boot 1.x, 2.x kompatibel]
So fügen Sie in Spring Boot einen Klassenpfad hinzu
Java-Tipps - Erstellen Sie mit Gradle ein Spring Boot-Projekt
So binden Sie mit einer Eigenschaftendatei in Spring Boot
Der offizielle Name von Spring MVC ist Spring Web MVC
Erstellen Sie einen Web-API-Server mit Spring Boot
Anmerkungen, die in Spring Boot-Aufgabenverwaltungstools verwendet werden
Zeigen Sie die Gradle-Aufgabe im Spring Boot-Projekt an
Fordern Sie Spring Boot heraus
MVC in Eclipse.
Spring Boot Form
Spring Boot Denken Sie daran
gae + frühlingsstiefel
Memorandum (Spring Web)
Geben Sie die statische Ressourcencodierung in Spring Boot an
Nehmen Sie das externe Glas mit Spring boot2 + Maven3 in das Paket auf
In die Spring Boot-Anwendung integrierte Integration von Tomcat, Apache und WebSocket
Bitte beachten Sie, dass Spring Boot + Tomcat 8.5.8 nicht verwendet werden kann!
Untersuchte asynchrone Ausführung von Abfragen in Spring Boot 1.5.9
Verwendungshinweis zu Spring Security: Zusammenarbeit mit Spring MVC und Boot
So erstellen Sie ein Spring Boot-Projekt in IntelliJ
SSO mit GitHub OAuth in der Spring Boot 1.5.x-Umgebung