Aller au contenu

PD-26 — Rétrospective

1. Contexte

Champ Valeur
Story ID PD-26
Titre Intégration Keycloak OAuth2/OIDC
Domaine auth-identity
Projet backend
Date complétion 2026-01-08
Verdict ACCEPTÉ

2. Métriques

Métrique Valeur
Tests Vitest OIDC 38/38 PASS
Tests Jest auth 389 PASS (25 suites)
Écarts initiaux 6 (E-01 à E-06)
Invariants 11

3. Learnings clés

  • jose ESM vs Jest : La bibliothèque jose v6+ est ESM-only, incompatible avec Jest. Solution : Vitest dédié pour les tests utilisant jose.

  • Écarts plan/spécification : Une revue systématique du plan contre les invariants évite les écarts découverts tardivement en acceptabilité.

  • Signal fail-closed observable : Distinguer HTTP 503 (service dégradé) de HTTP 401 (token invalide) pour une observabilité correcte.

  • Liste blanche de logs fermée : AUDIT_ALLOWED_FIELDS const évite les fuites accidentelles de données sensibles.

4. Patterns applicables

Nouveau pattern : Double runner tests (Vitest + Jest)

Pour les dépendances ESM-only :

// vitest.config.oidc.ts
export default defineConfig({
  test: {
    include: ['src/**/*.oidc.spec.ts'],
  },
});

Nouveau pattern : Modèle d'autorisation HYBRID explicite

Le décorateur @AuthorizationRule(AND|OR) rend la combinaison roles+scopes déterministe :

@Roles('admin')
@Scopes('write:users')
@AuthorizationRule(AND) // Les deux requis

5. Signal CLAUDE.md

Priorité moyenne : Documenter la compatibilité ESM pour les dépendances auth.

### Bibliothèques ESM-only — Vitest obligatoire (2026-02-XX)

**Dépendances concernées** : `jose` v6+

**Solution** :
1. Créer `vitest.config.{module}.ts` dédié
2. Tests ESM : `*.oidc.spec.ts` exécutés par Vitest
3. Tests CommonJS : `*.spec.ts` exécutés par Jest
4. CI : deux commandes `npm run test:vitest && npm run test:jest`

6. Conclusion

PD-26 a intégré Keycloak avec validation JWT complète et modèle d'autorisation HYBRID. Les 6 écarts initiaux ont mis en évidence l'importance d'une revue plan/spécification. Le pattern double runner (Vitest + Jest) est une solution pragmatique pour les dépendances ESM-only comme jose.


Rétrospective générée 2026-02-19 (Étape 10 batch auth-identity)