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
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-05GIVEN - 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
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-05GIVEN - 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 |
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-04GIVEN - 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 |
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.