Bonnes Pratiques de Sécurité
Recommandations pour sécuriser votre intégration SyAuth.
Authentification
Utilisez HTTPS Partout
Utilisez toujours HTTPS en production :
# Production
NEXT_PUBLIC_SYAUTH_API_URL=https://api.syauth.com
NEXT_PUBLIC_SYAUTH_REDIRECT_URI=https://votreapp.com/auth/callback
Validez les URIs de Redirection
N'autorisez que des correspondances exactes d'URI de redirection :
- ✅
https://votreapp.com/auth/callback - ❌
https://votreapp.com/*
Utilisez PKCE
Utilisez toujours PKCE pour le flux de code d'autorisation :
// Le SDK gère cela automatiquement
loginWithRedirect(); // PKCE activé par défaut
Sécurité des Tokens
N'Exposez Jamais les Tokens au Frontend
// ❌ Mauvais - Token dans localStorage
localStorage.setItem('token', accessToken);
// ✅ Correct - Le SDK gère le stockage sécurisé
const { getAccessToken } = useSyAuth();
Validez les Tokens Côté Serveur
// Valider à chaque requête API
const userInfo = await fetch('https://api.syauth.com/e/v1/oauth/userinfo/', {
headers: { 'Authorization': `Bearer ${accessToken}` }
});
if (!userInfo.ok) {
// Token invalide - rejeter la requête
}
Utilisez des Durées de Vie Courtes pour les Tokens
- Tokens d'accès : 1 heure (par défaut)
- Tokens de rafraîchissement : 30 jours
- Laissez le SDK gérer le rafraîchissement automatique
Gestion des Identifiants
Variables d'Environnement
# Ne jamais commiter les secrets
echo "SYAUTH_CLIENT_SECRET=..." >> .env.local
echo ".env.local" >> .gitignore
Rotation Régulière des Secrets
- Générez un nouveau secret dans le tableau de bord
- Mettez à jour votre application
- Déployez les changements
- L'ancien secret est immédiatement invalide
Environnements Séparés
Développement: client_id_dev, secret_dev
Staging: client_id_stg, secret_stg
Production: client_id_prd, secret_prd
Sécurité API
Utilisez les Clés API Côté Serveur Uniquement
// ✅ Côté serveur (route API)
const response = await fetch('https://api.syauth.com/e/v1/developer/users', {
headers: { 'X-API-Key': process.env.SYAUTH_API_KEY }
});
// ❌ Jamais dans le code côté client
Limitez le Débit de Vos Propres APIs
// Implémentez une limitation de débit sur vos endpoints
import rateLimit from 'express-rate-limit';
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 100 // limiter chaque IP à 100 requêtes par fenêtre
});
Sécurité des Sessions
Paramètres de Cookies Sécurisés
Le SDK utilise des paramètres de cookies sécurisés par défaut :
| Flag | Valeur | Objectif |
|---|---|---|
HttpOnly | true | Empêcher l'accès JS |
Secure | true | HTTPS uniquement |
SameSite | Lax | Protection CSRF |
Implémentez un Timeout d'Inactivité
// Déconnexion après 30 minutes d'inactivité
const IDLE_TIMEOUT = 30 * 60 * 1000;
useEffect(() => {
let timeout = setTimeout(() => logout(), IDLE_TIMEOUT);
const resetTimer = () => {
clearTimeout(timeout);
timeout = setTimeout(() => logout(), IDLE_TIMEOUT);
};
window.addEventListener('mousemove', resetTimer);
return () => clearTimeout(timeout);
}, []);
Journalisation & Surveillance
Surveillez les Événements d'Authentification
Surveillez :
- Les tentatives de connexion multiples échouées
- Les connexions depuis des emplacements inhabituels
- La création rapide de tokens
- Les patterns API inhabituels
Journaux d'Audit
Révisez les journaux régulièrement dans le tableau de bord :
- Allez dans Journaux
- Filtrez par type d'événement
- Recherchez les anomalies
Réponse aux Incidents
Si les Identifiants Sont Compromis
- Faites une rotation du client secret immédiatement
- Révoquez tous les tokens actifs
- Examinez les journaux d'activité récents
- Notifiez les utilisateurs affectés si nécessaire
Si les Tokens Sont Divulgués
- Révoquez les tokens spécifiques via l'API
- Forcez une ré-authentification
- Examinez comment la fuite s'est produite
- Implémentez des protections supplémentaires
Liste de Vérification
- HTTPS activé partout
- PKCE activé
- Secrets dans les variables d'environnement
- Secrets pas dans le contrôle de version
- Clés API côté serveur uniquement
- Validation des tokens à chaque requête
- Journaux surveillés régulièrement
- Plan de réponse aux incidents documenté