Authentification et Autorisation
La solution de cashback nouvelle génération
Matrice Authentification par Composante
| Composante | Authentification | Autorisation | 2FA |
|---|---|---|---|
| Application Mobile | Email/MDP + Biométrie | RBAC User | Optionnel |
| Dashboard Partenaire | Email/MDP | RBAC Merchant | Recommandé |
| Dashboard Admin | Email/MDP + 2FA | RBAC Admin (3 niveaux) | OBLIGATOIRE |
| Site Vitrine | Aucune (public) | N/A | N/A |
| API Backend | JWT Bearer Token | Scopes + Permissions | Via client |
INTRODUCTION ET OBJECTIFS
1.1 Contexte
Ce document décrit l'architecture complète d'authentification et d'autorisation de la plateforme REWAPP. Il couvre les mécanismes de vérification d'identité, la gestion des sessions, les modèles de permissions et les mesures de protection contre les attaques.
L'authentification et l'autorisation constituent le premier rempart de sécurité de l'écosystème REWAPP, protégeant à la fois les données personnelles des utilisateurs et les transactions financières.
1.2 Objectifs de Sécurité
-
Protection des identités
Garantir que seuls les utilisateurs légitimes accèdent à leur compte
-
Protection des transactions
Sécuriser les opérations financières (virements, QR codes)
-
Conformité réglementaire
Respecter RGPD et PCI DSS pour les données bancaires
-
Expérience utilisateur
Maintenir une authentification fluide sans friction excessive
ARCHITECTURE D'AUTHENTIFICATION
2.1 Vue d'Ensemble
L'architecture d'authentification REWAPP repose sur le protocole JWT (JSON Web Token) avec signature asymétrique RSA (RS256), garantissant l'intégrité et l'authenticité des tokens.
PRINCIPES FONDAMENTAUX
- Stateless : Aucune session côté serveur, scalabilité horizontale
- Token-based : JWT pour toutes les requêtes authentifiées
- Séparation des tokens : Access token court + Refresh token long
- Révocation : Blacklist Redis pour invalidation immédiate
2.2 Flux d'Authentification Global
Étape 1 : Soumission
L'utilisateur soumet ses identifiants (email + mot de passe)
Étape 2 : Validation
Le serveur valide les credentials contre la base de données
Étape 3 : Génération Tokens
Si valide, génération d'un access token (15 min) et refresh token (7 jours)
Étape 4 : Retour Tokens
Les tokens sont retournés au client
Étape 5 : Utilisation
Le client utilise l'access token dans le header Authorization pour chaque requête
Étape 6 : Renouvellement
À expiration, le refresh token permet d'obtenir un nouvel access token
2.3 Points d'Entrée Authentification
Endpoints d'Authentification
| Endpoint | Méthode | Description | Rate Limit |
|---|---|---|---|
/api/v1/auth/register |
POST | Inscription nouvel utilisateur | 3/heure/IP |
/api/v1/auth/login |
POST | Authentification email/mot de passe | 5/15min/IP |
/api/v1/auth/login/biometric |
POST | Authentification biométrique | 10/min |
/api/v1/auth/refresh |
POST | Renouvellement access token | 10/min |
/api/v1/auth/logout |
POST | Déconnexion et invalidation | N/A |
/api/v1/auth/verify-email |
POST | Vérification email | 5/heure |
/api/v1/auth/forgot-password |
POST | Demande réinitialisation | 3/heure/email |
/api/v1/auth/reset-password |
POST | Réinitialisation mot de passe | 3/heure |
AUTHENTIFICATION PAR EMAIL ET MOT DE PASSE
3.1 Processus d'Inscription
3.1.1 Données Requises
Champs d'inscription
| Champ | Type | Validation | Obligatoire |
|---|---|---|---|
email |
string | Format email RFC 5322, unique en base | OUI |
password |
string | Min 8 caractères, 1 majuscule, 1 chiffre, 1 spécial | OUI |
firstName |
string | 2-50 caractères, lettres uniquement | OUI |
lastName |
string | 2-50 caractères, lettres uniquement | OUI |
phoneNumber |
string | Format E.164 (+33xxxxxxxxx) | OUI |
birthDate |
date | 18 ans minimum | OUI |
acceptTerms |
boolean | Doit être true | OUI |
3.1.2 Flux d'Inscription
-
1
Validation des données entrantes
Format, unicité email
-
2
Hashage du mot de passe
bcrypt avec 10 rounds
-
3
Création du compte utilisateur
Statut: PENDING_VERIFICATION
-
4
Génération token de vérification
UUID, validité 24h
-
5
Envoi de l'email de vérification
Via SendGrid/Brevo
-
6
Retour succès
"Email de vérification envoyé"
3.1.3 Vérification Email
Le lien de vérification contient un token UUID unique :
https://app.rewapp.fr/verify-email?token={verification_token}
À la validation :
- Statut compte passe à
ACTIVE - Token de vérification invalidé
- Email de bienvenue envoyé
- Connexion automatique possible
3.2 Processus de Connexion
3.2.1 Authentification Standard
/api/v1/auth/login
Authentifie un utilisateur et retourne les tokens JWT.
Requête
{
"email": "jean.dupont@example.com",
"password": "MonMotDePasse123!",
"deviceId": "device_xyz789",
"deviceName": "iPhone 14 Pro"
}
Réponse 200 OK
{
"success": true,
"data": {
"accessToken": "eyJhbGciOiJSUzI1NiIs...",
"refreshToken": "eyJhbGciOiJSUzI1NiIs...",
"expiresIn": 900,
"tokenType": "Bearer",
"user": {
"id": "user_abc123",
"email": "jean.dupont@example.com",
"firstName": "Jean",
"lastName": "Dupont"
}
}
}
3.2.2 Validation des Credentials
-
1
Recherche utilisateur par email
Case-insensitive
-
2
Vérification statut compte
ACTIVE requis
-
3
Comparaison mot de passe hashé
bcrypt.compare()
-
4
Vérification IP/Device
Détection anomalie
-
5
Si succès
Génération tokens + log connexion
-
6
Si échec
Incrémentation compteur tentatives
3.3 Politique de Mots de Passe
3.3.1 Exigences de Complexité
Critères par type d'utilisateur
| Critère | Utilisateur | Partenaire | Admin |
|---|---|---|---|
| Longueur minimum | 8 caractères | 10 caractères | 12 caractères |
| Majuscule requise | 1 minimum | 1 minimum | 2 minimum |
| Chiffre requis | 1 minimum | 1 minimum | 2 minimum |
| Caractère spécial | 1 minimum | 1 minimum | 2 minimum |
| Historique interdit | 5 derniers | 5 derniers | 10 derniers |
| Expiration | Jamais | 90 jours | 60 jours |
3.3.2 Caractères Spéciaux Acceptés
! @ # $ % ^ & * ( ) - _ = + [ ] { } | ; : ' " , . < > / ? `
3.3.3 Hashage et Stockage
JAMAIS le mot de passe en clair
Seul le hash bcrypt est stocké en base de données.
AUTHENTIFICATION BIOMÉTRIQUE
4.1 Technologies Supportées
Technologies biométriques
| Technologie | Plateforme | Niveau Sécurité | Implémentation |
|---|---|---|---|
| Face ID | iOS 14+ | Élevé | LocalAuthentication Framework |
| Touch ID | iOS 14+ | Élevé | LocalAuthentication Framework |
| Fingerprint | Android 10+ | Élevé | BiometricPrompt API |
| Face Recognition | Android 10+ | Moyen | BiometricPrompt API |
4.2 Flux d'Activation Biométrique
-
1
Demande d'activation
Utilisateur connecté souhaite activer la biométrie
-
2
Vérification hardware
Capteur présent et configuré
-
3
Prompt biométrique natif
Confirmation d'identité
-
4
Génération biometric_token
Token unique côté serveur
-
5
Stockage sécurisé
Keychain (iOS) / Keystore (Android)
-
6
Association en base
device_id + biometric_token
4.3 Flux d'Authentification Biométrique
/api/v1/auth/login/biometric
Requête
{
"deviceId": "device_xyz789",
"biometricToken": "bio_token_encrypted_abc123",
"biometricType": "FACE_ID"
}
4.4 Sécurité Biométrique
RÈGLES DE SÉCURITÉ
- La biométrie ne remplace PAS le mot de passe initial
- Première connexion toujours par email/mot de passe
- Révocation possible depuis les paramètres compte
- Révocation automatique après 3 échecs biométriques consécutifs
- Nouveau device = nouvelle activation requise
ARCHITECTURE JWT ET TOKENS
5.1 Structure des Tokens
5.1.1 Access Token (Courte Durée)
Structure Header :
{
"alg": "RS256",
"typ": "JWT",
"kid": "key_2025_v1"
}
Structure Payload :
{
"sub": "user_abc123",
"email": "jean.dupont@example.com",
"role": "USER",
"permissions": ["read:points", "write:qrcode", "read:transactions"],
"deviceId": "device_xyz789",
"iat": 1732441800,
"exp": 1732442700,
"iss": "https://api.rewapp.fr",
"aud": "rewapp-mobile"
}
5.1.2 Refresh Token (Longue Durée)
5.2 Génération et Signature
5.2.1 Clés RSA
-
Type : RSA 2048 bits
Minimum requis
-
Rotation : 90 jours
Automatisée
-
Stockage clé privée
Variables CapRover
-
Publication clé publique
JWKS endpoint
Endpoint JWKS :
https://api.rewapp.fr/.well-known/jwks.json
Réponse JWKS :
{
"keys": [
{
"kty": "RSA",
"kid": "key_2025_v1",
"use": "sig",
"alg": "RS256",
"n": "0vx7agoebGcQ...",
"e": "AQAB"
}
]
}
5.3 Renouvellement des Tokens
/api/v1/auth/refresh
Requête
{
"refreshToken": "eyJhbGciOiJSUzI1NiIs..."
}
Processus de renouvellement :
- 1
Validation signature
Vérification du refresh token
- 2
Vérification non-révocation
Blacklist Redis
- 3
Vérification expiration
Token encore valide
- 4
Génération nouveau access token
Nouveau JWT
- 5
Rotation refresh token
Nouveau refresh généré
- 6
Invalidation ancien token
Ajout à la blacklist
- 7
Retour des nouveaux tokens
Response au client
5.4 Révocation des Tokens
Mécanismes de Révocation
| Déclencheur | Action | Effet |
|---|---|---|
| Déconnexion volontaire | Blacklist refresh token | Session terminée |
| Changement mot de passe | Blacklist tous les refresh tokens | Toutes sessions terminées |
| Suspension compte | Blacklist + flag compte | Accès bloqué |
| Détection fraude | Blacklist + alerte | Compte verrouillé |
| Révocation device | Blacklist tokens du device | Device déconnecté |
5.4.2 Blacklist Redis
Structure de la blacklist :
Clé : revoked_tokens:{token_jti}
Valeur : { revokedAt, reason, userId }
TTL : Durée restante du token original
AUTHENTIFICATION À DEUX FACTEURS (2FA)
2FA OBLIGATOIRE
Pour tous les comptes administrateurs (Dashboard Admin)
6.1 Méthodes Disponibles
Méthodes 2FA
| Méthode | Type | Priorité | Usage |
|---|---|---|---|
| TOTP (Authenticator) | Quelque chose que j'ai | Principale | Google Authenticator, Microsoft Authenticator, Authy |
| SMS | Quelque chose que j'ai | Backup | Code SMS sur numéro vérifié |
| Codes de récupération | Quelque chose que je sais | Urgence | 8 codes à usage unique |
6.2 Configuration TOTP
6.2.1 Activation
- 1
Demande d'activation 2FA
- 2
Génération secret TOTP
Base32, 160 bits
- 3
Génération QR code
URI otpauth://
- 4
Affichage QR code + secret manuel
- 5
Scan avec application authenticator
- 6
Validation code TOTP
- 7
Génération 8 codes de récupération
- 8
Confirmation sauvegarde des codes
- 9
2FA activé ✓
URI otpauth format :
otpauth://totp/REWAPP:{email}?secret={secret}&issuer=REWAPP&algorithm=SHA1&digits=6&period=30
6.2.2 Validation TOTP
6.3 Backup SMS
SMS UNIQUEMENT EN BACKUP
Pas en méthode principale (vulnérabilité SIM swap)
Processus :
- 1
Demande code SMS backup
- 2
Vérification numéro de téléphone
- 3
Génération code 6 chiffres
Validité 10 minutes
- 4
Envoi via Twilio
- 5
Saisie et validation
6.4 Codes de Récupération
- 8 codes alphanumériques de 10 caractères
- Format :
XXXX-XXXX-XX - Usage unique : chaque code ne fonctionne qu'une fois
- Régénération possible après authentification complète
A7B3-K9M2-XY
C4D8-P1Q5-ZW
...
GESTION DES SESSIONS
7.1 Paramètres de Session
Paramètres par plateforme
| Paramètre | App Mobile | Dashboard Partenaire | Dashboard Admin |
|---|---|---|---|
| Durée access token | 15 minutes | 15 minutes | 15 minutes |
| Durée refresh token | 7 jours | 24 heures | 8 heures |
| Timeout inactivité | 30 jours | 2 heures | 30 minutes |
| Sessions simultanées | 5 devices max | 3 devices max | 1 session unique |
| Confiance device | Oui (biométrie) | Oui (7 jours) | Non |
7.2 Gestion Multi-Devices
Chaque appareil connecté est identifié par :
deviceId: UUID généré à l'installationdeviceName: Nom de l'appareil (ex: "iPhone 14 Pro")deviceFingerprint: Hash de caractéristiques (OS, version, etc.)lastActiveAt: Dernière activitéipAddress: Dernière IP connue
/api/v1/users/me/devices
Réponse 200 OK
{
"success": true,
"data": [
{
"deviceId": "device_abc123",
"deviceName": "iPhone 14 Pro",
"lastActiveAt": "2025-11-24T10:30:00Z",
"ipAddress": "192.168.1.x",
"isCurrent": true,
"biometricEnabled": true
}
]
}
7.3 Déconnexion à Distance
/api/v1/users/me/devices/{deviceId}
L'utilisateur peut déconnecter un appareil spécifique.
Effets :
- Révocation de tous les tokens de ce device
- Désactivation biométrie sur ce device
- Notification push (si possible) sur le device déconnecté
7.4 Détection d'Anomalies de Session
Anomalies détectées
| Anomalie | Détection | Action |
|---|---|---|
| Connexion nouveau pays | Géolocalisation IP différente > 500km | Notification + confirmation email |
| Connexion nouvel appareil | deviceId inconnu | Notification + email de sécurité |
| Connexions simultanées suspectes | >3 IP différentes en 1h | Alerte sécurité + revue manuelle |
| Changement soudain d'IP | IP différente dans même session | Invalidation session + reconnexion |
MODÈLE D'AUTORISATION RBAC
8.1 Principes RBAC
REWAPP implémente un modèle RBAC (Role-Based Access Control) hiérarchique avec héritage des permissions.
8.2 Rôles Utilisateurs (Application Mobile)
Rôles utilisateurs
| Rôle | Description | Permissions Principales |
|---|---|---|
USER |
Utilisateur standard vérifié | Consulter profil, transactions, points - Générer QR codes - Demander virements |
USER_UNVERIFIED |
Email non vérifié | Lecture seule, pas de transactions |
USER_SUSPENDED |
Compte suspendu | Aucun accès (erreur 403) |
8.3 Rôles Partenaires (Dashboard Partenaire)
Rôles partenaires
| Rôle | Description | Permissions Principales |
|---|---|---|
MERCHANT_OWNER |
Propriétaire du commerce | Accès complet - Configuration cashback - Gestion équipe |
MERCHANT_MANAGER |
Gérant/Manager | Scan QR - Statistiques - Gestion jour |
MERCHANT_STAFF |
Employé | Scan QR uniquement |
8.4 Rôles Administrateurs (Dashboard Admin)
Rôles administrateurs
| Rôle | Niveau | Permissions | Restrictions |
|---|---|---|---|
SUPER_ADMIN |
1 | Accès complet - Configuration système - Gestion autres admins - Modification ratios points - Export données sensibles | Aucune |
ADMIN |
2 | Gestion utilisateurs/partenaires - Validation partenaires - Traitement virements - Détection fraude | Pas de config système - Pas de gestion admins - Pas de modification ratios |
SUPPORT |
3 | Consultation utilisateurs - Consultation transactions - Réponse tickets - Lecture rapports | Lecture seule - Pas d'accès données bancaires - Pas d'export sensible |
8.5 Héritage des Permissions
Hiérarchie Admin
SUPER_ADMIN hérite de → ADMIN hérite de → SUPPORT
Un SUPER_ADMIN possède automatiquement toutes les permissions ADMIN et SUPPORT.
PERMISSIONS ET SCOPES
9.1 Liste des Permissions
9.1.1 Permissions Utilisateur
Permissions User
| Permission | Description | Rôles |
|---|---|---|
read:profile | Lire son profil | USER, USER_UNVERIFIED |
write:profile | Modifier son profil | USER |
read:points | Consulter solde et historique points | USER |
read:transactions | Consulter historique transactions | USER |
write:qrcode | Générer des QR codes | USER |
write:withdrawal | Demander un virement | USER |
read:cards | Voir ses cartes liées | USER |
write:cards | Ajouter/supprimer une carte | USER |
9.1.2 Permissions Partenaire
Permissions Merchant
| Permission | Description | Rôles |
|---|---|---|
read:merchant:profile | Voir profil commerce | STAFF, MANAGER, OWNER |
write:merchant:profile | Modifier profil commerce | OWNER |
read:merchant:stats | Consulter statistiques | MANAGER, OWNER |
write:merchant:cashback | Configurer taux cashback | OWNER |
write:merchant:scan | Scanner QR codes clients | STAFF, MANAGER, OWNER |
manage:merchant:staff | Gérer l'équipe | OWNER |
9.1.3 Permissions Admin
Permissions Admin
| Permission | Description | Rôles |
|---|---|---|
read:admin:users | Consulter utilisateurs | SUPPORT, ADMIN, SUPER_ADMIN |
write:admin:users | Modifier/suspendre utilisateurs | ADMIN, SUPER_ADMIN |
read:admin:merchants | Consulter partenaires | SUPPORT, ADMIN, SUPER_ADMIN |
write:admin:merchants | Valider/modifier partenaires | ADMIN, SUPER_ADMIN |
read:admin:transactions | Consulter toutes transactions | SUPPORT, ADMIN, SUPER_ADMIN |
write:admin:transactions | Annuler transactions | ADMIN, SUPER_ADMIN |
read:admin:withdrawals | Consulter virements | ADMIN, SUPER_ADMIN |
write:admin:withdrawals | Traiter virements | ADMIN, SUPER_ADMIN |
manage:admin:config | Configuration système | SUPER_ADMIN |
manage:admin:admins | Gestion des administrateurs | SUPER_ADMIN |
9.2 Scopes OAuth2
Pour les intégrations tierces (notamment OpenBanking), REWAPP utilise des scopes OAuth2 :
Scopes OAuth2
| Scope | Description | Usage |
|---|---|---|
openid | Identité de base | Requis pour OIDC |
profile | Informations profil | Nom, prénom |
email | Adresse email | Email vérifié |
transactions:read | Lecture transactions | API partenaire |
points:read | Lecture solde points | API partenaire |
banking:link | Liaison carte | Intégration OpenBanking |
9.3 Vérification des Permissions
Chaque endpoint API vérifie les permissions via un guard NestJS :
@UseGuards(JwtAuthGuard, PermissionsGuard)
@RequirePermissions('write:qrcode')
@Post('qr-codes/generate')
async generateQrCode() { ... }
Le middleware extrait les permissions du JWT et vérifie leur présence.
PROTECTION CONTRE LES ATTAQUES
10.1 Protection Brute Force
10.1.1 Rate Limiting par IP
Limites par endpoint
| Endpoint | Limite | Période | Action si Dépassé |
|---|---|---|---|
/auth/login |
5 requêtes | 15 minutes | Blocage IP + CAPTCHA |
/auth/register |
3 requêtes | 1 heure | Blocage IP |
/auth/forgot-password |
3 requêtes | 1 heure | Blocage email |
/auth/verify-email |
5 requêtes | 1 heure | Blocage temporaire |
| Endpoints authentifiés | 1000 requêtes | 1 minute | Throttling progressif |
10.1.2 Compteur de Tentatives Échouées
Par compte utilisateur :
- 3 échecs : Affichage CAPTCHA obligatoire
- 5 échecs : Blocage temporaire 15 minutes
- 10 échecs : Verrouillage compte + email alerte
- Déblocage : Réinitialisation mot de passe ou intervention admin
10.2 Protection Contre l'Énumération
Messages d'erreur génériques pour ne pas révéler l'existence d'un compte :
Connexion échouée
"Email ou mot de passe incorrect"
Réinitialisation mot de passe
"Si cette adresse est associée à un compte, un email a été envoyé"
10.3 Protection CSRF
Pour les endpoints sensibles du Dashboard Admin et Partenaire :
Méthode : Double Submit Cookie
- Cookie CSRF généré à la connexion
- Header
X-CSRF-Tokenrequis pour mutations (POST, PUT, DELETE) - Validation côté serveur
SameSite: Strict
HttpOnly: false (accessible pour lecture JS)
Secure: true (HTTPS only)
10.4 Protection XSS
Content Security Policy (CSP) headers :
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; connect-src 'self' https://api.rewapp.fr
Headers de sécurité supplémentaires :
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
10.5 Protection Injection
-
Requêtes paramétrées
Prisma ORM avec requêtes préparées
-
Validation des entrées
Class-validator avec DTOs stricts
-
Encodage des sorties
Sanitization automatique
10.6 Protection Against Replay Attacks
Pour les opérations sensibles (QR code, virements) :
- Nonce unique par requête
- Timestamp avec fenêtre de tolérance (±5 minutes)
- JTI (JWT ID) unique pour chaque token
INTÉGRATION OAUTH2 (OPENBANKING)
11.1 Flux de Liaison Carte Bancaire
REWAPP utilise OAuth2 Authorization Code Flow pour la liaison de carte bancaire via OpenBanking (Budget Insight, Plaid, Tink).
- 1
Utilisateur clique "Lier ma carte"
Dans l'app mobile
- 2
Redirection vers fournisseur OpenBanking
Consent screen
- 3
Autorisation de l'accès
Données bancaires
- 4
Callback avec authorization_code
- 5
Échange code contre access_token
Server-to-server
- 6
Stockage tokenisé
Jamais de numéro de carte stocké
11.2 Sécurité de l'Intégration
Mesures de sécurité OAuth2
| Mesure | Implémentation |
|---|---|
| PKCE | Code Verifier + Code Challenge (SHA256) |
| State parameter | Token aléatoire pour prévenir CSRF |
| Nonce | Protection replay attacks |
| Token encryption | AES-256 pour stockage |
| Webhooks signature | HMAC-SHA256 sur les callbacks |
11.3 Révocation OpenBanking
/api/v1/banking/cards/{cardId}
L'utilisateur peut révoquer l'accès à tout moment.
Actions effectuées :
- Révocation du token OAuth2 auprès du fournisseur
- Suppression des données tokenisées en base
- Arrêt de la détection automatique pour cette carte
AUDIT ET TRAÇABILITÉ
12.1 Événements Audités
Catégories d'audit
| Catégorie | Événements | Rétention |
|---|---|---|
| Authentification | Connexion réussie/échouée, déconnexion, 2FA activé/désactivé | 2 ans |
| Gestion compte | Création, modification profil, changement MDP, suppression | 5 ans (RGPD) |
| Sessions | Création device, révocation, détection anomalie | 2 ans |
| Autorisations | Changement de rôle, modification permissions | 5 ans |
| Admin actions | Toute action admin sur un compte utilisateur | 5 ans |
12.2 Format des Logs d'Audit
{
"timestamp": "2025-11-24T10:30:00.000Z",
"eventType": "AUTH_LOGIN_SUCCESS",
"userId": "user_abc123",
"actorId": "user_abc123",
"ipAddress": "192.168.1.100",
"userAgent": "REWAPP/1.0 (iOS 17.0; iPhone14,2)",
"deviceId": "device_xyz789",
"geoLocation": {
"country": "FR",
"city": "Paris"
},
"metadata": {
"authMethod": "EMAIL_PASSWORD",
"mfaUsed": false
},
"traceId": "trace_abc123"
}
12.3 Consultation des Logs
Dashboard Admin : Accessible aux ADMIN et SUPER_ADMIN
Filtres disponibles :
- Période (date début - date fin)
- Type d'événement
- Utilisateur concerné
- Administrateur acteur
- Résultat (succès/échec)
Export : CSV pour analyse, PDF pour audit officiel
PROCÉDURES DE RÉCUPÉRATION
13.1 Mot de Passe Oublié
Flux de réinitialisation :
- 1
Soumission email sur /forgot-password
- 2
Génération token reset (UUID, 1h)
- 3
Envoi email avec lien sécurisé
- 4
Clic sur le lien → formulaire
- 5
Validation nouveau mot de passe
- 6
Hashage et mise à jour en base
- 7
Révocation de tous les tokens actifs
- 8
Email de confirmation
Sécurité
Token usage unique • Expiration 1h • Rate limit 3/heure/email • Message générique
13.2 Récupération 2FA
Si perte d'accès à l'application authenticator :
Option 1 : Codes de récupération
Saisie d'un des 8 codes → Accès restauré, recommandation de reconfigurer 2FA
Option 2 : SMS backup
Envoi code sur numéro vérifié → Accès restauré
Option 3 : Support REWAPP
Vérification d'identité manuelle → Désactivation temporaire 2FA par Super Admin
13.3 Compte Verrouillé
Causes : Tentatives échouées (10+), détection fraude, suspension admin
Procédure de déblocage :
- 1
Contact support ou lien email d'alerte
- 2
Vérification d'identité
- 3
Réinitialisation mot de passe obligatoire
- 4
Déblocage par équipe Support
- 5
Recommandation d'activer 2FA
CONCLUSION ET RÉCAPITULATIF
14.1 Points Clés de Sécurité
- JWT RS256 - Tokens signés asymétriquement
- Access token court (15 min) - Limite l'impact d'un token compromis
- Refresh token rotatif - Nouveau token à chaque renouvellement
- Bcrypt (10 rounds) - Hashage robuste des mots de passe
- 2FA obligatoire Admin - Protection renforcée des accès privilégiés
- Rate limiting - Protection contre brute force et abus
- RBAC hiérarchique - Permissions granulaires par rôle
- Audit complet - Traçabilité de toutes les actions sensibles
14.2 Métriques de Sécurité
14.3 Documents Connexes
- Document 4.3 - Architecture Backend API
- Document 6.1 - Document de Sécurité
- Document 6.2 - Architecture de Sécurité
- Document 6.2.2 - Protection des Données (CSRF/XSS)
- Document 6.2.3 - Rate Limiting et Throttling
- Document 6.4 - Conformité PCI DSS
- Document 8.4 - Plan de Tests Sécurité