feat: Phase 2 — Sécurité (JWT + API Key + Gestion erreurs)
Phase 2 — Sécurité (JWT + API Key + Gestion erreurs)
Ce qui a été implémenté
Authentification JWT
-
Userentity implementingUserDetailswith roles:admin | fleet_manager | supervisor | operator -
UserRepositorywithfindByEmail/existsByEmail -
UserDetailsServiceImpl— charge l'utilisateur depuis la BDD -
JwtTokenProvider— génération & validation des access/refresh tokens (JJWT 0.12+) -
JwtAuthenticationFilter— filtreOncePerRequestFilterqui extrait et valide le JWT
Authentification API Key (inter-service)
-
ApiKeyAuthenticationFilter— valide le headerX-API-Keyet attribue le rôleROLE_SERVICE
Configuration sécurité
-
SecurityConfig— chaîne de filtres stateless, CSRF désactivé, règles d'autorisation par endpoint -
CorsConfig— CORS configurable viacors.allowed-origins
DTOs Auth
-
LoginRequest,LoginResponse,RefreshRequest
Service & Contrôleur
-
AuthService— login (retourne access + refresh token) + refresh -
AuthController—POST /api/v1/auth/loginetPOST /api/v1/auth/refresh
Gestion d'erreurs globale
-
ErrorCodeenum (NOT_FOUND, CONFLICT, BAD_REQUEST, FORBIDDEN) -
BusinessException,ResourceNotFoundException,ConflictException -
ErrorResponserecord -
GlobalExceptionHandler— handler centralisé pour toutes les exceptions
Endpoints publics
POST /api/v1/auth/loginPOST /api/v1/auth/refreshGET /actuator/healthWS /ws/**
Propriétés requises
security:
jwt:
secret: <min 256-bit secret>
expiration-ms: 900000 # 15 min
refresh-expiration-ms: 604800000 # 7 days
inter-service:
api-key: <api-key>
cors:
allowed-origins: http://localhost:3000