-
Notifications
You must be signed in to change notification settings - Fork 5.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CookieCsrfTokenRepository overwrites previous Set-Cookie response headers #13075
Comments
@mraible thanks for the report! I have debugged this with the help of @marcusdacoregio and found that the Since both the I'll update the title of this issue to be specific to the problem and add a fix. Thanks again! |
@sjohnr I tried testing this with Spring Boot 3.1.0-SNAPSHOT today, but it still seems to pull in Spring Security 6.0.2. Is there an easy way to tell Maven to use Spring Security 6.1.0-SNAPSHOT? Also, I saw the following deprecation errors when building.
However, when I dig into the source code, I don't see the methods as deprecated. |
Hi @mraible, I think that Spring Boot snapshots are not using Spring Security snapshots, see https://github.com/spring-projects/spring-boot/blob/9a0b5e01789495b87c5a11bc9b9d6af5d92a8e08/spring-boot-project/spring-boot-dependencies/build.gradle#L1471.
You can override the Spring Security version by adding a property to your <properties>
<spring-security.version>6.1.0-SNAPSHOT</spring-security.version>
</properties> |
@marcusdacoregio Thank you! Adding the I'm still curious about the deprecation warnings. |
Sorry, I haven't noticed the line about the deprecations. You can have more detail about the deprecations on this issue #12629 and in the 6.1.0-SNAPSHOT documentation. |
Thanks @marcusdacoregio! I was able to solve the deprecation warnings by changing from this: @Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests((authz) -> authz
.requestMatchers("/", "/index.html", "*.ico", "*.css", "*.js", "/api/user").permitAll()
.anyRequest().authenticated()
);
http.oauth2Login();
http.oauth2ResourceServer().jwt();
http.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.csrfTokenRequestHandler(new CsrfTokenRequestAttributeHandler());
http.addFilterAfter(new CookieCsrfFilter(), BasicAuthenticationFilter.class);
http.addFilterAfter(new SpaWebFilter(), BasicAuthenticationFilter.class);
return http.build();
} To this: @Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests((authz) -> authz
.requestMatchers("/", "/index.html", "*.ico", "*.css", "*.js", "/api/user").permitAll()
.anyRequest().authenticated())
.oauth2Login(withDefaults())
.oauth2ResourceServer((oauth2) -> oauth2.jwt(withDefaults()))
.csrf((csrf) -> csrf
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.csrfTokenRequestHandler(new CsrfTokenRequestAttributeHandler()))
.addFilterAfter(new CookieCsrfFilter(), BasicAuthenticationFilter.class)
.addFilterAfter(new SpaWebFilter(), BasicAuthenticationFilter.class);
return http.build();
} |
Describe the bug
With Spring Boot 3.0.5, I have the following Security Configuration and CSRF works as expected.
If I upgrade to 3.1.0-RC1, it seems that CSRF causes issues, and I'm unable to login and see any endpoints (e.g.
/api/groups
) that are secured. It results in an endless redirect that eventually results in rate-limiting errors (from Auth0, in my case).To Reproduce
Here's a repo that you can reproduce the problem with: https://github.com/oktadev/auth0-spring-boot-angular-crud-example
Instructions to reproduce:
Clone the repo above.
Install the Auth0 CLI and run
auth0 login
in a terminal. Then, runauth0 apps create
:Copy the results from the CLI into an okta.env file:
Start the app and log in:
You'll get an infinite redirect when you try to hit
http://localhost:8080/api/groups
. If you disable CSRF, it will work. Also, if you modifypom.xml
to use Spring Boot version 3.0.5, everything will work without disabling CSRF.Expected behavior
Everything should work just fine with Spring Boot 3.1, as it does with Spring Boot 3.0.5.
Sample
https://github.com/oktadev/auth0-spring-boot-angular-crud-example
The text was updated successfully, but these errors were encountered: