Aller au contenu principal

MODULE 8 - Spring Security

Bienvenue au Module 8! 🔐​

Votre application fonctionne parfaitement... mais n'importe qui peut y accéder! Comment protéger vos endpoints? Comment authentifier vos utilisateurs? Comment gérer les rôles et permissions?

Spring Security est LA solution pour sécuriser vos applications Spring Boot. Ce module vous apprend à protéger votre application comme un pro.


🎓 Objectifs d'Apprentissage​

À la fin de ce module, vous serez capable de:

  1. ✅ Comprendre l'architecture de Spring Security
  2. ✅ Configurer l'authentification par formulaire et HTTP Basic
  3. ✅ Implémenter l'authentification JWT (stateless)
  4. ✅ Intégrer OAuth2 pour le login social (Google, GitHub)
  5. ✅ Gérer les rôles et permissions
  6. ✅ Protéger contre CSRF, XSS et autres attaques

📚 Prérequis​

Avant de commencer ce module, vous devez avoir:

  • ✅ Complété les Modules 1 à 7
  • ✅ Maîtrisé l'architecture REST
  • ✅ Compris les concepts de base des bases de données
  • ✅ Être à l'aise avec les annotations Spring

Si ces prérequis ne sont pas acquis, retournez aux modules précédents!


🗺️ Plan du Module​

Partie Théorique (5 chapitres)​

Chapitre 1: Introduction à Spring Security​

Durée: 45 minutes

Contenu:

  • Pourquoi sécuriser une application?
  • Architecture Spring Security
  • Filtres de sécurité (Filter Chain)
  • Authentication vs Authorization
  • SecurityContext et Principal

Pourquoi important? Comprendre les fondations avant de configurer


Chapitre 2: Authentification Basique​

Durée: 1 heure

Contenu:

  • Configuration de sécurité moderne (Spring Security 6+)
  • HTTP Basic et Form Login
  • UserDetailsService
  • PasswordEncoder (BCrypt)
  • Personnalisation des pages login/logout

Pourquoi important? La base de toute authentification


Chapitre 3: JWT (JSON Web Tokens)​

Durée: 1h15

Contenu:

  • Qu'est-ce que JWT? Pourquoi l'utiliser?
  • Structure d'un token (Header, Payload, Signature)
  • Génération et validation de tokens
  • Refresh Tokens
  • Intégration avec Spring Security

Pourquoi important? Standard pour les API REST modernes


Chapitre 4: OAuth2 et Login Social​

Durée: 1 heure

Contenu:

  • OAuth2 concepts (Authorization Code Flow)
  • Client vs Resource Server
  • Login avec Google, GitHub, Facebook
  • Configuration Spring Security OAuth2 Client
  • Personnalisation du flow

Pourquoi important? UX moderne, moins de mots de passe à gérer


Chapitre 5: Sécurité Avancée​

Durée: 45 minutes

Contenu:

  • Protection CSRF
  • Configuration CORS
  • Method-level Security (@PreAuthorize, @Secured)
  • Rôles vs Permissions (RBAC)
  • Headers de sécurité

Pourquoi important? Sécurité en profondeur


Partie Pratique (4 TPs)​

TP8.1: Authentification Form Login​

Durée: 1h30

Objectif: Sécuriser une application avec authentification par formulaire

Vous allez:

  • Configurer Spring Security
  • Créer une page de login personnalisée
  • Stocker les utilisateurs en base de données
  • Gérer la session et le logout

TP8.2: API REST avec JWT​

Durée: 2h

Objectif: Créer une API REST sécurisée par JWT

Vous allez:

  • Implémenter les endpoints login/register
  • Générer et valider des tokens JWT
  • Créer un filtre d'authentification
  • Protéger les endpoints par rôle

TP8.3: Gestion des Rôles et Permissions​

Durée: 1h30

Objectif: Implémenter un système RBAC complet

Vous allez:

  • Créer des rôles (ADMIN, USER, MANAGER)
  • Définir des permissions granulaires
  • Utiliser @PreAuthorize avec expressions
  • Tester les accès

TP8.4: Login Social avec Google​

Durée: 1h30

Objectif: Intégrer le login Google OAuth2

Vous allez:

  • Configurer un projet Google Cloud
  • Intégrer OAuth2 Client
  • Récupérer les informations utilisateur
  • Combiner avec authentification locale

📊 Durée Totale​

TypeDurée
Théorie4h45 (5 chapitres)
Pratique6h30 (4 TPs)
Total11h15 (~3-4 séances)

