Adloun

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: 938

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 →