Skip to content

feat: add spa support for CSRF by setting into cookie - #129

Open
svenzik wants to merge 1 commit into
mainfrom
WE2-1240
Open

feat: add spa support for CSRF by setting into cookie#129
svenzik wants to merge 1 commit into
mainfrom
WE2-1240

Conversation

@svenzik

@svenzik svenzik commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

add spa support for CSRF by setting into cookie

Signed-off-by: Sven Mitt svenzik@users.noreply.github.com

WE2-1240

Signed-off-by: Sven Mitt <svenzik@users.noreply.github.com>
private final boolean useSpaCsrfConfiguration;

public ApplicationConfiguration(@Value("${web-eid-auth-token.csrf.use-spa-configuration:false}") String useSpaCsrfConfiguration) {
this.useSpaCsrfConfiguration = Boolean.TRUE.toString().equalsIgnoreCase(useSpaCsrfConfiguration);

@mrts mrts Sep 4, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should assume that frontend and backend are served from different hosts or at least ports, so CORS must be configured as well along the lines of the following if useSpaCsrfConfiguration is enabled:

  @Bean
  @ConditionalOnProperty(
            name = USE_SPA_CSRF_CONFIGURATION_PROPERTY, // see below
            havingValue = "true"
  )
  CorsConfigurationSource corsConfigurationSource(YAMLConfig yamlConfig) {
      CorsConfiguration configuration = new CorsConfiguration();
      configuration.setAllowedOrigins(List.of(yamlConfig.getLocalOrigin()));
      configuration.setAllowedMethods(List.of("GET", "POST", "OPTIONS"));
      configuration.setAllowedHeaders(List.of("Content-Type", "X-XSRF-TOKEN"));
      configuration.setAllowCredentials(true);

      UrlBasedCorsConfigurationSource source =
              new UrlBasedCorsConfigurationSource();
      source.registerCorsConfiguration("/**", configuration);
      return source;
  }

CORS must be activated in the security filter chain as well in this case:

       if (useSpaCsrfConfiguration) {
           http.cors(Customizer.withDefaults());
       }

Also, extract the property to a constant to avoid duplication:

  private static final String USE_SPA_CSRF_CONFIGURATION_PROPERTY =
          "web-eid-auth-token.csrf.use-spa-configuration";

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants