🛢️Parcours Fioul GroupéSpring Boot · Chapitre 12
Accueil › Spring Boot › Chapitre 12
Chapitre 12 / 19 · 🛡️ Cyber

Spring Boot — la partie Sécurité

Protéger l'API avec Spring Security : authentification, jetons JWT, autorisation par rôles. Chapitre charnière avec le cours de cybersécurité.

1 Notion

Authentification vs autorisation

Deux questions distinctes : authentification = « qui es-tu ? » (login/mot de passe) ; autorisation = « as-tu le droit ? » (rôles/permissions). Spring Security gère les deux.

2 Notion

Le jeton JWT

Après connexion, le serveur émet un JWT (JSON Web Token) signé. Le client le renvoie dans l'en-tête Authorization: Bearer <token> à chaque requête. Le serveur vérifie la signature — pas besoin de session côté serveur (API stateless).

POST /api/auth/login  → { "token": "eyJhbGciOiJIUzI1Ni.." }
GET  /api/campagnes    Header: Authorization: Bearer eyJhbGci..
Sécurité (Cyber) — un JWT est signé, pas chiffré : ne jamais y mettre de secret. Prévoir une expiration courte et un mécanisme de rafraîchissement.
3 Notion

La chaîne de filtres de sécurité

On configure un SecurityFilterChain : quelles routes sont publiques, lesquelles exigent une authentification, et on ajoute un filtre qui valide le JWT.

@Bean
SecurityFilterChain chaine(HttpSecurity http) throws Exception {
  http.csrf(c -> c.disable())
      .authorizeHttpRequests(a -> a
        .requestMatchers("/api/auth/**").permitAll()
        .requestMatchers(HttpMethod.GET, "/api/campagnes/**").permitAll()
        .anyRequest().authenticated());
  return http.build();
}
4 Notion

Autorisation par rôles

@PreAuthorize restreint une méthode à un rôle.

@PreAuthorize("hasRole('COORDINATEUR')")
@PostMapping public CampagneDTO ouvrir(...) { ... }
🛢️ Sur le projet Fioul Groupé

Rends publics la lecture des campagnes et l'authentification ; protège l'ouverture/clôture (COORDINATEUR) et l'inscription (PARTICULIER connecté). C'est le jalon sécurité, détaillé au chapitre 13.

À retenir
  • AuthN (qui ?) vs AuthZ (droit ?).
  • JWT signé dans Authorization: Bearer ; API stateless.
  • SecurityFilterChain + @PreAuthorize par rôle.
← Chapitre 11