Aller au contenu

PD-30 - Specification Canonique Contractuelle : Session Management Redis

1. Objectif

Definir le comportement contractuel du service de gestion de sessions pour garantir, sans ambiguite : - le controle en temps reel des sessions actives d'un utilisateur ; - l'expiration automatique et le renouvellement conditionnel des sessions ; - l'invalidation immediate d'une session, d'un appareil, ou de toutes les sessions utilisateur ; - la tracabilite probatoire des evenements de session ; - la robustesse en mode degrade (fallback in-memory avec TTL) lorsque le store central est indisponible.

Besoins fonctionnels contractualises (F-30-01 a F-30-12)

ID Besoin fonctionnel Couverture spec
F-30-01 Enregistrer une session apres authentification reussie INV-30-01, INV-30-02, FN-30-01, CA-30-01
F-30-02 Associer userId, deviceId, IP, userAgent, timestamps INV-30-03, FN-30-01, CA-30-02
F-30-03 Maintenir une liste actualisee des sessions actives par utilisateur INV-30-08, FN-30-04, CA-30-07
F-30-04 Definir une duree de validite (TTL) pour chaque session INV-30-04, FN-30-02, CA-30-03
F-30-05 Expiration automatique sans intervention humaine INV-30-05, FN-30-02, CA-30-04
F-30-06 Renouveler TTL sous condition d'activite continue INV-30-06, FN-30-03, CA-30-05
F-30-07 Configurer des TTL differents selon contexte (web/mobile/api/sensible) INV-30-07, FN-30-02, CA-30-06
F-30-08 Invalider une session specifique INV-30-09, FN-30-05, CA-30-08
F-30-09 Invalider toutes les sessions d'un utilisateur INV-30-10, FN-30-06, CA-30-09
F-30-10 Invalidation par evenement (pwd change, revoke device, intrusion, demande judiciaire) INV-30-11, FN-30-07, CA-30-10
F-30-11 Lister appareils actifs avec type, date connexion, derniere activite, localisation approximative INV-30-08, INV-30-12, FN-30-04, CA-30-07
F-30-12 Revoquer un appareil individuellement INV-30-13, FN-30-05, CA-30-11

2. Perimetre / Hors perimetre

Inclus

  • Cycle de vie de session : creation, lecture, renouvellement, expiration, invalidation.
  • Gestion multi-device par utilisateur avec isolation stricte inter-utilisateurs.
  • Invalidation cross-instance avec borne de latence contractuelle.
  • Journalisation append-only des evenements de session.
  • Rate limiting des operations sensibles de session.
  • Mode degrade quand le store central est indisponible (fallback in-memory avec TTL).

Exclu

  • Mecanisme d'authentification primaire (PD-23, PD-25, PD-26).
  • Gestion des enveloppes de cles/HSM (PD-37, PD-40).
  • Interfaces UX mobile/web de consultation/revocation des appareils.
  • Alerting/monitoring infra (hors telemetry applicative minimale de ce scope).

