• 8 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 16/11/2023

Créez une page d’erreur personnalisée avec Spring Security

Personnalisez votre page d’erreur Spring Security

Personnaliser des pages d'erreur sur Spring Security est essentiel, car cela évite de révéler trop d’informations concernant votre application web – comme celles relatives au framework ou à la base de données.

Cela dit, regardons ce qui se passe lorsque vous vous connectez en tant qu’utilisateur et tentez d’accéder à la page d’administrateur. Pour ce faire, lancez votre application web et utilisez le formulaire de connexion pour vous connecter avec le rôle  USER  en utilisant les identifiants suivants :

  • User : user

  • Mot de passe : user

Ensuite, dirigez-vous vers localhost:8080/admin pour accéder à votre page d’administrateur désignée pour le rôle ADMIN . Une page d’erreur typique de Spring Security devrait s’afficher.

Page d’erreur 403  de Spring Security par défaut
Page d’erreur 403 de Spring Security par défaut

Comme vous le voyez, vous obtenez la page de refus d’accès 403, typique de Spring Security. Il s’agit d’une exception qui apparaît lorsque les utilisateurs cherchent à accéder à une page dont l’accès ne leur est pas autorisé. Cette page indique que vous utilisez une protection par défaut de Spring Security, et un contrôle d’accès basé sur des rôles.

Allons-y pour personnaliser cette machine de guerre, ce serait dommage de décevoir les hackers !

Créez une page d’erreur pour les utilisateurs non autorisés

Commencez par mettre en place un fichier de page d’erreur HTML. Référez-vous au dossier src/main/resources. Cliquez sur le dossier static  -> New -> Folder. 

Créer un dossier d’erreur
Créer un dossier d’erreur

Intitulez ce dossier error. Vous pouvez y placer vos fichiers d’erreur. Puis, cliquez sur le dossier error-> New -> Other.

Créez un fichier HTML
Créez un fichier HTML

Dans le wizard, tapez HTML et sélectionnez un fichier HTML :

Sélectionnez un fichier HTML
Sélectionnez un fichier HTML

 Cliquez sur OK, et sur le même nom de fichier, tapez 403.html, et cliquez sur Finish. 

403.html
403.html

Vous pouvez maintenant éditer le titre et saisir votre message dans le corps :

<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8">
      <title>You are Denied!</title>
   </head>
   <body>
   Vous n'avez pas accès à cette page !
   </body>
</html>

Sauvegardez et exécutez l’application web.

Je me connecte en tant qu’utilisateur User pour ensuite saisir l’URL /admin pour vérifier si j’y ai accès.  Eh non ! Vous devriez atterrir sur votre toute nouvelle page d’erreur. 🙂

Lorsque vous programmez une page HTML statique contenant le code d'erreur dans son nom, Spring Security surcharge automatiquement la page de refus d’accès par défaut dans le mécanisme de gestion  des exceptions. Toutefois, vous devriez toujours tester méticuleusement vos pages d’erreur personnalisées. Surcharger la sécurité préconfigurée ne veut pas dire réduire la sécurité de votre application web.

Bravo pour le travail accompli !

Vous venez d’apprendre comment ajouter des pages d’erreur personnalisées. Si cela vous tente, n’hésitez pas à créer une page d’erreur pour les codes d’erreur 401 et 404. 😉

En résumé

  • Spring Security a des pages d’erreur par défaut pour gérer les exceptions.  

  • Remplacez les codes d’erreur 401, 403 et 404 par un fichier HTML personnalisé. 

  • Créez un fichier HTML en ayant recours à Eclipse dans vos fichiers de ressources.  

  • Ajoutez un titre et un corps à l’aide d’une phrase descriptive, pour expliquer à votre utilisateur la raison de la page d’erreur. 

  • Intitulez vos pages d’erreur HTML avec le nombre du code d’erreur (exemple : 403.html). 

  • Spring Security recherche automatiquement les pages d’erreur personnalisées avant d’avoir recours aux pages par défaut.  

Maintenant que vous savez sécuriser votre application avec Spring Security, montons d'un cran le niveau de sécurité en apprenant, dans le chapitre suivant, à sécuriser une API grâce à Spring Security et JWT (JSON Web Tokens).

Exemple de certificat de réussite
Exemple de certificat de réussite