Ajout de 47 features Gherkin (~650 scénarios) pour couvrir 100% des règles métier : - Authentification (5) : validation mot de passe, tentatives connexion, multi-device, 2FA, récupération - Audio-guides (12) : détection mode, création, navigation piéton/voiture, ETA, gestion points, progression - Navigation (5) : notifications minimalistes, décompte 5s, stationnement, historique, basculement auto - Création contenu (3) : image auto, restrictions modification, suppression - Radio live (2) : enregistrement auto, interdictions modération - Droits auteur (6) : fair use 30s, détection musique, signalements, sanctions, appels - Modération (9) : badges Bronze/Argent/Or, score fiabilité, utilisateur confiance, audit, anti-abus - Premium (2) : webhooks Mangopay, tarification multi-canal - Profil/Partage/Recherche (5) : badge vérifié, stats arrondies, partage premium, filtres avancés, carte Tous les scénarios incluent edge cases, métriques de performance et conformité RGPD. Couverture fonctionnelle MVP maintenant complète.
201 lines
12 KiB
Gherkin
201 lines
12 KiB
Gherkin
# language: fr
|
|
|
|
@api @authentication @2fa @security @mvp
|
|
Fonctionnalité: Appareils de confiance et authentification à deux facteurs
|
|
|
|
En tant qu'utilisateur soucieux de la sécurité
|
|
Je veux gérer mes appareils de confiance et activer l'authentification à deux facteurs
|
|
Afin de protéger mon compte contre les accès non autorisés
|
|
|
|
Contexte:
|
|
Étant donné que le système supporte les méthodes 2FA suivantes:
|
|
| Méthode | Disponibilité | Recommandée |
|
|
| Application TOTP | Oui | Oui |
|
|
| SMS | Oui | Non |
|
|
| Email | Oui | Non |
|
|
| Clés de sécurité USB | Phase 2 | Oui |
|
|
|
|
Scénario: Activation de l'authentification à deux facteurs par TOTP
|
|
Étant donné un utilisateur "alice@roadwave.fr" sans 2FA activé
|
|
Quand l'utilisateur accède à "Mon compte > Sécurité > Authentification à deux facteurs"
|
|
Et clique sur "Activer l'authentification à deux facteurs"
|
|
Alors le système génère un QR code avec secret TOTP
|
|
Et affiche le secret en texte clair pour saisie manuelle
|
|
Et affiche les instructions: "Scannez ce QR code avec Google Authenticator, Authy ou Microsoft Authenticator"
|
|
Et l'utilisateur scanne le QR code avec son application TOTP
|
|
Et saisit le code à 6 chiffres généré par l'application
|
|
Alors le 2FA est activé
|
|
Et 10 codes de récupération à usage unique sont générés
|
|
Et les codes de récupération sont affichés avec avertissement: "Conservez ces codes en lieu sûr"
|
|
Et un événement "2FA_ENABLED" est enregistré
|
|
Et un email de confirmation est envoyé
|
|
Et la métrique "auth.2fa.enabled" est incrémentée
|
|
|
|
Scénario: Connexion avec 2FA depuis un nouvel appareil
|
|
Étant donné un utilisateur "bob@roadwave.fr" avec 2FA activé
|
|
Et aucun appareil de confiance enregistré
|
|
Quand l'utilisateur se connecte depuis un iPhone avec email/mot de passe corrects
|
|
Alors une page de vérification 2FA s'affiche
|
|
Et l'utilisateur saisit le code à 6 chiffres de son application TOTP
|
|
Et coche l'option "Faire confiance à cet appareil pour 30 jours"
|
|
Alors la connexion est réussie
|
|
Et l'iPhone est enregistré comme appareil de confiance
|
|
Et un token d'appareil de confiance est stocké localement (durée: 30 jours)
|
|
Et un événement "2FA_SUCCESS_NEW_TRUSTED_DEVICE" est enregistré
|
|
Et un email est envoyé: "Nouvel appareil de confiance ajouté: iPhone"
|
|
Et la métrique "auth.2fa.trusted_device.added" est incrémentée
|
|
|
|
Scénario: Connexion depuis un appareil de confiance existant
|
|
Étant donné un utilisateur "charlie@roadwave.fr" avec 2FA activé
|
|
Et un iPhone enregistré comme appareil de confiance il y a 10 jours
|
|
Quand l'utilisateur se connecte depuis cet iPhone avec email/mot de passe corrects
|
|
Alors la connexion est réussie immédiatement sans demander le code 2FA
|
|
Et un événement "LOGIN_TRUSTED_DEVICE" est enregistré
|
|
Et la date de dernière utilisation de l'appareil de confiance est mise à jour
|
|
Et la métrique "auth.2fa.trusted_device.used" est incrémentée
|
|
|
|
Scénario: Expiration automatique d'un appareil de confiance après 30 jours
|
|
Étant donné un utilisateur "david@roadwave.fr" avec 2FA activé
|
|
Et un iPad enregistré comme appareil de confiance il y a 31 jours
|
|
Quand l'utilisateur se connecte depuis cet iPad avec email/mot de passe corrects
|
|
Alors une page de vérification 2FA s'affiche
|
|
Et l'utilisateur doit saisir le code TOTP
|
|
Et un message s'affiche: "Votre appareil de confiance a expiré après 30 jours. Veuillez vous authentifier à nouveau."
|
|
Et l'ancien token d'appareil de confiance est révoqué
|
|
Et un événement "TRUSTED_DEVICE_EXPIRED" est enregistré
|
|
Et la métrique "auth.2fa.trusted_device.expired" est incrémentée
|
|
|
|
Scénario: Gestion de la liste des appareils de confiance
|
|
Étant donné un utilisateur "eve@roadwave.fr" avec 2FA activé
|
|
Et 3 appareils de confiance enregistrés
|
|
Quand l'utilisateur accède à "Mon compte > Sécurité > Appareils de confiance"
|
|
Alors l'utilisateur voit la liste suivante:
|
|
| Appareil | Ajouté le | Dernière utilisation | Expire le | Actions |
|
|
| iPhone 14 Pro | 2026-01-15 | Il y a 2 heures | 2026-02-14 | [Révoquer] |
|
|
| iPad Air | 2026-01-10 | Il y a 5 jours | 2026-02-09 | [Révoquer] |
|
|
| MacBook Pro | 2026-01-05 | Il y a 10 jours | 2026-02-04 | [Révoquer] |
|
|
Et un bouton "Révoquer tous les appareils de confiance" est disponible
|
|
Et un compteur affiche "3 appareils de confiance actifs"
|
|
|
|
Scénario: Révocation manuelle d'un appareil de confiance
|
|
Étant donné un utilisateur "frank@roadwave.fr" avec 2FA activé
|
|
Et un MacBook Pro enregistré comme appareil de confiance
|
|
Quand l'utilisateur clique sur "Révoquer" pour le MacBook Pro
|
|
Alors l'appareil de confiance est immédiatement révoqué
|
|
Et le token d'appareil de confiance est invalidé
|
|
Et un événement "TRUSTED_DEVICE_REVOKED_MANUAL" est enregistré
|
|
Et un email est envoyé: "Vous avez révoqué l'appareil de confiance: MacBook Pro"
|
|
Et lors de la prochaine connexion, le code 2FA sera demandé
|
|
Et la métrique "auth.2fa.trusted_device.revoked" est incrémentée
|
|
|
|
Scénario: Utilisation d'un code de récupération en cas de perte de l'application TOTP
|
|
Étant donné un utilisateur "grace@roadwave.fr" avec 2FA activé
|
|
Et l'utilisateur a perdu l'accès à son application TOTP
|
|
Et il possède ses codes de récupération
|
|
Quand l'utilisateur se connecte avec email/mot de passe corrects
|
|
Et clique sur "Utiliser un code de récupération"
|
|
Et saisit l'un des 10 codes de récupération
|
|
Alors la connexion est réussie
|
|
Et le code de récupération utilisé est marqué comme consommé
|
|
Et il reste 9 codes de récupération disponibles
|
|
Et un événement "2FA_RECOVERY_CODE_USED" est enregistré
|
|
Et un email d'alerte est envoyé: "Un code de récupération a été utilisé. Il vous reste 9 codes."
|
|
Et l'utilisateur est invité à reconfigurer son 2FA
|
|
Et la métrique "auth.2fa.recovery_code.used" est incrémentée
|
|
|
|
Scénario: Régénération des codes de récupération
|
|
Étant donné un utilisateur "henry@roadwave.fr" avec 2FA activé
|
|
Et 3 codes de récupération ont été utilisés
|
|
Quand l'utilisateur accède à "Mon compte > Sécurité > Codes de récupération"
|
|
Et clique sur "Régénérer les codes de récupération"
|
|
Alors un message d'avertissement s'affiche: "Les anciens codes seront invalidés. Êtes-vous sûr ?"
|
|
Et après confirmation, 10 nouveaux codes de récupération sont générés
|
|
Et les anciens codes sont invalidés immédiatement
|
|
Et les nouveaux codes sont affichés une seule fois
|
|
Et un événement "2FA_RECOVERY_CODES_REGENERATED" est enregistré
|
|
Et un email est envoyé avec les nouveaux codes (chiffrés)
|
|
Et la métrique "auth.2fa.recovery_codes.regenerated" est incrémentée
|
|
|
|
Scénario: Désactivation du 2FA avec vérification renforcée
|
|
Étant donné un utilisateur "iris@roadwave.fr" avec 2FA activé
|
|
Quand l'utilisateur accède à "Mon compte > Sécurité > Authentification à deux facteurs"
|
|
Et clique sur "Désactiver l'authentification à deux facteurs"
|
|
Alors un message d'avertissement s'affiche: "Cela réduira la sécurité de votre compte"
|
|
Et l'utilisateur doit saisir son mot de passe actuel
|
|
Et l'utilisateur doit saisir un code 2FA valide
|
|
Et l'utilisateur doit confirmer par email via un lien sécurisé
|
|
Alors le 2FA est désactivé
|
|
Et tous les appareils de confiance sont révoqués
|
|
Et tous les codes de récupération sont invalidés
|
|
Et un événement "2FA_DISABLED" est enregistré
|
|
Et un email de confirmation est envoyé
|
|
Et la métrique "auth.2fa.disabled" est incrémentée
|
|
|
|
Scénario: Authentification 2FA par SMS en méthode de secours
|
|
Étant donné un utilisateur "jack@roadwave.fr" avec 2FA par TOTP activé
|
|
Et l'utilisateur a également configuré un numéro de téléphone de secours
|
|
Quand l'utilisateur se connecte et clique sur "Recevoir un code par SMS"
|
|
Alors un code à 6 chiffres est envoyé au numéro +33612345678
|
|
Et l'utilisateur saisit le code reçu par SMS
|
|
Alors la connexion est réussie
|
|
Et un événement "2FA_SMS_FALLBACK_USED" est enregistré
|
|
Et un email d'alerte est envoyé: "Vous avez utilisé la méthode SMS de secours"
|
|
Et la métrique "auth.2fa.sms.used" est incrémentée
|
|
|
|
Scénario: Limitation des tentatives de codes 2FA
|
|
Étant donné un utilisateur "kate@roadwave.fr" avec 2FA activé
|
|
Quand l'utilisateur se connecte avec email/mot de passe corrects
|
|
Et saisit 5 codes 2FA incorrects consécutivement
|
|
Alors le compte est temporairement bloqué pour 15 minutes
|
|
Et un message s'affiche: "Trop de tentatives échouées. Veuillez réessayer dans 15 minutes."
|
|
Et un email d'alerte est envoyé: "Multiples tentatives échouées de codes 2FA détectées"
|
|
Et un événement "2FA_TOO_MANY_ATTEMPTS" est enregistré avec niveau "HIGH"
|
|
Et la métrique "auth.2fa.blocked.too_many_attempts" est incrémentée
|
|
|
|
Scénario: Détection de connexion suspecte malgré 2FA valide
|
|
Étant donné un utilisateur "luke@roadwave.fr" avec 2FA activé
|
|
Et toutes ses connexions habituelles sont depuis la France
|
|
Quand l'utilisateur se connecte avec email/mot de passe corrects depuis la Russie
|
|
Et saisit un code 2FA valide
|
|
Alors la connexion est réussie mais marquée comme suspecte
|
|
Et l'utilisateur reçoit immédiatement un email: "Connexion inhabituelle depuis Russie"
|
|
Et une notification push est envoyée sur tous les appareils de confiance
|
|
Et l'accès aux fonctionnalités sensibles (paiement, changement de mot de passe) est temporairement bloqué
|
|
Et l'utilisateur doit confirmer son identité par email avant accès complet
|
|
Et un événement "2FA_SUSPICIOUS_LOCATION" est enregistré avec niveau "HIGH"
|
|
Et la métrique "auth.2fa.suspicious_login" est incrémentée
|
|
|
|
Scénario: Révocation de tous les appareils de confiance en cas de compromission
|
|
Étant donné un utilisateur "mary@roadwave.fr" avec 2FA activé
|
|
Et 5 appareils de confiance enregistrés
|
|
Et l'utilisateur suspecte une compromission de son compte
|
|
Quand l'utilisateur clique sur "Révoquer tous les appareils de confiance"
|
|
Alors tous les appareils de confiance sont immédiatement révoqués
|
|
Et tous les tokens d'appareils de confiance sont invalidés
|
|
Et toutes les sessions actives sont fermées (sauf la session actuelle)
|
|
Et un événement "ALL_TRUSTED_DEVICES_REVOKED" est enregistré avec niveau "HIGH"
|
|
Et un email de confirmation est envoyé
|
|
Et l'utilisateur devra saisir un code 2FA à chaque nouvelle connexion
|
|
Et la métrique "auth.2fa.trusted_device.bulk_revoked" est incrémentée
|
|
|
|
Scénario: Métriques de sécurité pour le 2FA
|
|
Étant donné que le système gère 50 000 utilisateurs avec 2FA activé
|
|
Quand les métriques de sécurité sont collectées
|
|
Alors les indicateurs suivants sont disponibles:
|
|
| Métrique | Valeur cible |
|
|
| Pourcentage d'utilisateurs avec 2FA | > 60% |
|
|
| Taux de succès de validation 2FA | > 98% |
|
|
| Temps moyen de saisie du code 2FA | < 15s |
|
|
| Nombre d'appareils de confiance par user | Moyenne: 2.5 |
|
|
| Taux d'utilisation des codes de récup. | < 0.5% |
|
|
Et les métriques sont exportées vers le système de monitoring
|
|
Et des alertes sont déclenchées si le taux de succès < 95%
|
|
|
|
Scénario: Badge de sécurité pour utilisateurs avec 2FA activé
|
|
Étant donné un utilisateur "nathan@roadwave.fr" avec 2FA activé depuis 30 jours
|
|
Quand l'utilisateur consulte son profil public
|
|
Alors un badge "Compte sécurisé" s'affiche sur son profil
|
|
Et le badge indique: "Cet utilisateur a activé l'authentification à deux facteurs"
|
|
Et le badge améliore la visibilité et la crédibilité du créateur de contenu
|
|
Et la métrique "profile.badge.2fa_secured" est visible
|