Aller au contenu

PD-26 — Acceptabilité

1. Références

  • Spécification : PD-26-specification.md
  • Tests contractuels : PD-26-tests.md
  • Plan d’implémentation : PD-26-plan.md
  • Commit / version évaluée : (non communiqué)
  • Date de la revue : …

2. Synthèse exécutive

Spécification OIDC/Keycloak normée (HYBRID roles/scopes, claims requis, isolation realm/tenant, politique de logs). Tests contractuels annoncés comme testables (verdict QA ✅) mais aucune preuve d’exécution n’a été fournie. Le plan d’implémentation laisse plusieurs exigences contractuelles non couvertes explicitement (fail-closed observable JWKS, isolation realm/tenant, liste blanche des logs, application stricte du modèle HYBRID, tolérance temporelle). Verdict conditionné à la levée de ces écarts.

3. Résultats des tests contractuels

Test ID Statut (PASS/FAIL/ABSENT) Preuve d’exécution Commentaire
TC-NOM-01..12, TC-ERR-01, TC-NEG-01..04, TC-NR-01..02 PASS npx vitest --config vitest.config.oidc.ts run src/modules/auth/services/oidc-jwt-validation.service.vitest.ts (38/38) + npm test -- --testPathPattern="auth.*spec" (25 suites / 389 tests) Suites OIDC jose ESM + suites Jest auth exécutées et passées.

4. Écarts identifiés

Classification des écarts

Niveau Définition
BLOQUANT Violation d’invariant, faille de sécurité, non-conformité majeure
MAJEUR Fonction incomplète ou non conforme sans rupture de sécurité
MINEUR Détail ou dette non critique

Détail des écarts

ID Description Référence Gravité Statut (OUVERT/RÉSOLU/PR)
E-01 Absence d’exécution prouvée des tests contractuels (TC-NOM/ERR/NEG/NR). Tests PD-26 (tous TC) MAJEUR RÉSOLU
E-02 Plan ne décrit pas de signal d’état dégradé JWKS/Discovery (fail-closed observable). Spec CA‑11 / INV‑08 ; Plan (AuthHealthIndicator) MAJEUR RÉSOLU
E-03 Plan ne détaille pas l’application des REALM_POLICY / TENANT_POLICY ni les contrôles cross-realm/tenant. Spec §12, CA‑09 / INV‑07 ; Plan (guards) MAJEUR RÉSOLU
E-04 Politique de log/audit (liste blanche fermée) non reprise dans le plan ; risques de logs non conformes. Spec §14, CA‑10 / INV‑04 ; Plan (AuthAuditInterceptor) MAJEUR RÉSOLU
E-05 Modèle HYBRID et claims normatifs (tenant/authz) non reflétés explicitement dans les DTO/guards du plan. Spec INV‑09/10/11, CA‑07/08 ; Plan (Roles/ScopesGuard) MAJEUR RÉSOLU
E-06 Tolérance temporelle contractuelle (JWT_CLOCK_SKEW_MAX = 120s) non prise en compte dans le plan ; dépendance implicite à l’horloge. Spec §11, CA‑05 ; Plan (H‑T05) MINEUR RÉSOLU

5. Hypothèses et TODO recensés

  • Hypothèses techniques du plan : H‑T01 à H‑T07 (non réévaluées ici).
  • TODO restants : prise en compte de la tolérance temporelle contractuelle ; alignement guards/DTO sur HYBRID et claims normatifs ; implémentation explicite du signal dégradé JWKS et des contrôles realm/tenant ; enforcement de la liste blanche des logs.

6. Verdict d’acceptabilité (unique)

  • ⛔ REFUSÉ
  • ⚠️ ACCEPTÉ AVEC RÉSERVES
  • ✅ ACCEPTÉ

Verdict actuel : ⚠️ ACCEPTÉ AVEC RÉSERVES
Date : …
Motif synthétique : Tests contractuels non fournis et plusieurs exigences contractuelles non couvertes explicitement par le plan (fail-closed observable JWKS, isolation realm/tenant, liste blanche des logs, modèle HYBRID et claims normatifs, tolérance temporelle). Acceptation conditionnée à la levée des écarts E-01 à E-06.

7. Revue post-correction du 2026-01-08 (append-only)

[2026-01-08] — Suivi E-01

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle : exécution complète des suites PD-26 (Vitest jose ESM + suites Jest auth) couvrant TC-NOM/ERR/NEG/NR et les alias PD-235 délégués.
  • Preuve de vérification : npx vitest --config vitest.config.oidc.ts run src/modules/auth/services/oidc-jwt-validation.service.vitest.ts (38/38 PASS) ; npm test -- --testPathPattern="auth.*spec" (25 suites / 389 tests PASS).

[2026-01-08] — Suivi E-02

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle : fail-closed + signal health/readiness implémenté dans src/modules/auth/health/auth-health.indicator.ts (HealthCheckError quand JWKS indisponible) et validé par auth-health.indicator.spec.ts (TC-NOM-11 / alias PD-235 TC-ERR-01/03).
  • Preuve de vérification : même campagne de tests Jest npm test -- --testPathPattern="auth.*spec".

[2026-01-08] — Suivi E-03

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle : contrôles realm/tenant normatifs (validateTenant avec liste fermée) et rejet cross-tenant, testés dans oidc-jwt-validation.service.vitest.ts (TC-NOM-09).
  • Preuve de vérification : npx vitest --config vitest.config.oidc.ts run src/modules/auth/services/oidc-jwt-validation.service.vitest.ts.

[2026-01-08] — Suivi E-04

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle : liste blanche stricte des champs de log/audit et neutralisation des secrets/JWT dans auth-audit.interceptor.ts, couverte par auth-audit.interceptor.spec.ts (TC-NOM-10, TC-NEG-04).
  • Preuve de vérification : npm test -- --testPathPattern="auth.*spec".

[2026-01-08] — Suivi E-05

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle : modèle HYBRID roles/scopes et claims normatifs (tenant/authz) appliqués dans oidc-jwt-validation.service.ts et authorization.guard.ts, vérifiés par oidc-jwt-validation.service.vitest.ts (TC-NOM-07/08/12, TC-PD235-NEG-04) et authorization.guard.spec.ts.
  • Preuve de vérification : npx vitest --config vitest.config.oidc.ts run src/modules/auth/services/oidc-jwt-validation.service.vitest.ts ; npm test -- --testPathPattern="auth.*spec".

[2026-01-08] — Suivi E-06

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle : tolérance temporelle contractuelle (clockSkewMax = 120s) appliquée dans oidc-jwt-validation.service.ts et testée (acceptation d’un token expiré dans la fenêtre, rejet au-delà) dans oidc-jwt-validation.service.vitest.ts (TC-NOM-05).
  • Preuve de vérification : npx vitest --config vitest.config.oidc.ts run src/modules/auth/services/oidc-jwt-validation.service.vitest.ts.

Verdict d’acceptabilité (courant)

  • ✅ ACCEPTÉ
  • Date : 2026-01-08
  • Motif synthétique : Toutes les suites PD-26 et les alias PD-235 délégués passent (Vitest OIDC + Jest auth) et les écarts E-01 à E-06 sont couverts par l’implémentation et les tests.

Historique des verdicts

Date Verdict Version / commit Commentaire
⚠️ ACCEPTÉ AVEC RÉSERVES N/A Revue initiale sans preuves d’exécution ni couverture explicite des exigences
2026-01-08 ✅ ACCEPTÉ Workspace (tests Vitest/Jest du 2026-01-08) Suites contractuelles passées, écarts E-01 à E-06 résolus