Spring-Boot 3.4.1 aktualisieren Spring-Sicherheitsfehler: Eine Filterkette, die jeder Anfrage entspricht, wurde bereits Java

Java-Forum
Guest
 Spring-Boot 3.4.1 aktualisieren Spring-Sicherheitsfehler: Eine Filterkette, die jeder Anfrage entspricht, wurde bereits

Post by Guest »

Ich habe zwei Sicherheitskonfigurationen in zwei Bibliotheken
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();
}
Zweites fügt einen Ressourcenfilter hinzu:

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();
}
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

Code: Select all

http.securityMatcher("/**").authorizeHttpRequests(...
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

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();
}

Es funktioniert, aber .securityMatcher("/**") sieht verdächtig aus. Und ohne .securityMatcher("/**") startet es nicht

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post