Aller au contenu principal

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

  1. Générez un nouveau secret dans le tableau de bord
  2. Mettez à jour votre application
  3. Déployez les changements
  4. 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 :

FlagValeurObjectif
HttpOnlytrueEmpêcher l'accès JS
SecuretrueHTTPS uniquement
SameSiteLaxProtection 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 :

  1. Allez dans Journaux
  2. Filtrez par type d'événement
  3. Recherchez les anomalies

Réponse aux Incidents

Si les Identifiants Sont Compromis

  1. Faites une rotation du client secret immédiatement
  2. Révoquez tous les tokens actifs
  3. Examinez les journaux d'activité récents
  4. Notifiez les utilisateurs affectés si nécessaire

Si les Tokens Sont Divulgués

  1. Révoquez les tokens spécifiques via l'API
  2. Forcez une ré-authentification
  3. Examinez comment la fuite s'est produite
  4. 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é