Rotation des secrets¶
Procédures de rotation pour chacun des secrets de MesMy. À planifier périodiquement et en cas de suspicion de compromission.
Secrets clients OIDC¶
Le plus courant, réalisable sans interruption depuis le back-office.
- Back-office → Applications (OIDC) → application concernée → Régénérer le secret.
- Le nouveau secret s'affiche une seule fois : copiez-le immédiatement.
- Reportez-le dans la configuration de l'application cliente (
CLIENT_SECRET/OIDC_CLIENT_SECRET) et redéployez-la.
L'action est tracée dans le journal d'audit (client.secret_rotated).
L'ancien secret cesse immédiatement d'être valide.
Clés de signature des tokens (JWKS, RS256)¶
Les clients vérifient les tokens via l'endpoint /jwks. Pour une rotation propre :
- Générez un nouveau jeu de clés :
pnpm --filter @mesmy/backend jwks:generate ./oidc-jwks-new.json - Fusionnez l'ancienne et la nouvelle clé dans le fichier JWKS (tableau
keys) : le provider signe avec la première et publie les deux, laissant les tokens en cours valides le temps de leur expiration. - Montez le fichier mis à jour (
OIDC_JWKS_PATH) et redémarrez le backend. - Après expiration des anciens tokens (durée de vie du refresh token), retirez l'ancienne clé et redémarrez.
Clé de chiffrement applicative (APP_ENCRYPTION_KEY)¶
Chiffre les secrets clients et les secrets TOTP. Sa rotation impose de re-chiffrer les données existantes :
- Conservez l'ancienne clé, générez la nouvelle (
openssl rand -base64 32). - Exécutez un script de migration qui, pour chaque
OidcClient.clientSecretEncet chaqueUser.mfaSecretEnc, déchiffre avec l'ancienne clé et re-chiffre avec la nouvelle. - Basculez
APP_ENCRYPTION_KEYsur la nouvelle valeur et redémarrez.
Danger
Ne changez jamais APP_ENCRYPTION_KEY sans re-chiffrer au préalable : les secrets
deviendraient illisibles (clients OIDC cassés, MFA inutilisable).
Clés de signature des cookies (OIDC_COOKIE_KEYS)¶
Liste de clés séparées par des virgules. La première signe, les suivantes vérifient (permet une rotation sans invalider les sessions en cours).
- Ajoutez la nouvelle clé en tête :
nouvelle,ancienne. - Redémarrez le backend.
- Après la durée de vie des sessions, retirez l'ancienne clé.
Clés API Mailjet¶
En cas de compromission, régénérez la paire dans le tableau de bord Mailjet, mettez à jour
MAILJET_API_KEY / MAILJET_API_SECRET, puis redémarrez le backend.
Mots de passe utilisateurs¶
Un administrateur peut forcer une réinitialisation depuis le back-office (Utilisateurs → Reset mot de passe) : un lien à usage unique est envoyé et les sessions portail existantes de l'utilisateur sont révoquées.