Implémentation de l'authentification et de l'autorisation basées sur les rôles de Spring Security avec Spring Boot 3.0
Bonjour les apprenants, nous allons ici en savoir plus sur la mise en œuvre de la sécurité Spring avec Spring Boot. La sécurité Spring fournit une authentification, une autorisation et une protection contre les attaques courantes.

Authentification - L'authentification est la façon dont nous vérifions l'identité de l'utilisateur essayant d'accéder à une ressource particulière, une fois l'authentification effectuée, nous connaissons l'identité et pouvons effectuer l'autorisation.
Autorisation - L'autorisation signifie donner la permission d'accéder à une ressource/url particulière.
Étapes pour implémenter Spring Security
Étape 1 : Ajouter la dépendance Spring Security dans POM.XML

Étape 2 : Créez une classe de configuration, ajoutez des méthodes d'authentification et d'autorisation.

@EnableWebSecurity fournit une configuration de sécurité par défaut à notre application. La sécurité par défaut active à la fois les filtres de sécurité HTTP et la chaîne de filtres de sécurité et applique une authentification de base à nos terminaux.
@Configuration indique à Spring Boot d'analyser la classe pour les définitions de bean et de les enregistrer avec le contexte de l'application.
La méthode authenticationProvider() est utilisée pour stocker tous les détails de l'utilisateur comme le nom d'utilisateur, le mot de passe, les rôles.Spring Security contient la classe DaoAuthenticationProvider qui contient userDetailsService et passwordEncoder.passwordEncoder() est utilisé pour chiffrer le mot de passe et le mot de passe chiffré est stocké dans DB.
La méthode SecutityFilterChain() consiste à autoriser les ressources, ici
.requestMatchers("/products/welcome","/products/new").permitAll() est de donner accès à tous les utilisateurs, n'importe quel utilisateur peut accéder à ces deux URL.
requestMatchers(“/products/**”).authenticated() est de donner accès aux utilisateurs authentifiés.
Étape 3 : Mettre en œuvre l'autorisation basée sur les rôles

@PreAuthorize
L'annotation est utilisée pour spécifier une expression qui sera évaluée avant l'exécution de la méthode. Si l'expression est évaluée à true, la méthode est exécutée sinon, une AccessDeniedException est levée.
La getAllProducts()
méthode ne peut être exécutée que par les utilisateurs disposant du ROLE_USER
rôle, tandis que la getProductById()
méthode peut être exécutée par les utilisateurs disposant du ROLE_ADMIN
rôle.
Tester la mise en œuvre

Ajout de l'exemple de code pour tester l'implémentation.

Après avoir donné les informations d'identification de l'utilisateur, l'utilisateur peut accéder au point de terminaison de l'utilisateur
Lorsque l'utilisateur essaie d'accéder au point de terminaison d'administration avec les informations d'identification de l'utilisateur, la page d'erreur s'affiche

Remarque : Si vous voulez le code github fonctionnel de cette implémentation, veuillez me suivre et commenter votre identifiant de messagerie. Je vais envoyer le lien du code source à votre email.
Partie 2 : Authentification et autorisation de sécurité Spring avec JWT
Reportez-vous aux liens pour d'autres concepts de démarrage de printemps :
Tutoriel AOP de printemps
Tutoriel de journalisation de démarrage de printemps
Configuration centralisée dans Spring Boot
Annotations Hibernate les plus couramment utilisées
Modèles de conception de microservices importants pour les entretiens