【问题标题】:Setting jsessonid cookie to SameSite=Strict attribute in spring boot?在 Spring Boot 中将 jsessonid cookie 设置为 SameSite=Strict 属性?
【发布时间】:2019-04-02 07:19:23
【问题描述】:

将 jsessionId cookie 设置为 SameSite=Strict 的 spring-boot 配置是什么。

JsessionId 需要添加 SameSite=Strict 或现有 cookie 不是新 cookie 生成。是否支持?

【问题讨论】:

标签: java spring-boot security cookies


【解决方案1】:

使用 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;
}

【讨论】:

    【解决方案2】:

    我使用 Rfc6265CookieProcessor 在 Spring Boot 应用程序中配置 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);
            }
        };
    }
    

    【讨论】:

    • 你需要导入的Context类来自org.apache.catalina.Context
    【解决方案3】:

    根据this open issue in Spring Security,目前尚不支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-11
      • 2020-07-04
      • 2020-04-25
      • 2019-12-18
      • 2021-01-04
      • 2020-12-28
      • 2020-04-18
      • 1970-01-01
      相关资源
      最近更新 更多