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