Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 8 · Exercice de TD
La console réservée
Sécuriser l'application · niveau 1 (application)
Énoncé
Vérifier par un test que la console H2 répond 401 à un anonyme et 403 à la comptable. Que répond-elle à l'administrateur dans un test MockMvcTester, et pourquoi ?
Corrigé
// Exercice 8.6
@Test
void ex6_consoleH2() {
assertThat(mvc.get().uri("/h2-console/")).hasStatus(401);
assertThat(mvc.get().uri("/h2-console/").with(httpBasic("compta", "calcul-2026"))).hasStatus(403);
// La sécurité laisse passer l'administrateur ; mais MockMvc ne contient que la
// DispatcherServlet de Spring, pas la servlet de la console H2 : d'où le 404 (ni 401 ni 403).
assertThat(mvc.get().uri("/h2-console/").with(httpBasic("admin", "libraire-2026")))
.hasStatus(404);
}
Dans le test, l'administrateur reçoit 404 : la sécurité l'a laissé passer, mais MockMvcTester ne contient que la servlet de Spring MVC, pas celle de la console H2. Avec l'application réellement lancée, la comptable reçoit 403 et l'administrateur la page de la console (son début) :
$ curl -i -u compta:calcul-2026 http://localhost:8000/h2-console/
HTTP/1.1 403
Content-Type: application/problem+json;charset=UTF-8
Content-Length: 191
{"status":403,"title":"Accès refusé","detail":"Votre compte n’a pas le droit d’accéder à cette ressource.","erreur":"Votre compte n’a pas le droit d’accéder à cette ressource."}
$ curl -i -u admin:libraire-2026 http://localhost:8000/h2-console/
HTTP/1.1 200
Content-Type: text/html
Content-Length: 938100 % 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.