Adloun

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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →