Aller au contenu

PD-235 — Scénarios de tests contractuels

1. Références

  • Spécification : PD-235-specification.md
  • Epic : EPIC-193
  • JIRA : PD-235

2. Matrice de couverture

ID Invariant ID Critère ID Test Couverture Commentaire
INV-01 CA-01 TC-NOM-01 Oui Découverte OIDC accessible
INV-02 CA-04 TC-INV-02 Oui Auto-hébergement démontré par artefacts
INV-03 CA-03 TC-NOM-03 Oui Isolation environnements (iss/env distinct)
INV-04 CA-02 TC-NOM-02 Oui JWT signé, vérification hors-ligne
INV-05 CA-04 TC-NOM-04 Oui Aucun secret/clé applicative dans l’IdP
INV-06 CA-05 TC-NOM-05 Oui Journalisation évènements d’auth/token
INV-IAM-01 CA-02 TC-NOM-02 Oui Issuer autorisé (liste fermée)
INV-IAM-02 CA-02 TC-NOM-02 Oui Audience autorisée (liste fermée)
INV-IAM-03 CA-02 TC-NOM-02 Oui Algorithmes autorisés (liste fermée)
INV-IAM-04 CA-02 TC-NOM-02 Oui Claims requis présents
INV-IAM-05 CA-02 TC-NOM-02 Oui Contraintes temporelles appliquées
INV-IAM-06 CA-02 TC-NOM-02 Oui Flux OIDC autorisés
INV-IAM-07 CA-03 TC-NOM-03 Oui Isolation par environnement
INV-IAM-08 CA-03 TC-NEG-05 Oui Rejet token iss autre environnement
INV-IAM-09 CA-05 TC-NOM-06 / TC-NEG-06 Oui Journalisation conforme / absence de fuite
INV-IAM-10 CA-04 TC-INV-03 Oui Artefacts opposables prouvant l’auto-hébergement et absence de secrets applicatifs
INV-IAM-11 CA-05 TC-ERR-03 Oui Signal d’indisponibilité IdP observable et distinct

3. Scénarios de test – Flux nominaux

TEST-ID: TC-NOM-01
Référence spec: Flux F1, INV-01, CA-01

GIVEN
  - Un environnement "E" (non-prod ou prod) déclaré comme opérationnel
WHEN
  - Le document de découverte OIDC de l’environnement "E" est demandé
THEN
  - Le document de découverte est accessible
AND
  - Le document de découverte contient des métadonnées OIDC exploitables (issuer, endpoints et référence JWKS)
AND
  - L’issuer publié est stable et cohérent pour l’environnement "E"
TEST-ID: TC-NOM-02
Référence spec: Flux F2/F3, INV-04, INV-06, CA-02

GIVEN
  - Un token "T" émis par l’IdP de l’environnement "E"
WHEN
  - La signature du token "T" est vérifiée à l’aide du JWKS publié par l’environnement "E"
THEN
  - La vérification cryptographique du JWT réussit
AND
  - La vérification est réalisable sans appel en ligne à l’IdP (hors récupération du JWKS)

AND (contrôle négatif intégré)
  - Si la signature de "T" est altérée, la vérification échoue de manière déterministe
TEST-ID: TC-NOM-03
Référence spec: Flux F3, INV-03, CA-03

GIVEN
  - Deux environnements isolés "A" et "B"
  - Un token "T_A" émis par l’IdP de l’environnement "A"
WHEN
  - Le token "T_A" est présenté comme preuve d’identité dans le contexte de consommation de l’environnement "B"
THEN
  - Le token est rejeté par les règles de validation de l’environnement "B"
AND
  - Aucun accès n’est accordé sur la base de "T_A" dans l’environnement "B"
TEST-ID: TC-NEG-05
Référence spec: INV-IAM-08, CA-03

GIVEN
  - Un token "T_A" émis par l’issuer autorisé de l’environnement "A"
WHEN
  - Le token "T_A" est présenté dans l’environnement "B"
THEN
  - Le token est rejeté car son `iss` ne correspond pas à l’environnement "B"
AND
  - Aucun accès n’est accordé

TEST-ID: TC-NOM-04
Référence spec: INV-05, CA-04

GIVEN
  - Une instance IdP déployée pour l’environnement "E"
WHEN
  - Les paramètres de configuration et artefacts d’exploitation de l’IdP sont inspectés (configuration, variables d’environnement, secrets référencés, export de configuration)
THEN
  - Aucune clé de chiffrement applicative ProbatioVault et aucun secret applicatif ProbatioVault n’est présent dans l’IdP
AND
  - Les seuls secrets présents sont strictement nécessaires au fonctionnement IdP (ex: secrets propres à l’IdP)
AND
  - Une politique de rétention des journaux est documentée et applicable
AND
  - Les journaux historiques sont consultables sur la période de rétention exigée
TEST-ID: TC-NOM-05 Référence spec: INV-06, INV-IAM-09, CA-05

GIVEN - Un environnement "E" déclaré opérationnel WHEN - Un évènement d’authentification et un évènement d’émission de token se produisent (succès et/ou échec) THEN - Un enregistrement de journalisation est observable pour chaque évènement AND - Les journaux permettent d’identifier au minimum : le type d’évènement, l’environnement, et le résultat (succès/échec) AND - Aucun token ni secret n’est présent en clair dans les journaux AND - Une politique de rétention est documentée et les journaux restent disponibles sur la période exigée


TEST-ID: TC-NOM-06 Référence spec: INV-IAM-09, CA-05

GIVEN - Un environnement "E" opérationnel - Un évènement d’authentification et un refus de token WHEN - Les journaux d’audit de l’environnement "E" sont consultés THEN - Chaque événement est journalisé avec : type (auth/émission/refus), environnement, résultat (succès/échec), horodatage AND - Aucun token JWT, secret ou clé cryptographique n’apparaît en clair AND - Le format de journal est structuré et déterministe

## 4. Scénarios de test – Cas d’erreur
TEST-ID: TC-ERR-01 Référence spec: Cas d’erreur "IdP indisponible"

GIVEN - L’IdP de l’environnement "E" est indisponible WHEN - Une tentative d’émission de token est réalisée THEN - Aucun token n’est émis AND - Un signal d’erreur est observable (code/état/évènement) AND - Aucun artefact (token, secret) n’est exposé en clair dans les traces


TEST-ID: TC-ERR-02 Référence spec: Cas d’erreur "Token non signé ou invalide"

GIVEN - Un token "T" non signé ou dont la signature est invalide WHEN - Le token "T" est présenté à un service consommateur THEN - Le token est rejeté AND - Le rejet est déterministe et reproductible AND - Aucun accès n’est accordé


TEST-ID: TC-ERR-03 Référence spec: INV-IAM-11, CA-05

GIVEN - L’IdP de l’environnement "E" est indisponible WHEN - Une tentative d’émission de token est réalisée THEN - Aucun token n’est émis AND - Un signal d’erreur explicite et distinct d’un refus d’autorisation/token invalide est observable (ex: code/flag health) AND - L’événement est journalisé conformément à l’invariant INV-IAM-09

## 5. Tests d’invariants (non négociables)

| Invariant | Test(s) dédiés | Observable | Commentaire |
| --------- | -------------- | ---------- | ----------- |
| INV-01 | TC-NOM-01 | Endpoint / contenu discovery | Socle transverse : exposition OIDC |
| INV-02 | TC-INV-02, TC-INV-03 | Artefacts d’exploitation | Auto-hébergement / contrôle opérationnel |
| INV-03 | TC-NOM-03, TC-NEG-05 | Rejet / absence d’accès | Isolation env (issuer distinct) |
| INV-04 | TC-NOM-02, TC-ERR-02 | Vérification crypto | JWT signés vérifiables |
| INV-05 | TC-NOM-04 | Inspection config / secrets | Pas de clés applicatives |
| INV-06 | TC-NOM-02, TC-NOM-05, TC-ERR-02 | Stabilité des rejets, logs | Déterminisme + audit |
| INV-IAM-01 | TC-NOM-02 | Claim iss autorisé | Issuer liste fermée |
| INV-IAM-02 | TC-NOM-02 | Audience autorisée | Audience liste fermée |
| INV-IAM-03 | TC-NOM-02 | Algorithme autorisé | Liste fermée |
| INV-IAM-04 | TC-NOM-02 | Claims requis présents | Claims obligatoires |
| INV-IAM-05 | TC-NOM-02 | Contraintes temporelles | exp/nbf/iat avec skew |
| INV-IAM-06 | TC-NOM-02 | Flux autorisé | Flux client ↔ token |
| INV-IAM-07 | TC-NOM-03, TC-NEG-05 | Isolation environnement | Rejet cross-env |
| INV-IAM-08 | TC-NEG-05 | iss autre environnement rejeté | Cloisonnement |
| INV-IAM-09 | TC-NOM-04, TC-NOM-05, TC-NOM-06, TC-NEG-06 | Logs structurés sans secrets + rétention démontrable | Journalisation normative |
| INV-IAM-10 | TC-INV-02, TC-INV-03 | Artefacts opposables disponibles | Preuve absence secrets appli |
| INV-IAM-11 | TC-ERR-03 | Signal indisponibilité observé | Fail-closed IdP |
TEST-ID: TC-INV-02 Référence spec: INV-02, CA-04

GIVEN - Un environnement "E" déclaré opérationnel WHEN - Les éléments d’exploitation sont inspectés (inventaire infra, ownership, accès admin, procédures runbook, sauvegardes) THEN - Il est démontrable que l’IdP est auto-hébergé et sous contrôle opérationnel ProbatioVault AND - Les accès d’administration sont contrôlés et auditables (existence d’un contrôle d’accès et de traces) AND - Au moins un artefact probatoire est disponible (inventaire d’infrastructure, runbook d’exploitation, documentation de responsabilité opérationnelle, ou preuve de contrôle des accès administrateur) AND - Les artefacts sont accessibles sur demande pour audit


TEST-ID: TC-INV-03 Référence spec: INV-IAM-10, CA-04

GIVEN - Un environnement "E" déclaré opérationnel WHEN - Les artefacts d’exploitation et de sécurité sont collectés (inventaire infra/actifs, runbook, preuves de contrôle des accès admin, documentation de responsabilité) THEN - Ces artefacts démontrent l’auto-hébergement de l’IdP et l’absence de clés ou secrets applicatifs ProbatioVault (seuls les secrets nécessaires à l’IdP sont présents) AND - Les artefacts sont disponibles pour audit

## 6. Tests de non-régression

| Test ID | Objet | Observable | Commentaire |
| ------- | ----- | ---------- | ----------- |
| TC-NR-01 | Stabilité du discovery OIDC | Diff du document | Toute modification est détectable |
| TC-NR-02 | Stabilité du JWKS | Diff du JWKS / rotation | Rotation détectable et cohérente |
| TC-NR-03 | Isolement env | Rejet inter-env | Aucun contournement après changement infra |

## 7. Tests négatifs et adversariaux

| Test ID | Entrée invalide / abus | Résultat attendu | Observable |
| ------- | ---------------------- | ---------------- | ---------- |
| TC-NEG-01 | Token signé par un autre issuer | Rejet systématique | Vérification JWT + logs |
| TC-NEG-02 | Présentation d’un token expiré | Rejet systématique | Rejet + logs |
| TC-NEG-03 | Utilisation d’un token d’un autre environnement | Rejet systématique | Rejet + logs |
| TC-NEG-04 | Tentative d’obtenir un token sans identité valide | Aucun token émis | Absence de token + logs |
| TC-NEG-05 | Token avec `iss` d’un autre environnement | Rejet systématique | Rejet + logs |
| TC-NEG-06 | Journalisation contenant un token ou secret | Rejet / filtrage des logs | Logs/audit |
TEST-ID: TC-NEG-06 Référence spec: INV-IAM-09, CA-05

GIVEN - Un environnement "E" opérationnel - Un flux d’authentification/émission de token WHEN - Les journaux produits incluent volontairement une tentative d’injection d’un token ou d’un secret THEN - Les journaux ne contiennent aucun token JWT, secret ou clé cryptographique en clair AND - Le format reste structuré et limité aux champs autorisés ```

8. Observabilité requise pour les tests

  • État système : disponibilité IdP par environnement, et endpoints exposés.
  • Réponse API : accessibilité discovery OIDC et JWKS ; codes/états en cas d’indisponibilité IdP.
  • Journal d’audit : évènements d’authentification/émission/refus (succès/échec) structurés, sans fuite de tokens/secrets/clefs.
  • Artefacts d’exploitation : éléments permettant de démontrer l’auto-hébergement et le contrôle opérationnel (inventaire, runbook, contrôle d’accès admin, traces).

9. Règles non testables

Règle Raison Impact
Politique de rétention des logs (durée, support) Durée/implémentation de rétention non précisées (section 10) Majeur

10. Verdict QA

  • ⚠️ Testable partiellement (avec réserve sur la rétention des logs)
  • La clarification de la rétention des journaux reste nécessaire pour une auditabilité intégrale.