[JAVA] Le test Spring Boot @WebMvcTest active la sécurité par défaut de Spring Security

Lors de l'utilisation de WebFlux et de la sécurité avec Spring Boot 2.3.4.RELEASE Dans un test qui donne @ WebMvcTest pour tester le contrôleur, etc. Quand j'ai fait une demande au contrôleur avec WebTestClient, on m'a demandé une authentification de base pour une raison quelconque.

C'est un projet qui utilise Spring Security, mais qui n'utilise pas l'authentification de base.

Bien que la cause n'ait pas pu être recherchée, il y avait un problème sur GitHub.

En résumé, @ WebFluxTest configure les @ Bean liés au contrôleur tels que @ Conroller, @ ControllerAdvice et WebFluxConfigurer, mais ne configure pas @ Beande@ Service`.

Cependant, il semble que la classe avec @ Configuration soit générée comme @ Bean. Et il semble que seul @ Bean qui correspond à la condition en soit généré.

Si vous avez une configuration de sécurité pour Spring Security WebFlux, vous aurez souvent la configuration suivante comme décrit dans la documentation.

@Configuration
@EnableWebFluxSecurity
public class SecurityConfiguration {

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

À ce stade, SecurityWebFilterChain n'est pas généré, mais @ EnableWebFluxSecurity est analysé avec SecurityConfiguration.

En regardant la définition de @ EnableWebFluxSecurity, [@Import (WebFluxSecurityConfiguration.class)](https://github.com/spring-projects/spring-security/blob/651c94b3859eb6c3eee4ee632b14rc19e59d99d8ddorking/configuration/ /security/config/annotation/web/reactive/EnableWebFluxSecurity.java#L87-L88) est attribué.

WebFluxSecurityConfiguration générera le SecurityWebFilterChain par défaut (https://github.com/spring-projects/spring-security/blob/651c94b3859eb6c3eee4ee632b1419e59d99d8dd/config/srcame/main/java / /web/reactive/WebFluxSecurityConfiguration.java#L100-L111).

Il semble que la sécurité par défaut de Spring Security soit appliquée au test avec @ WebFluxTest de cette manière.

En guise de contre-mesure, il semble qu'il n'y ait pas d'autre choix que de explicitement @ Importer`` @ Configuration qui génère SecurityWebFilterChain préparé dans le projet.

Recommended Posts

Le test Spring Boot @WebMvcTest active la sécurité par défaut de Spring Security
Essayez d'utiliser Spring Boot Security
Test de mémo d'utilisation de Spring Security
Écrire du code de test avec Spring Boot
Utiliser DBUnit pour le test Spring Boot
Effectuer un test de confirmation de transaction avec Spring Boot
Test de validation de classe de formulaire avec Spring Boot
Obtenez une authentification BASIC avec Spring Boot + Spring Security
À propos de la conception de Spring Boot et de l'environnement de test unitaire
Hash des mots de passe avec Spring Boot + Spring Security (avec sel, avec étirement)
Essayez l'authentification LDAP avec Spring Security (Spring Boot) + OpenLDAP
Défi Spring Boot
Forme de botte de printemps
Spring Boot Rappelez-vous
gae + botte à ressort
[Introduction à Spring Boot] Fonction d'authentification avec Spring Security
Créez un serveur Spring Cloud Config en toute sécurité avec Spring Boot 2.0
Comment écrire un test unitaire pour Spring Boot 2
Mémo d'utilisation de Spring Security: coopération avec Spring MVC et Boot
[Compatible JUnit 5] Ecrire un test en utilisant JUnit 5 avec Spring boot 2.2, 2.3
Spring Boot avec les paramètres du filtre de sécurité Spring et les points addictifs
Implémentez une API Rest simple avec Spring Security avec Spring Boot 2.0
[JUnit 5] Ecrivez un test de validation avec Spring Boot! [Test de paramétrage]
Testez la classe injectée sur le terrain dans le test de démarrage Spring sans utiliser le conteneur Spring
Créez un site de démonstration simple avec Spring Security avec Spring Boot 2.1
J'ai écrit un test avec Spring Boot + JUnit 5 maintenant
Fiche d'apprentissage SPRING BOOT 01
Botte de printemps + Heroku Postgres
À propos de l'authentification Spring Security
Rédaction de mémo de démarrage de printemps (1)
Première botte à ressort (DI)
Fiche d'apprentissage SPRING BOOT 02
Aide-mémoire Spring Boot2
Gestion des exceptions Spring Boot
Mappage du servlet Spring Boot
Environnement de développement-développement Spring Boot-
Procédure d'apprentissage Spring Boot
Spring Security soulève 403 interdits
Apprentissage de Spring Boot [Début]
Rédaction de mémos de démarrage de printemps (2)
Résumé du document Spring Boot 2.2
[Spring Boot] DataSourceProperties $ DataSourceBeanCreationException
Disponibilité de l'application Spring Boot 2.3
Tutoriels Spring Boot Sujets
Télécharger avec Spring Boot
Implémentez une API Rest simple avec Spring Security & JWT avec Spring Boot 2.0
Utilisez Spring Test + Mockito + JUnit 4 pour le test unitaire Spring Boot + Spring Retry