Aller au contenu

PD-239 — Revue de spécification & tests

1. Synthèse exécutive

  • Verdict global : RÉSERVE
  • Écarts identifiés :
  • Ambiguïtés : 4
  • Contradictions : 0
  • Non testables : 2
  • Incohérences Spec↔Tests : 1
  • Hypothèses dangereuses : 1
  • Risques sécu/conformité : 1

2. Écarts détaillés

ECT-01

  • Type : Ambiguïté
  • Référence : Spec §2 (Périmètre), §5 F-239-01
  • Description : Le payload attendu de POST /user/password/change n’est pas défini (nom exact des champs, présence/absence de confirmation). La spec mentionne la confirmation côté client PD‑106, mais ne contractualise pas si le backend la reçoit/valide.
  • Impact : Tests et implémentations peuvent diverger (champ confirmation ignoré ou exigé), rendant la conformité non vérifiable de façon déterministe.
  • Gravité : Majeur

ECT-02

  • Type : Ambiguïté
  • Référence : Spec §6 (ERR-239-SESSION-INVALIDATION-FAILED), §5 F-239-01
  • Description : Le comportement en cas d’échec d’invalidation de sessions n’est pas borné (code d’erreur indiqué, mais statut HTTP, message, et état final côté client non précisés).
  • Impact : Risque de réponses non homogènes et difficulté à prouver CA‑239‑05.
  • Gravité : Mineur

ECT-03

  • Type : Non testable
  • Référence : Spec §4 INV-239-08, Tests T-239-INV-01
  • Description : L’invariant « délégation Keycloak Admin API » repose sur une trace d’appel sortant sans définir la surface d’observabilité (logs, audit, métriques). Aucun observable contractuel précis n’est défini.
  • Impact : Le test T-239-INV-01 n’est pas objectivement vérifiable sans instrumentation imposée.
  • Gravité : Majeur

ECT-04

  • Type : Incohérence Spec↔Tests
  • Référence : Spec §6 ERR-239-INTERNAL, Tests (absence de test dédié)
  • Description : La spec définit ERR‑239‑INTERNAL, mais la matrice/tests ne couvrent pas ce cas d’erreur.
  • Impact : Couverture incomplète d’un cas contractuel ; risque d’acceptation sans preuve.
  • Gravité : Mineur

ECT-05

  • Type : Hypothèse dangereuse
  • Référence : Spec §4 INV-239-05, §9 H-239-04
  • Description : L’invalidation « de toutes les sessions » suppose une capacité système et une instantanéité non bornée (latence, propagation, tokens déjà émis). Aucun délai de prise d’effet n’est contractualisé.
  • Impact : Non‑déterminisme des tests et risque de faux positifs/négatifs sur CA‑239‑05.
  • Gravité : Majeur

ECT-06

  • Type : Risque sécu/conformité
  • Référence : Spec §6 ERR-239-PWD-INVALID / ERR-239-PWD-POLICY, §7 CA-239-07
  • Description : Exigence « message exploitable » sans contrainte de non‑divulgation peut introduire fuite d’information (ex. distinction trop précise entre ancien mot de passe invalide et politique). La spec ne borne pas le contenu admissible.
  • Impact : Risque d’énumération de politiques ou d’indices exploitables, et difficulté d’audit.
  • Gravité : Mineur

3. Points forts

  • Alignement explicite avec PD‑106 (INV‑106‑12 / CA‑106‑11/12).
  • Invariants structurés et cas d’erreur bien listés.
  • Prise en compte de l’invalidation des sessions, souvent omise dans ce type de contrat.

4. Recommandations générales

  • Contractualiser le payload exact (noms des champs) et l’usage de confirmation côté backend.
  • Définir les observables minimaux pour prouver la délégation Keycloak et l’invalidation de sessions.
  • Étendre la matrice de tests pour couvrir ERR‑239‑INTERNAL.