[JAVA] Der Spring Boot @ WebMvcTest-Test aktiviert die Standardsicherheit von Spring Security

Bei Verwendung von WebFlux und Security mit Spring Boot 2.3.4.RELEASE In einem Test, der "@ WebMvcTest" zum Testen des Controllers usw. gibt. Als ich mit "WebTestClient" eine Anfrage an den Controller stellte, wurde ich aus irgendeinem Grund nach der Standardauthentifizierung gefragt.

Es ist ein Projekt, das Spring Security verwendet, jedoch keine Standardauthentifizierung.

Obwohl die Ursache nicht untersucht werden konnte, gab es auf GitHub ein Problem.

Zusammenfassend konfiguriert "@ WebFluxTest" Controller-bezogene "@ Bean" wie "@ Conroller", "@ ControllerAdvice" und "WebFluxConfigurer", konfiguriert jedoch nicht "@ Bean" von "@ Service".

Es scheint jedoch, dass die Klasse mit "@ Configuration" als "@ Bean" generiert wird. Und es scheint, dass nur "@ Bean", das der Bedingung entspricht, daraus generiert wird.

Wenn Sie eine Sicherheitskonfiguration für Spring Security WebFlux haben, haben Sie häufig die folgende Konfiguration, wie in der Dokumentation beschrieben.

@Configuration
@EnableWebFluxSecurity
public class SecurityConfiguration {

    @Bean
    public SecurityWebFilterChain springWebFilterChain(ServerHttpSecurity http) {
        // do stuff
    }
}

Zu diesem Zeitpunkt wird "SecurityWebFilterChain" nicht generiert, sondern "@ EnableWebFluxSecurity" wird zusammen mit "SecurityConfiguration" gescannt.

Schauen Sie sich die Definition von "@ EnableWebFluxSecurity" an, [@Import (WebFluxSecurityConfiguration.class)](https://github.com/spring-projects/spring-security/blob/651c94b3859eb6c3eee4ee632b1419e59d99dr /security/config/annotation/web/reactive/EnableWebFluxSecurity.java#L87-L88) wird zugewiesen.

WebFluxSecurityConfiguration generiert die Standard-SecurityWebFilterChain (https://github.com/spring-projects/spring-security/blob/651c94b3859eb6c3eee4ee632b1419e59d99d8dd/config/src/main/java/org/ /web/reactive/WebFluxSecurityConfiguration.java#L100-L111).

Es scheint, dass die Standardsicherheit von Spring Security auf diese Weise auf den Test mit "@ WebFluxTest" angewendet wird.

Als Gegenmaßnahme scheint es keine andere Wahl zu geben, als explizit "@ Import" "@ Configuration" zu verwenden, wodurch "SecurityWebFilterChain" generiert wird, das im Projekt vorbereitet wurde.

Recommended Posts

Der Spring Boot @ WebMvcTest-Test aktiviert die Standardsicherheit von Spring Security
Versuchen Sie es mit Spring Boot Security
Spring Security-Verwendungsnotiztest
Schreiben Sie den Testcode mit Spring Boot
Verwenden Sie DBUnit für den Spring Boot-Test
Führen Sie einen Transaktionsbestätigungstest mit Spring Boot durch
Formularklassenvalidierungstest mit Spring Boot
Erreichen Sie die BASIC-Authentifizierung mit Spring Boot + Spring Security
Informationen zum Entwerfen einer Spring Boot- und Unit-Test-Umgebung
Hash-Passwörter mit Spring Boot + Spring Security (mit Salt, mit Stretching)
Versuchen Sie die LDAP-Authentifizierung mit Spring Security (Spring Boot) + OpenLDAP
Fordern Sie Spring Boot heraus
Spring Boot Form
Spring Boot Denken Sie daran
gae + frühlingsstiefel
[Einführung in Spring Boot] Authentifizierungsfunktion mit Spring Security
Erstellen Sie mit Spring Boot 2.0 einen Spring Cloud Config Server mit Sicherheit
So schreiben Sie einen Komponententest für Spring Boot 2
Verwendungshinweis zu Spring Security: Zusammenarbeit mit Spring MVC und Boot
[JUnit 5-kompatibel] Schreiben Sie einen Test mit JUnit 5 mit Spring Boot 2.2, 2.3
Spring Boot mit Spring Security Filter-Einstellungen und Suchtpunkten
Implementieren Sie eine einfache Rest-API mit Spring Security mit Spring Boot 2.0
[JUnit 5] Schreiben Sie einen Validierungstest mit Spring Boot! [Parametrisierungstest]
Testen Sie die Klasse mit Feldinjektion im Spring-Boot-Test, ohne den Spring-Container zu verwenden
Erstellen Sie mit Spring Security 2.1 eine einfache Demo-Site mit Spring Security
Ich habe jetzt einen Test mit Spring Boot + JUnit 5 geschrieben
SPRING BOOT Lernaufzeichnung 01
Frühlingsstiefel + Heroku Postgres
Informationen zur Spring Security-Authentifizierung
Schreiben von Frühlingsstiefel-Memos (1)
Erster Frühlingsstiefel (DI)
SPRING BOOT Lernprotokoll 02
Spring Boot2 Spickzettel
Spring Boot-Ausnahmebehandlung
Spring Boot Servlet-Zuordnung
Spring Boot Entwicklung-Entwicklungsumgebung-
Spring Boot-Lernverfahren
Spring Security erhöht 403 verboten
Spring Boot lernen [Anfang]
Schreiben von Spring Boot-Memos (2)
Spring Boot 2.2 Dokumentzusammenfassung
[Spring Boot] DataSourceProperties $ DataSourceBeanCreationException
Spring Boot 2.3 Verfügbarkeit von Anwendungen
Spring Boot Tutorials Themen
Mit Spring Boot herunterladen
Implementieren Sie eine einfache Rest-API mit Spring Security & JWT mit Spring Boot 2.0
Verwenden Sie Spring Test + Mockito + JUnit 4 für Spring Boot + Spring Retry Unit Test