Ai-je bien compris la configuration de la sécurité d'une API Rest
Bonjour,
Je voudrais savoir si à travers les commentaires du code, j'ai bien compris les différents éléments de la configuration de la sécurité d'une API Rest.
Précision, je n'ai pas utilisé la notation "cumulée" que l'on rencontre habituellement et j'ai au contraire bien décomposé les étapes pour bien comprendre quels objets j'utilisais et ce qu'ils faisaient.
Pourriez-vous me dire si j'ai commis des erreurs ou s'il y a des ambiguïtés et si oui lesquelles ?
Merci d'avance
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
/**
* Configuration des règles de sécurité à appliquer aux requêtes entrantes
* @param http
* @throws Exception
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
// Paramètres CORS par défaut : toutes origines, tous les verbes ...
http.cors();
// Désactivation des règles de CSRF, car la vérification d'intégrité se fait par un token JWT
http.csrf().disable();
// Instanciation du gestionnaire d'exceptions
ExceptionHandlingConfigurer<HttpSecurity> exceptionHandlingConfigurer = http.exceptionHandling();
// Définition de la classe qui prendra la main lors d'une exception
exceptionHandlingConfigurer.authenticationEntryPoint(authEntryPointJwt);
// Instanciation d'un gestionnaire de session
SessionManagementConfigurer<HttpSecurity> smc = http.sessionManagement();
// Définition du type de session, ici sans état
smc.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
// Instanciation du gestionnaire de filtre de requêtes
ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry filtresRequetes = http.authorizeRequests();
// Ajout du filtre indiquant que tous les utilisateurs peuvent s'authentifier ou s'inscrire
filtresRequetes.antMatchers("/api/auth/**").permitAll();
// Pour toutes les autres requêtes il faut être authentifié
filtresRequetes.anyRequest().authenticated();
// Ajout du filtre sur le token qui doit vérifier que l'utilisateur est bien authentifié
// et qu'il possède les rôles avant exécution de la requête demandée
http.addFilterBefore(authenticationJwtTokenFilter, UsernamePasswordAuthenticationFilter.class);
} |