Spring-Boot 3.4.1 aktualisieren Spring-Sicherheitsfehler: Eine Filterkette, die jeder Anfrage entspricht, wurde bereits
Posted: 20 Jan 2025, 18:29
Ich habe zwei Sicherheitskonfigurationen in zwei Bibliotheken
Die erste dient der Authentifizierung:
Zweites fügt einen Ressourcenfilter hinzu:
Es funktionierte perfekt bis Spring-Boot 3.3.?
Nach dem Update auf Spring-Boot 3.4.1 startete der Spring-Kontext nicht mehr mit einer Fehlermeldung
Eine Filterkette, die jeder Anfrage entspricht [DefaultSecurityFilterChain, definiert als „filterChain“ in ...“, wurde bereits konfiguriert, was bedeutet, dass diese Filterkette ... niemals aufgerufen wird. Bitte verwenden Sie HttpSecurity#securityMatcher, um sicherzustellen, dass nur eine Filterkette für „jede Anfrage“ konfiguriert ist und dass die Filterkette „jede Anfrage“ zuletzt veröffentlicht wird.
Nachdem ich in jeder Konfiguration requestMatcher (alle Anfragen) hinzugefügt habe
es funktioniert wie erwartet. Aber wenn ich Kommentare zu Spring-Security-Problemen lese: https://github.com/spring-projects/spri ... sues/15220
Ich habe Zweifel an meiner Lösung.
Was meinst du?
Ich passe meinen Code gemäß dem Vorschlag von @Roar S. an
Es funktioniert, aber .securityMatcher("/**") sieht verdächtig aus. Und ohne .securityMatcher("/**") startet es nicht
Die erste dient der Authentifizierung:
Code: Select all
@Bean
@Order(10)
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(authorizeRequests ->
authorizeRequests
.requestMatchers(createAntRequestMatchers(whitelist))
.permitAll().anyRequest()
.authenticated()
)
.oauth2ResourceServer( ...)
return http.build();
}
Code: Select all
@Bean
@Order(100)
public SecurityFilterChain filterChain(HttpSecurity http, ResourceFilter resourceFilter) throws Exception {
return http
.authorizeHttpRequests(authorizeRequests ->
authorizeRequests
.requestMatchers(createAntRequestMatchers(whitelist))
.permitAll().anyRequest()
.authenticated()
).addFilterAfter(resourceFilter, SessionManagementFilter.class).build();
}
Nach dem Update auf Spring-Boot 3.4.1 startete der Spring-Kontext nicht mehr mit einer Fehlermeldung
Eine Filterkette, die jeder Anfrage entspricht [DefaultSecurityFilterChain, definiert als „filterChain“ in ...“, wurde bereits konfiguriert, was bedeutet, dass diese Filterkette ... niemals aufgerufen wird. Bitte verwenden Sie HttpSecurity#securityMatcher, um sicherzustellen, dass nur eine Filterkette für „jede Anfrage“ konfiguriert ist und dass die Filterkette „jede Anfrage“ zuletzt veröffentlicht wird.
Nachdem ich in jeder Konfiguration requestMatcher (alle Anfragen) hinzugefügt habe
Code: Select all
http.securityMatcher("/**").authorizeHttpRequests(...
Ich habe Zweifel an meiner Lösung.
Was meinst du?
Ich passe meinen Code gemäß dem Vorschlag von @Roar S. an
Code: Select all
@Bean
@Order(10)
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.securityMatcher("/**")
.authorizeHttpRequests(authorizeRequests ->
authorizeRequests
.requestMatchers(createAntRequestMatchers(whitelist))
.permitAll().anyRequest()
.authenticated()
)
.oauth2ResourceServer( ...)
return http.build();
}
---------
@Bean
@Order(100)
public SecurityFilterChain filterChain(HttpSecurity http, ResourceFilter resourceFilter) throws Exception {
return http.securityMatcher("/**")
.addFilterAfter(resourceFilter, SessionManagementFilter.class).build();
}