PD-239-REVIEW-CODE

  • id: ECT-CODE-01 gravite: MAJEUR description: "INV-239-10 non respecté : aucun log structuré event=keycloak_password_change avec userId= n’est émis lors de l’appel Keycloak Admin API. Le service ne journalise que des messages génériques." recommendation: "Émettre un log structuré conforme à l’invariant au moment de l’appel KeycloakAdminService.changeUserPassword()."
  • id: ECT-CODE-02 gravite: MAJEUR description: "INV-239-05 (invalidation ≤ 30s) non démontrée : le service appelle SessionRevocationStore.revokeAllUserSessions() sans garantie/contrôle de délai ni mesure de latence. L’exigence temporelle n’est pas vérifiable dans le code fourni." recommendation: "Ajouter un mécanisme d’observabilité/contrôle du délai d’invalidation conforme à l’invariant."
  • id: ECT-CODE-03 gravite: MINEUR description: "Mapping des erreurs Keycloak en ERR-239-* non visible dans le service : changeUserPassword() est appelé sans gestion d’erreurs locale. La conformité dépend entièrement de KeycloakAdminService sans preuve dans ce fichier." recommendation: "S’assurer que le mapping contractuel ERR-239-* est appliqué (au minimum via un filter/exception handler dédié)." commentaires: "Patterns NestJS respectés (DI, guards, filter). Séparation controller/service correcte. Vérification oldPassword réalisée avant changement. La conformité contractuelle reste bloquée par l’absence du log structuré requis et l’absence de preuve du délai d’invalidation."