将jsessionId cookie设置为SameSite=Strict的春季启动配置是什么。
JsessionId需要添加SameSite=Strict或现有cookie,而不是新生成的cookie。是支持吗?
我使用Rfc6265CookieProcessor在春季启动应用程序中配置SameSite标志作为解决方法。
build.gradle:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-tomcat'
...
}
主类中的配置:
@Bean
public ServletWebServerFactory servletContainer() {
return new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
Rfc6265CookieProcessor rfc6265CookieProcessor = new Rfc6265CookieProcessor();
rfc6265CookieProcessor.setSameSiteCookies("Strict");
context.setCookieProcessor(rfc6265CookieProcessor);
}
};
}
使用Undertow 2.1.0.Final和更高版本,您可以这样做:
public static final String COOKIE_PATTERN = "JSESSIONID";
@Bean
public UndertowServletWebServerFactory undertowServletWebServerFactory() {
UndertowServletWebServerFactory undertow = new UndertowServletWebServerFactory();
undertow.addDeploymentInfoCustomizers(
deploymentInfo -> deploymentInfo.addInitialHandlerChainWrapper(
handler -> new SameSiteCookieHandler(handler, CookieSameSiteMode.STRICT.name(), COOKIE_PATTERN)
));
return undertow;
}
根据Spring Security中的这个公开问题,这还不受支持。