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.
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.
Intitulez ce dossier error. Vous pouvez y placer vos fichiers d’erreur. Puis, cliquez sur le dossier error-> New -> Other.
Dans le wizard, tapez HTML et sélectionnez un fichier HTML :
Cliquez sur OK, et sur le même nom de fichier, tapez 403.html, et cliquez sur Finish.
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).