Bonnes pratiques de sécurité
Checklist et recommandations pour une intégration OIDC Trousseau sécurisée.
Checklist d'intégration
Utilisez cette checklist pour vérifier que votre intégration respecte les bonnes pratiques de sécurité :
Flux d'authentification
- Utilisez le flux Authorization Code avec PKCE: N'utilisez jamais le flux Implicit. Le PKCE (
S256) est obligatoire. - Validez le paramètre
state: Générez une valeur aléatoire, stockez-la en session, et vérifiez-la au callback pour prévenir les attaques CSRF. - Échangez le code côté serveur: L'échange de tokens (code → tokens) doit se faire sur votre backend, jamais dans le navigateur.
- Stockez le client secret côté serveur: Ne l'exposez jamais dans le code frontend, les applications mobiles ou le contrôle de version.
Gestion des tokens
- Validez les signatures des ID tokens: Utilisez l'endpoint JWKS pour vérifier que le token a été signé par Trousseau. La plupart des bibliothèques OIDC le font automatiquement.
- Vérifiez les claims
issetaud: Vérifiez que l'émetteur correspond à votre URL d'émetteur Trousseau et que l'audience correspond à votre client ID. - Vérifiez l'expiration du token (
exp): Rejetez les tokens expirés. - Utilisez des access tokens à courte durée de vie: Les access tokens expirent en 5 minutes. Utilisez les refresh tokens pour en obtenir de nouveaux.
- Stockez les refresh tokens de manière sécurisée: Chiffrez au repos. N'envoyez jamais au frontend. Faites tourner à chaque utilisation.
Gestion des sessions
- Créez vos propres sessions applicatives: Ne reposez pas uniquement sur les tokens OIDC pour l'état de session. Créez une session côté serveur après validation de l'ID token.
- Implémentez la déconnexion correctement: Effacez votre session applicative ET redirigez vers l'endpoint end-session de Trousseau pour clore la session SSO.
- Gérez le Backchannel Logout (recommandé): Implémentez l'endpoint de backchannel logout pour gérer les déconnexions initiées par Trousseau.
Réseau et infrastructure
- HTTPS uniquement: Toutes les URI de redirection doivent utiliser HTTPS. Trousseau rejette les URI de redirection HTTP en production.
- Enregistrez des URI de redirection exactes: N'utilisez pas de wildcards. Chaque URI de redirection doit être exacte.
- Ancrez votre URL d'émetteur: Ne récupérez pas l'émetteur dynamiquement depuis une entrée non fiable.
Erreurs courantes à éviter
Stocker les tokens dans localStorage
Problème : localStorage est accessible à tout JavaScript sur la page. Une vulnérabilité XSS exposerait tous les tokens.
Solution : Stockez les tokens dans des cookies HTTP-only ou des sessions côté serveur.
Ignorer la validation des tokens
Problème : Accepter un ID token sans vérifier sa signature signifie que n'importe qui peut forger un token.
Solution : Validez toujours via l'endpoint JWKS. Utilisez une bibliothèque OIDC de confiance qui gère cela.
Ne pas implémenter la déconnexion
Problème : Effacer uniquement la session de votre application laisse la session Trousseau active. L'utilisateur peut se réauthentifier silencieusement sans saisir ses identifiants.
Solution : Redirigez toujours vers l'endpoint end-session lors de la déconnexion. Consultez le guide SSO Logout.
Coder les URLs d'endpoints en dur
Problème : Les URLs d'endpoints peuvent changer. Les coder en dur fragilise votre intégration.
Solution : Utilisez l'endpoint de découverte OpenID (.well-known/openid-configuration) pour résoudre toutes les URLs dynamiquement au démarrage.
Mesures de sécurité Trousseau
Ces mesures sont appliquées côté Trousseau et s'appliquent à tous les utilisateurs de l'écosystème :
Politiques de mots de passe
| Règle | Application |
|---|---|
| Longueur minimale | 10 caractères |
| Majuscule requise | Au moins 1 |
| Minuscule requise | Au moins 1 |
| Chiffre requis | Au moins 1 |
| Symbole requis | Au moins 1 |
| Vérification de robustesse | Score zxcvbn 3+ (bon ou excellent) |
| Vérification des fuites | Contrôle via Have I Been Pwned (HIBP) |
| Protection contre le brute-force | Scoring de réputation (IP + nom d'utilisateur) |
Consultez les Politiques de mots de passe pour les détails complets.
Authentification multi-facteur
La MFA est optionnelle mais disponible pour tous les utilisateurs. Méthodes prises en charge :
| Méthode | Description |
|---|---|
| TOTP | Google Authenticator, Authy, etc. |
| WebAuthn | Passkeys, clés de sécurité (YubiKey), Touch ID, Windows Hello |
| Codes de récupération | Codes de secours à usage unique |
Les utilisateurs activent la MFA depuis les paramètres de leur compte Trousseau. Si configurée, la MFA est demandée à chaque connexion: votre application n'a rien à implémenter.
Infrastructure
| Aspect | Détail |
|---|---|
| Hébergement | France (Scaleway), résidence des données en UE |
| Chiffrement | TLS 1.3 en transit, chiffrement au repos |
| Sauvegardes | Sauvegardes automatiques quotidiennes avec rétention 30 jours |
| Supervision | Health checks, monitoring de disponibilité |
Sécurité de l'API de provisionnement
Si vous avez accès à l'API de provisionnement :
- Stockez le token API de manière sécurisée: Traitez-le comme un mot de passe. Ne committez jamais dans le contrôle de version.
- Utilisez HTTPS uniquement: Tous les appels API doivent utiliser HTTPS.
- Délimitez vos requêtes: Filtrez toujours par votre groupe pour éviter d'accéder aux utilisateurs hors de votre périmètre.
- Ne supprimez pas les utilisateurs: Utilisez la désactivation (
is_active: false) plutôt que la suppression. - Faites tourner les tokens régulièrement: Demandez un nouveau token API à l'équipe KeySuite si vous suspectez une compromission.
Signalement de problèmes de sécurité
Si vous découvrez une vulnérabilité de sécurité dans Trousseau ou l'intégration OIDC :
- Ne la divulguez pas publiquement
- Contactez l'équipe sécurité KeySuite à
security@keysuite.app - Incluez les étapes de reproduction si possible
- Nous visons un accusé de réception sous 24 heures et la résolution des problèmes critiques sous 72 heures