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¶
- Le systeme recoit la confirmation d'authentification reussie.
- Le systeme cree une session active unique avec tous les attributs contractuels (INV-30-03).
- Le systeme applique le TTL du contexte (
WEB/MOBILE/API/SENSITIVE). - Le systeme journalise
CREATE. - La session est utilisable immediatement.
FN-30-02 - Expiration automatique¶
- Le systeme calcule
expiresAta la creation/au renouvellement. - A l'atteinte de
expiresAt, la session passe en etatEXPIRED. - Toute requete utilisant cette session est rejetee.
- Le systeme journalise
EXPIRE.
FN-30-03 - Renouvellement TTL sur activite continue¶
- Une requete authentifiee valide est recue avant expiration.
- Le systeme verifie que la session est
ACTIVE. - Le systeme met a jour
lastActivityAtetexpiresAtselon la politique du contexte. - Le systeme journalise
REFRESH.
FN-30-04 - Consultation appareils/sessions actives¶
- L'utilisateur authentifie demande la liste de ses appareils connectes.
- Le systeme retourne uniquement les sessions de ce
userId. - Chaque entree expose strictement les champs autorises (INV-30-12).
- 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)¶
- L'acteur legitime (utilisateur ou systeme) demande la revocation.
- Le systeme applique le rate limiting (INV-30-15).
- Le systeme invalide la session ciblee ou toutes les sessions du
deviceIdcible. - Le systeme garantit la propagation cross-instance selon INV-30-09.
- Le systeme journalise
REVOKE_SESSIONouREVOKE_DEVICE.
FN-30-06 - Revocation globale utilisateur¶
- Un declencheur autorise demande la revocation globale.
- Le systeme applique le rate limiting si declencheur utilisateur.
- Le systeme invalide toutes les sessions du
userId. - Le systeme garantit la propagation cross-instance selon INV-30-10.
- Le systeme journalise
REVOKE_ALLavec motif.
FN-30-07 - Invalidation par evenement de securite/conformite¶
- Le systeme recoit l'un des evenements contractuels :
PASSWORD_CHANGED,DEVICE_REVOKED,INTRUSION_SUSPECTED,JUDICIAL_REQUEST. - Le systeme applique la politique de portee :
PASSWORD_CHANGED->REVOKE_ALLutilisateur ;DEVICE_REVOKED->REVOKE_DEVICEcible ;INTRUSION_SUSPECTED->REVOKE_ALLutilisateur ;JUDICIAL_REQUEST->REVOKE_ALLutilisateur ou portee precisee par la requete judiciaire ; si la portee n'est pas precisee, appliquerREVOKE_ALLutilisateur avec motifJUDICIAL_DEFAULT_SCOPE.- 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