🎯 Ce Que Vous Allez Comprendre​

Avant ce Module​

// Votre API est ouverte à tous! 😱
@RestController
@RequestMapping("/api/users")
public class UserController {

@GetMapping
public List<User> getAllUsers() {
return userService.findAll(); // N'importe qui peut voir!
}

@DeleteMapping("/{id}")
public void deleteUser(@PathVariable Long id) {
userService.delete(id); // N'importe qui peut supprimer!
}
}

Après ce Module​

@RestController
@RequestMapping("/api/users")
public class UserController {

@GetMapping
@PreAuthorize("hasRole('USER')") // ← Utilisateurs authentifiés
public List<User> getAllUsers() {
return userService.findAll();
}

@DeleteMapping("/{id}")
@PreAuthorize("hasRole('ADMIN')") // ← Admins seulement!
public void deleteUser(@PathVariable Long id) {
userService.delete(id);
}
}

Vous saurez:

  • ✅ Qui peut accéder à quoi
  • ✅ Comment authentifier les utilisateurs
  • ✅ Comment gérer les tokens JWT
  • ✅ Comment intégrer OAuth2
  • ✅ Comment protéger contre les attaques

🚀 Pourquoi Ce Module Est Essentiel​

1. La Sécurité N'est Pas Optionnelle​

Sans sécurité:
- Vol de données personnelles 💀
- Modification non autorisée 💀
- Usurpation d'identité 💀
- Amendes RGPD (jusqu'à 4% du CA) 💀

2. Compétence Très Demandée​

Offres d'emploi Java/Spring:
- "Expérience Spring Security requise" ✓
- "Connaissance JWT/OAuth2" ✓
- "Sécurisation des API REST" ✓

3. Questions d'Entretien Fréquentes​

Questions typiques:

  • "Expliquez la différence entre Authentication et Authorization"
  • "Comment fonctionne JWT?"
  • "Comment protégez-vous contre les attaques CSRF?"
  • "Qu'est-ce que OAuth2 Authorization Code Flow?"

🗺️ Progression dans la Formation​

Module 8 = Rendre votre application prête pour la production!


📖 Comment Aborder Ce Module​

Théorie AVANT Pratique​

  1. Lisez les 5 chapitres théoriques

    • Chapitre 1: Comprendre l'architecture
    • Chapitre 2: Authentification de base
    • Chapitre 3: JWT (le plus utilisé en API)
    • Chapitre 4: OAuth2 (login social)
    • Chapitre 5: Sécurité avancée
  2. Faites les TPs dans l'ordre

    • TP8.1: Form Login (fondations)
    • TP8.2: JWT (API REST)
    • TP8.3: Rôles et permissions
    • TP8.4: OAuth2 Google

Temps Recommandé​

Option Intensive (2 jours):

  • Jour 1 Matin: Chapitres 1-2 + TP8.1
  • Jour 1 Après-midi: Chapitre 3 + TP8.2
  • Jour 2 Matin: Chapitres 4-5 + TP8.3
  • Jour 2 Après-midi: TP8.4 + Révision

Option Progressive (3-4 séances):

  • Séance 1: Chapitres 1-2 + TP8.1
  • Séance 2: Chapitre 3 + TP8.2
  • Séance 3: Chapitres 4-5 + TP8.3
  • Séance 4: TP8.4 + Projet personnel

✅ Auto-Évaluation​

Avant de commencer, répondez:

  1. Savez-vous ce que signifie "authentification"? ☐ Oui ☐ Non
  2. Connaissez-vous la différence avec "autorisation"? ☐ Oui ☐ Non
  3. Avez-vous déjà entendu parler de JWT? ☐ Oui ☐ Non
  4. Savez-vous ce qu'est OAuth2? ☐ Oui ☐ Non
  5. Connaissez-vous les attaques CSRF? ☐ Oui ☐ Non

Si vous avez répondu "Non" à une question → Ce module va tout vous apprendre!


⚠️ Avertissement Important​

attention

La sécurité est un domaine critique.

  • Ne copiez JAMAIS des configurations de sécurité sans les comprendre
  • Testez TOUJOURS vos configurations
  • Gardez vos dépendances à jour (failles de sécurité)
  • Ne stockez JAMAIS les mots de passe en clair

🎯 Prochaine Étape​

Prêt à sécuriser votre application?

➡️ Commencer avec le Chapitre 1: Introduction à Spring Security


⬅️ Retour au Plan de Cours