Authentification unique (SSO) et MFA pour 9 applications
Une identité, un second facteur et une révocation centralisée pour 9 applications
Chiffres clés
- applications unifiées
- 9
- livrables de roadmap vérifiés
- 28
- retour arrière
- 0
Contexte
Les applications reposaient sur des comptes partagés, sans second facteur pour protéger les accès. Et sans révocation centralisée, retirer un accès ne pouvait pas se faire en un seul point.
Mon rôle
De la conception à l'exploitation, en autonomie complète.
Solution
Le fournisseur d'identité Zitadel est auto-hébergé : base dédiée, reverse proxy gRPC, tunnel dédié, supervision et sauvegarde. Les applications suivent le flux OIDC Authorization Code + PKCE.
Les jetons restent côté serveur ; les fronts ne manipulent qu'une session opaque HttpOnly, protégée contre le CSRF. Un client de session partagé et un paquet BFF réutilisable évitent de réécrire l'intégration dans chaque application. La MFA laisse le choix entre passkeys, TOTP ou OTP par e-mail.
Fonctionnalités clés
Une seule identité pour 9 applications
Une connexion unique remplace les comptes partagés, avec une révocation centralisée.
MFA au choix
Passkeys, TOTP ou OTP par e-mail, selon les préférences de chaque utilisateur.
Aucun jeton dans le navigateur
Les fronts n'ont qu'une session opaque HttpOnly, protégée contre le CSRF.
Fournisseur d'identité auto-hébergé
Zitadel avec base dédiée, reverse proxy gRPC, tunnel dédié, supervision et sauvegarde.
Défis d'ingénierie
- 1
Migration sans perte d'accès
Import des hash de mots de passe existants et projection des rôles dans les jetons.
- 2
Bascule unique et réversible
L'API et 7 fronts ont basculé en une fois, l'API rejoignant un sous-domaine commun.
- 3
Défauts corrigés dans la fenêtre
5 défauts bloquants ont été corrigés pendant la bascule, sans retour arrière.
- 4
Identité configurée par la CI
La configuration de l'IdP passe uniquement par la CI, vérifiée par des tests de contrat.
Stack technique
- Sécurité
- ZitadelOIDC/PKCEBFF
- Infra
- TraefikNginxCloudflare TunnelPrometheusAlertmanager
- Data
- PostgreSQL
- Backend
- TypeScript
Un projet de cette envergure ?
Parlons de votre contexte : je vous dis franchement ce qui est faisable, et en combien de temps.