Hors perimetre (regles non testables en l'etat)

  • HP-30-01 : Exigence de "montee en charge lineaire" sans cible numerique de charge/latence validee.
  • HP-30-02 : Exigence de "coherence avec mecanisme d'ancrage probatoire" sans contrat d'interface technique explicite dans les entrees de cette story.

3. Definitions

Terme Definition contractuelle
Session active Session authentifiee non expiree et non invalidee.
Session invalidee Session rendue inutilisable avant son expiration naturelle.
Device ID Identifiant stable d'un appareil/client associe a une session.
Contexte de session Enum contractuel : WEB, MOBILE, API, SENSITIVE.
TTL Duree de validite d'une session, en secondes.
Activite continue Requete authentifiee valide effectuee avant expiration et non soumise a rate limit/rejet de securite.
Invalidation immediate Revocation visible et appliquee sur toutes les instances en moins de 100 ms en p95, 250 ms en p99.
Endpoints sensibles session Operations de revocation et de consultation exhaustive des sessions/appareils.
Mode degrade Mode active quand le store central est indisponible, avec fallback in-memory TTL et restrictions explicites (section 6).
Localisation approximative Localisation derivee de l'IP limitee au niveau ville/pays (pas de coordonnees precises).

Operations sensibles (rate limiting INV-30-15)

Operation Description Scope rate limit
REVOKE_SESSION Revocation d'une session specifique user + ip
REVOKE_DEVICE Revocation de toutes les sessions d'un appareil user + ip
REVOKE_ALL Revocation de toutes les sessions utilisateur user + ip
LIST_USER_SESSIONS Consultation des sessions actives user + ip
LIST_USER_DEVICES Consultation des appareils connectes user + ip

Valeurs TTL par contexte (INV-30-07)

Contexte TTL (secondes) TTL (humain) Justification
WEB 3600 1 heure Session navigateur standard
MOBILE 604800 7 jours Experience mobile persistante
API 86400 24 heures Integrations automatisees
SENSITIVE 900 15 minutes Operations critiques (HSM, admin)

4. Invariants (non negociables)

ID Regle Justification
INV-30-01 Toute authentification reussie cree exactement une session active unique identifiee par sessionId. Eviter ambiguite d'etat.
INV-30-02 Le sessionId est unique globalement sur la fenetre de retention active + 24h. Prevention collision/replay.
INV-30-03 Toute session stocke a minima : sessionId, userId, deviceId, ipHash, userAgentHash, createdAt, lastActivityAt, context, expiresAt, status. Tracabilite + minimisation (pas de secrets en clair).
INV-30-04 Toute session possede un TTL strictement positif (ttlSeconds >= 1). Validite temporelle obligatoire.
INV-30-05 Une session expire automatiquement a expiresAt et devient inutilisable sans action humaine. Exigence d'expiration maitrisee.
INV-30-06 Le renouvellement de TTL est autorise uniquement si la session est active au moment de la requete ; aucun renouvellement apres expiration/invalidation. Integrite du cycle de vie.
INV-30-07 Les TTL sont parametrables par contexte avec valeurs distinctes obligatoires pour WEB, MOBILE, API, SENSITIVE, conformes a la table "Valeurs TTL par contexte (section 3.2)". Politique differenciee.
INV-30-08 La liste des sessions d'un utilisateur ne retourne que ses sessions ; aucune fuite inter-utilisateur autorisee. Isolation stricte des donnees.
INV-30-09 L'invalidation d'une session specifique doit rendre la session inutilisable en p95 < 100 ms et p99 < 250 ms sur l'ensemble des instances. Learning PD-239.
INV-30-10 L'invalidation globale d'un utilisateur doit rendre inutilisables toutes ses sessions selon les memes bornes de latence (p95 < 100 ms, p99 < 250 ms). Reponse incident securite.
INV-30-11 Les evenements PASSWORD_CHANGED, DEVICE_REVOKED, INTRUSION_SUSPECTED, JUDICIAL_REQUEST declenchent une invalidation obligatoire selon politique definie (session ciblee ou globale, section 5) ; pour JUDICIAL_REQUEST, si la portee n'est pas fournie, appliquer REVOKE_ALL utilisateur avec motif JUDICIAL_DEFAULT_SCOPE. Couverture besoins declencheurs.
INV-30-12 La consultation des appareils actifs expose uniquement : type appareil, date connexion, derniere activite, localisation approximative (ville/pays), statut. Conformite besoin 3.4 + RGPD.
INV-30-13 La revocation d'un appareil invalide toutes les sessions actives de ce deviceId pour le userId concerne. Gestion fine par device.
INV-30-14 Verification de token/session : comparaison en mode timing-safe obligatoire. Learning PD-238.
INV-30-15 Rate limiting obligatoire sur les operations sensibles definies dans la table "Operations sensibles (section 3.1)" : max 3 requetes / userId / 15 min et max 5 requetes / ip / 15 min (fenetre glissante). Learning PD-240 / PD-32.
INV-30-16 Toute action de session (CREATE, REFRESH, REVOKE_SESSION, REVOKE_DEVICE, REVOKE_ALL, EXPIRE, FALLBACK_ON, FALLBACK_OFF) est journalisee en append-only avec horodatage UTC milliseconde et acteur. Exigence probatoire.
INV-30-17 Aucune donnee secretes (token brut, secret d'authentification, materiau cryptographique) n'est persistee en clair dans le store de session ni dans les logs. Zero-knowledge + securite.
INV-30-18 En indisponibilite du store central, un fallback in-memory avec TTL est active en moins de 1 seconde ; ce mode est explicitement signale et journalise. Learning PD-238 + robustesse.
INV-30-19 En mode degrade, les operations necessitant une vue globale cross-instance (LIST_ALL_USER_SESSIONS, REVOKE_ALL_USER_SESSIONS) doivent etre rejetees de maniere explicite (service indisponible fonctionnel) pour eviter un faux sentiment de coherence. Securite > disponibilite en degradation.

5. Flux nominaux

FN-30-01 - Creation de session apres authentification

  1. Le systeme recoit la confirmation d'authentification reussie.
  2. Le systeme cree une session active unique avec tous les attributs contractuels (INV-30-03).
  3. Le systeme applique le TTL du contexte (WEB/MOBILE/API/SENSITIVE).
  4. Le systeme journalise CREATE.
  5. La session est utilisable immediatement.

FN-30-02 - Expiration automatique

  1. Le systeme calcule expiresAt a la creation/au renouvellement.
  2. A l'atteinte de expiresAt, la session passe en etat EXPIRED.
  3. Toute requete utilisant cette session est rejetee.
  4. Le systeme journalise EXPIRE.

FN-30-03 - Renouvellement TTL sur activite continue

  1. Une requete authentifiee valide est recue avant expiration.
  2. Le systeme verifie que la session est ACTIVE.
  3. Le systeme met a jour lastActivityAt et expiresAt selon la politique du contexte.
  4. Le systeme journalise REFRESH.

FN-30-04 - Consultation appareils/sessions actives

  1. L'utilisateur authentifie demande la liste de ses appareils connectes.
  2. Le systeme retourne uniquement les sessions de ce userId.
  3. Chaque entree expose strictement les champs autorises (INV-30-12).
  4. Les donnees retournees ont un decalage maximal de 2 secondes par rapport a l'etat courant du store central.

FN-30-05 - Revocation ciblee (session ou appareil)

  1. L'acteur legitime (utilisateur ou systeme) demande la revocation.
  2. Le systeme applique le rate limiting (INV-30-15).
  3. Le systeme invalide la session ciblee ou toutes les sessions du deviceId cible.
  4. Le systeme garantit la propagation cross-instance selon INV-30-09.
  5. Le systeme journalise REVOKE_SESSION ou REVOKE_DEVICE.

FN-30-06 - Revocation globale utilisateur

  1. Un declencheur autorise demande la revocation globale.
  2. Le systeme applique le rate limiting si declencheur utilisateur.
  3. Le systeme invalide toutes les sessions du userId.
  4. Le systeme garantit la propagation cross-instance selon INV-30-10.
  5. Le systeme journalise REVOKE_ALL avec motif.

FN-30-07 - Invalidation par evenement de securite/conformite

  1. Le systeme recoit l'un des evenements contractuels : PASSWORD_CHANGED, DEVICE_REVOKED, INTRUSION_SUSPECTED, JUDICIAL_REQUEST.
  2. Le systeme applique la politique de portee :
  3. PASSWORD_CHANGED -> REVOKE_ALL utilisateur ;
  4. DEVICE_REVOKED -> REVOKE_DEVICE cible ;
  5. INTRUSION_SUSPECTED -> REVOKE_ALL utilisateur ;
  6. JUDICIAL_REQUEST -> REVOKE_ALL utilisateur ou portee precisee par la requete judiciaire ; si la portee n'est pas precisee, appliquer REVOKE_ALL utilisateur avec motif JUDICIAL_DEFAULT_SCOPE.
  7. Le systeme journalise l'evenement source et l'invalidation effectuee.

5bis. Diagrammes Mermaid

Diagramme d'etats -- Cycle de vie d'une session

Modelise les transitions entre les 3 etats d'une session. Ref. INV-30-01 (creation), INV-30-05 (expiration automatique), INV-30-06 (renouvellement conditionnel), INV-30-09/INV-30-10 (invalidation immediate), INV-30-18/INV-30-19 (mode degrade).

stateDiagram-v2
    [*] --> ACTIVE : Authentification reussie\n[INV-30-01, FN-30-01]

    ACTIVE --> ACTIVE : Requete valide avant expiration\nRefresh TTL [INV-30-06, FN-30-03]
    ACTIVE --> EXPIRED : expiresAt atteint\nExpiration automatique [INV-30-05, FN-30-02]
    ACTIVE --> INVALIDATED : REVOKE_SESSION / REVOKE_DEVICE\n[INV-30-09, FN-30-05]
    ACTIVE --> INVALIDATED : REVOKE_ALL\n[INV-30-10, FN-30-06]
    ACTIVE --> INVALIDATED : Evenement securite\nPASSWORD_CHANGED / INTRUSION_SUSPECTED\nDEVICE_REVOKED / JUDICIAL_REQUEST\n[INV-30-11, FN-30-07]

    EXPIRED --> [*]
    INVALIDATED --> [*]

    note right of ACTIVE
        TTL selon contexte [INV-30-07] :
        WEB=3600s | MOBILE=604800s
        API=86400s | SENSITIVE=900s
    end note

    note right of INVALIDATED
        Propagation cross-instance :
        p95 < 100 ms, p99 < 250 ms
        [INV-30-09, INV-30-10]
    end note

Diagramme de sequence -- Creation de session et renouvellement

Illustre les interactions multi-service pour la creation (FN-30-01) et le renouvellement (FN-30-03), incluant la journalisation probatoire (INV-30-16) et la comparaison timing-safe (INV-30-14).

sequenceDiagram
    participant Client
    participant AuthService
    participant SessionService
    participant Redis as Redis (Store central)
    participant AuditLog as Audit Log (append-only)

    Note over Client, AuditLog: FN-30-01 — Creation de session

    AuthService->>SessionService: createSession(userId, deviceId, context, ipHash, userAgentHash)
    SessionService->>SessionService: Generer sessionId unique [INV-30-02]
    SessionService->>SessionService: Calculer TTL selon context [INV-30-07]
    SessionService->>Redis: SET session:{sessionId} {payload} EX {ttl}
    Redis-->>SessionService: OK
    SessionService->>Redis: SADD user_sessions:{userId} {sessionId}
    Redis-->>SessionService: OK
    SessionService->>AuditLog: Journaliser CREATE [INV-30-16]
    SessionService-->>AuthService: Session ACTIVE (sessionId, expiresAt)

    Note over Client, AuditLog: FN-30-03 — Renouvellement TTL sur activite

    Client->>SessionService: Requete authentifiee (sessionId)
    SessionService->>SessionService: Comparaison timing-safe [INV-30-14]
    SessionService->>Redis: GET session:{sessionId}
    Redis-->>SessionService: Session (status, expiresAt)
    alt Session ACTIVE et non expiree [INV-30-06]
        SessionService->>Redis: SET session:{sessionId} {updated} EX {ttl}
        Redis-->>SessionService: OK
        SessionService->>AuditLog: Journaliser REFRESH [INV-30-16]
        SessionService-->>Client: 200 OK
    else Session EXPIRED ou INVALIDATED
        SessionService->>AuditLog: Journaliser SESSION_REJECTED [ECT-30-01]
        SessionService-->>Client: 401 SESSION_INVALID
    end

Diagramme de sequence -- Invalidation par evenement de securite et mode degrade

Illustre la revocation declenchee par evenement (FN-30-07, INV-30-11), la propagation cross-instance (INV-30-09/INV-30-10), et le fallback in-memory (INV-30-18/INV-30-19).

sequenceDiagram
    participant EventBus
    participant SessionService
    participant Redis as Redis (Store central)
    participant Instance2 as Instance N (autres noeuds)
    participant AuditLog as Audit Log (append-only)
    participant Fallback as Fallback (in-memory)

    Note over EventBus, AuditLog: FN-30-07 — Invalidation par evenement securite

    EventBus->>SessionService: PASSWORD_CHANGED(userId)
    SessionService->>SessionService: Resoudre portee → REVOKE_ALL [INV-30-11]
    SessionService->>Redis: SMEMBERS user_sessions:{userId}
    Redis-->>SessionService: [sessionId1, sessionId2, sessionId3]
    SessionService->>Redis: DEL session:{sessionId1}, session:{sessionId2}, session:{sessionId3}
    Redis-->>SessionService: OK
    SessionService->>Redis: DEL user_sessions:{userId}
    Redis-->>SessionService: OK

    par Propagation cross-instance [INV-30-10]
        SessionService->>Instance2: Pub/Sub INVALIDATE_ALL(userId)
        Note right of Instance2: p95 < 100 ms, p99 < 250 ms
    end

    SessionService->>AuditLog: Journaliser REVOKE_ALL + motif PASSWORD_CHANGED [INV-30-16]

    Note over EventBus, Fallback: INV-30-18/INV-30-19 — Bascule mode degrade

    SessionService->>Redis: Healthcheck
    Redis--xSessionService: Timeout / Erreur

    SessionService->>Fallback: Activer fallback in-memory (< 1s) [INV-30-18]
    SessionService->>AuditLog: Journaliser FALLBACK_ON [INV-30-16]

    Note over SessionService, Fallback: Operations locales OK, operations globales rejetees [INV-30-19]

6. Cas d'erreur

ID Condition Reponse attendue Trace obligatoire
ECT-30-01 Session absente, expiree ou invalidee Rejet authentification de session (statut fonctionnel SESSION_INVALID) SESSION_REJECTED avec raison
ECT-30-02 Depassement rate limit utilisateur Rejet RATE_LIMIT_USER (equivalent HTTP 429) + retryAfterSeconds RATE_LIMIT_HIT (scope user)
ECT-30-03 Depassement rate limit IP Rejet RATE_LIMIT_IP (equivalent HTTP 429) + retryAfterSeconds RATE_LIMIT_HIT (scope ip)
ECT-30-04 Tentative acces donnees session d'un autre utilisateur Rejet ACCESS_DENIED (equivalent HTTP 403) ACCESS_DENIED
ECT-30-05 Store central indisponible, fallback active Operations locales autorisees uniquement ; operations globales rejetees (DEGRADED_MODE_RESTRICTION) FALLBACK_ON puis evenements de rejet
ECT-30-06 Store central indisponible et fallback indisponible Rejet SESSION_SERVICE_UNAVAILABLE (equivalent HTTP 503) SESSION_SERVICE_UNAVAILABLE
ECT-30-07 Requete de revocation sans acteur autorise Rejet FORBIDDEN_ACTION FORBIDDEN_ACTION

7. Criteres d'acceptation (testables)

ID Critere Observable
CA-30-01 Une authentification reussie cree une session active unique avec status=ACTIVE. Presence d'une entree session unique, non dupliquee.
CA-30-02 Les attributs minimaux de session (INV-30-03) sont tous presents ; aucun secret en clair n'est present. Inspection du stockage et des logs conforme.
CA-30-03 Chaque session creee a un TTL > 0 et une expiresAt coherente avec le contexte. Verification des champs temporels.
CA-30-04 Une session inactive est automatiquement inutilisable apres expiration. Requete post-expiration rejetee SESSION_INVALID.
CA-30-05 Une session active est renouvellee uniquement avant expiration. expiresAt augmente avant expiration ; aucun refresh accepte apres expiration.
CA-30-06 Les TTL WEB, MOBILE, API, SENSITIVE sont distincts et appliques selon le contexte. Test matrix par contexte.
CA-30-07 La liste des appareils d'un utilisateur est complete, isolee, et fraiche (staleness <= 2s). Comparaison etat store vs reponse API.
CA-30-08 Revocation de session ciblee appliquee cross-instance avec p95 < 100 ms et p99 < 250 ms. Mesure sur echantillon multi-instance >= 1000 operations.
CA-30-09 Revocation globale utilisateur appliquee cross-instance avec memes bornes de latence. Mesure identique sur scenario REVOKE_ALL.
CA-30-10 Les 4 evenements declencheurs provoquent l'invalidation attendue (portee conforme FN-30-07). Verification par type d'evenement.
CA-30-11 Revocation device invalide toutes les sessions du deviceId cible, et seulement celles-ci. Sessions autres devices non affectees.
CA-30-12 Rate limiting applique : 4e requete utilisateur (15 min) rejetee ; 6e requete IP (15 min) rejetee. Rejets RATE_LIMIT_* + retryAfterSeconds.
CA-30-13 La verification de token/session utilise une comparaison timing-safe. Preuve de conformite de l'appel de comparaison dans le composant de validation.
CA-30-14 Tous les evenements contractuels sont journalises en append-only avec timestamp UTC ms, acteur, motif. Audit log complet et ordonne.
CA-30-15 En perte store central, fallback in-memory est active en < 1 s, avec TTL applique. Mesure de bascule + expiration en mode degrade.
CA-30-16 En mode degrade, les operations globales sont rejetees explicitement et journalisees. Rejet DEGRADED_MODE_RESTRICTION trace.

8. Scenarios de test (Given / When / Then)

ST-30-01 - Creation session

Given un utilisateur authentifie avec succes en contexte WEB When la session est creee Then une session ACTIVE unique est stockee avec tous les champs obligatoires et un TTL WEB

ST-30-02 - Expiration automatique

Given une session ACTIVE dont expiresAt est atteint When une requete authentifiee est emise avec cette session Then la requete est rejetee avec SESSION_INVALID et un evenement EXPIRE est present

ST-30-03 - Refresh avant expiration

Given une session ACTIVE non expiree When une requete valide est traitee Then lastActivityAt et expiresAt sont mis a jour et REFRESH est journalise

ST-30-04 - Refresh apres expiration (interdit)

Given une session expiree When une tentative de renouvellement est soumise Then le renouvellement est refuse et la session reste invalide

ST-30-05 - Liste appareils isolee

Given deux utilisateurs avec sessions actives distinctes When l'utilisateur A consulte ses appareils Then seules les sessions de A sont retournees avec les champs autorises

ST-30-06 - Revocation session ciblee multi-instance

Given une session active presente sur un cluster multi-instance When une revocation ciblee est declenchee Then l'usage du token est refuse sur toutes les instances avec p95 < 100 ms et p99 < 250 ms

ST-30-07 - Revocation globale suite changement mot de passe

Given un utilisateur avec 3 sessions actives When l'evenement PASSWORD_CHANGED est emis Then les 3 sessions deviennent inutilisables dans les bornes contractuelles

ST-30-08 - Revocation device

Given un utilisateur avec 2 sessions sur device-X et 1 session sur device-Y When device-X est revoque Then les 2 sessions de device-X sont invalidees et celle de device-Y reste active

ST-30-09 - Rate limit utilisateur

Given un utilisateur authentifie sur operation sensible When il emet 4 requetes en moins de 15 minutes Then la 4e requete est rejetee RATE_LIMIT_USER

ST-30-10 - Rate limit IP

Given plusieurs comptes derriere une meme IP When 6 requetes sensibles sont emises en moins de 15 minutes Then la 6e requete est rejetee RATE_LIMIT_IP

ST-30-11 - Fallback active

Given le store central devient indisponible When le service bascule en mode degrade Then FALLBACK_ON est journalise en < 1 s et les sessions fallback expirent selon TTL

ST-30-12 - Restriction mode degrade

Given le mode degrade est actif When une operation globale REVOKE_ALL_USER_SESSIONS est demandee Then la requete est rejetee DEGRADED_MODE_RESTRICTION et tracee

ST-30-13 - Journal probatoire complet

Given une sequence create -> refresh -> revoke When l'audit est extrait Then les 3 evenements sont presents, horodates, ordonnes, avec acteur et motif

9. Hypotheses explicites

ID Hypothese Impact si faux
H-30-01 Le deviceId est fourni de maniere stable et fiable par les clients. Revocation device et listing peuvent devenir incomplets ou errones.
H-30-02 Le service de geolocalisation IP fournit a minima ville/pays avec latence compatible. Le champ "localisation approximative" peut devenir indisponible.
H-30-03 L'infrastructure de mesure permet de calculer p95/p99 sur invalidation cross-instance. Impossible de prouver la conformite INV-30-09/10.
H-30-04 Le journal append-only (PD-31) accepte les evenements de session avec precision UTC milliseconde. Perte de valeur probatoire des traces de session.
H-30-05 Les operations sensibles de session sont identifiees et routables de facon univoque. Rate limiting contractuel incomplet ou contournable.

10. Points a clarifier

ID Point manquant Pourquoi c'est bloquant/non bloquant
Q-30-01 Clos - voir section 3.2 "Valeurs TTL par contexte (INV-30-07)". Ferme par definition canonique des valeurs TTL testables.
Q-30-02 Clos - voir FN-30-07 et INV-30-11 pour le comportement par defaut JUDICIAL_DEFAULT_SCOPE. Ferme par definition explicite de la portee par defaut pour JUDICIAL_REQUEST.
Q-30-03 Politique de retention des evenements de session dans l'audit append-only (duree, purge). Bloquant pour la conformite RGPD detaillee.
Q-30-04 Clos - voir section 3.1 "Operations sensibles (rate limiting INV-30-15)". Ferme par liste canonique des operations soumises a INV-30-15.
Q-30-05 Contrat d'interface exact avec l'ancrage probatoire (champ de correlation, periodicite d'ancrage). Bloquant pour lever HP-30-02.

References

  • Epic : PD-182 (AUTH)
  • JIRA : PD-30
  • Repos concernes : ProbatioVault-backend
  • Documents associes : Architecture 41, Specifications techniques 42