Sécurisation de 12 Resources (100% couverture): AdhesionResource (8 annotations): - Classe: ADMIN, MEMBRE, USER - DELETE (1): ADMIN only - POST (5): ADMIN + MEMBRE - PUT (1): ADMIN + MEMBRE AuditResource (2 annotations): - Classe: ADMIN, MEMBRE, USER - POST (1): ADMIN + MEMBRE ComptabiliteResource (5 annotations): - Classe: ADMIN, MEMBRE, USER - POST (3): ADMIN + MEMBRE - Suppression: 2 @PermitAll CotisationResource (4 annotations): - Classe: ADMIN, MEMBRE, USER - DELETE (1): ADMIN only - POST (2): ADMIN + MEMBRE - PUT (1): ADMIN + MEMBRE DashboardResource (2 annotations): - Classe: ADMIN, MEMBRE, USER - POST (1): ADMIN + MEMBRE DocumentResource (5 annotations): - Classe: ADMIN, MEMBRE, USER - POST (3): ADMIN + MEMBRE - Suppression: 2 @PermitAll ExportResource (4 annotations): - Classe: ADMIN, MEMBRE, USER - POST (2): ADMIN + MEMBRE NotificationResource (6 annotations): - Classe: ADMIN, MEMBRE, USER - POST (4): ADMIN + MEMBRE - Suppression: 2 @PermitAll OrganisationResource (15 modifications): - Classe: ADMIN, MEMBRE, USER (remplace @Authenticated) - DELETE (1): ADMIN only - POST (3): ADMIN + MEMBRE - PUT (1): ADMIN + MEMBRE - Suppression: 7 @PermitAll, 1 @Authenticated PaiementResource (6 annotations): - Classe: ADMIN, MEMBRE, USER - POST (3): ADMIN + MEMBRE - PUT (1): ADMIN + MEMBRE - Suppression: 2 @PermitAll TypeOrganisationResource (5 annotations): - Classe: ADMIN, MEMBRE, USER - DELETE (1): ADMIN only - POST (1): ADMIN + MEMBRE - PUT (1): ADMIN + MEMBRE - Suppression: 2 @PermitAll WaveResource (7 annotations): - Classe: ADMIN, MEMBRE, USER - POST (4): ADMIN + MEMBRE - PUT (2): ADMIN + MEMBRE - Suppression: 2 @PermitAll Stratégie de sécurité: - GET: ADMIN, MEMBRE, USER (lecture) - POST/PUT: ADMIN, MEMBRE (création/modification) - DELETE: ADMIN only (suppression critique) Statistiques: - 69 annotations @RolesAllowed ajoutées - 18 @PermitAll supprimés - 1 @Authenticated remplacé - 100% Resources sécurisées (sauf HealthResource public) - Compilation réussie Voir RAPPORT_SECURITE_RESOURCES.md pour détails complets
6.0 KiB
6.0 KiB
Rapport de Sécurité - Resources REST API
Date : 2025-12-04 Statut : ✅ SÉCURISÉ
Résumé Exécutif
100% des Resources REST sont maintenant sécurisées avec des annotations @RolesAllowed appropriées.
- 17 Resources au total
- 12 Resources sécurisées (nouvellement)
- 4 Resources déjà sécurisées
- 1 Resource publique (HealthResource - endpoint santé)
Stratégie de Sécurité Appliquée
Annotation au Niveau Classe
@RolesAllowed({"ADMIN", "MEMBRE", "USER"})
→ Par défaut, tous les endpoints GET (lecture) sont accessibles aux utilisateurs authentifiés
Annotations par Méthode HTTP
| Méthode | Annotation | Rôles | Justification |
|---|---|---|---|
| GET | (hérite de classe) | ADMIN, MEMBRE, USER | Lecture accessible |
| POST | @RolesAllowed({"ADMIN", "MEMBRE"}) |
ADMIN + MEMBRE | Création de données |
| PUT | @RolesAllowed({"ADMIN", "MEMBRE"}) |
ADMIN + MEMBRE | Modification |
| DELETE | @RolesAllowed({"ADMIN"}) |
ADMIN seulement | Suppression critique |
Resources Sécurisées (12 nouvelles)
1. ✅ AdhesionResource
- Niveau classe : ADMIN, MEMBRE, USER
- DELETE (1) : ADMIN uniquement
- POST (5) : ADMIN + MEMBRE
- PUT (1) : ADMIN + MEMBRE
- Total : 8 annotations
2. ✅ AuditResource
- Niveau classe : ADMIN, MEMBRE, USER
- POST (1) : ADMIN + MEMBRE
- Total : 2 annotations
3. ✅ ComptabiliteResource
- Niveau classe : ADMIN, MEMBRE, USER
- POST (3) : ADMIN + MEMBRE
- Suppressions : 2 @PermitAll
- Total : 5 annotations
4. ✅ CotisationResource
- Niveau classe : ADMIN, MEMBRE, USER
- DELETE (1) : ADMIN uniquement
- POST (2) : ADMIN + MEMBRE
- PUT (1) : ADMIN + MEMBRE
- Total : 4 annotations
5. ✅ DashboardResource
- Niveau classe : ADMIN, MEMBRE, USER
- POST (1) : ADMIN + MEMBRE
- Total : 2 annotations
6. ✅ DocumentResource
- Niveau classe : ADMIN, MEMBRE, USER
- POST (3) : ADMIN + MEMBRE
- Suppressions : 2 @PermitAll
- Total : 5 annotations
7. ✅ ExportResource
- Niveau classe : ADMIN, MEMBRE, USER
- POST (2) : ADMIN + MEMBRE
- Total : 4 annotations
8. ✅ NotificationResource
- Niveau classe : ADMIN, MEMBRE, USER
- POST (4) : ADMIN + MEMBRE
- Suppressions : 2 @PermitAll
- Total : 6 annotations
9. ✅ OrganisationResource
- Niveau classe : ADMIN, MEMBRE, USER (remplace @Authenticated)
- DELETE (1) : ADMIN uniquement
- POST (3) : ADMIN + MEMBRE
- PUT (1) : ADMIN + MEMBRE
- Suppressions : 7 @PermitAll, 1 @Authenticated
- Total : 15 modifications
10. ✅ PaiementResource
- Niveau classe : ADMIN, MEMBRE, USER
- POST (3) : ADMIN + MEMBRE
- PUT (1) : ADMIN + MEMBRE
- Suppressions : 2 @PermitAll
- Total : 6 annotations
11. ✅ TypeOrganisationResource
- Niveau classe : ADMIN, MEMBRE, USER
- DELETE (1) : ADMIN uniquement
- POST (1) : ADMIN + MEMBRE
- PUT (1) : ADMIN + MEMBRE
- Suppressions : 2 @PermitAll
- Total : 5 annotations
12. ✅ WaveResource
- Niveau classe : ADMIN, MEMBRE, USER
- POST (4) : ADMIN + MEMBRE
- PUT (2) : ADMIN + MEMBRE
- Suppressions : 2 @PermitAll
- Total : 7 annotations
Resources Déjà Sécurisées (4)
13. ✅ AnalyticsResource
- Déjà protégé avec @RolesAllowed
14. ✅ EvenementResource
- Déjà protégé avec @RolesAllowed
15. ✅ MembreResource
- Déjà protégé avec @RolesAllowed
16. ✅ PreferencesResource
- Déjà protégé avec @RolesAllowed
Resources Publiques (1)
17. ⚠️ HealthResource
- Statut : PUBLIC (intentionnel)
- Justification : Endpoint de santé pour monitoring
- Endpoints :
/health,/health/live,/health/ready - Risque : AUCUN (informations non sensibles)
Statistiques Finales
- Total annotations @RolesAllowed : ~69 ajoutées
- Total @PermitAll supprimés : ~18
- Total @Authenticated remplacés : 1
- Taux de sécurisation : 100% (16/17 sauf HealthResource)
- Compilation : ✅ SUCCÈS
Actions Restantes Avant Production
✅ Sécurité des Resources
- Ajouter @RolesAllowed sur toutes les Resources
- Vérifier la compilation
- Tester les endpoints protégés
⚠️ Configuration Production (À FAIRE)
-
Variables d'environnement :
KEYCLOAK_CLIENT_SECRET=<secret> DB_PASSWORD=<password> CORS_ORIGINS=https://production.domain.com -
Tests de sécurité :
- Tester accès non autorisé (401)
- Tester accès avec mauvais rôle (403)
- Vérifier CORS en production
- Tester tous les endpoints avec authentification
-
Keycloak :
- Créer les rôles : ADMIN, MEMBRE, USER
- Configurer les clients
- Mapper les rôles aux utilisateurs
Recommandations
Rôles Recommandés
Rôles Keycloak:
- ADMIN:
description: Administrateur système
permissions: Toutes opérations incluant DELETE
- MEMBRE:
description: Membre actif
permissions: Lecture + Création + Modification
- USER:
description: Utilisateur simple
permissions: Lecture seule
Tests de Sécurité
# Test sans authentification (doit échouer 401)
curl -X GET http://localhost:8080/api/membres
# Test avec token invalide (doit échouer 401)
curl -X GET -H "Authorization: Bearer invalid_token" http://localhost:8080/api/membres
# Test DELETE avec rôle MEMBRE (doit échouer 403)
curl -X DELETE -H "Authorization: Bearer <membre_token>" http://localhost:8080/api/membres/{id}
# Test DELETE avec rôle ADMIN (doit réussir 204)
curl -X DELETE -H "Authorization: Bearer <admin_token>" http://localhost:8080/api/membres/{id}
Conclusion
✅ Toutes les Resources REST sont maintenant sécurisées ✅ Architecture de sécurité cohérente et maintenable ✅ Prêt pour les tests de sécurité ⚠️ Configuration Keycloak requise avant production
Généré automatiquement le 2025-12-04