Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 8 · Application directe du cours
Le vrai refus caché
Sécuriser l'application · niveau 3 (difficile)
Énoncé
Avec le profil csrf de la démonstration, l'administrateur reçoit 401 alors que son mot de passe est juste. En s'appuyant sur le journal de la section 8.5, expliquer la suite exacte des événements. Quelles deux modifications de la configuration font apparaître un 403 au lieu du 401, puis font réussir la requête ?
Corrigé
Le journal montre l'enchaînement. La requête POST traverse d'abord le CsrfFilter, placé avant l'authentification : il ne trouve pas de jeton et répond 403 par l'AccessDeniedHandlerImpl. Spring Boot réachemine alors la réponse d'erreur vers /error, qui repasse dans la chaîne de filtres, sans en-tête Authorization cette fois : la requête interne est anonyme, et la règle anyRequest().hasRole("ADMIN") exige une authentification ; le point d'entrée HTTP Basic répond 401. Le mot de passe de l'administrateur n'a jamais été examiné.
Première modification : .requestMatchers("/error").permitAll() laisse la réponse d'erreur passer, et l'on voit le vrai 403. Seconde modification : désactiver CSRF (pour une API sans session), ou envoyer un jeton CSRF valide ; la requête réussit alors.
100 % gratuit
La suite du chapitre est sur Adloun
- 9 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.