4.2 KiB
Executable File
4.2 KiB
Executable File
Flux d'Authentification BTP Xpress
🎯 Architecture Optimisée
L'authentification BTP Xpress utilise une redirection directe vers Keycloak sans pages intermédiaires inutiles.
🔄 Flux d'Authentification
1. Connexion
Page d'accueil → Bouton "Commencer" → /api/auth/login → Keycloak → Dashboard
Détails :
- Bouton "Commencer" : Redirige vers
/api/auth/login - API Route :
/app/api/auth/login/route.tsconstruit l'URL Keycloak et redirige - Keycloak : Gère l'authentification utilisateur
- Retour : Redirection vers
/dashboardaprès succès
2. Déconnexion
Menu utilisateur → "Se déconnecter" → /api/auth/logout → Keycloak → Page d'accueil
Détails :
- Bouton déconnexion : Redirige vers
/api/auth/logout - API Route :
/app/api/auth/logout/route.tsconstruit l'URL de déconnexion Keycloak - Cookies : Suppression automatique des tokens
- Retour : Redirection vers
/après déconnexion
3. Protection des Routes
Route protégée → Middleware → Vérification token → Si invalide → /api/auth/login
Détails :
- Middleware :
/middleware.tsvérifie les tokens sur toutes les routes protégées - Redirection automatique : Vers
/api/auth/loginavec paramètreredirect - Retour intelligent : Redirection vers la page initialement demandée
📁 Structure des Fichiers
API Routes
/app/api/auth/login/route.ts- Redirection vers Keycloak pour connexion/app/api/auth/logout/route.ts- Redirection vers Keycloak pour déconnexion
Pages de Fallback
/app/not-found.tsx- Page 404
Configuration
/middleware.ts- Protection des routes et redirections/contexts/AuthContext.tsx- Gestion de l'état d'authentification/config/keycloak.ts- Configuration Keycloak
⚙️ Configuration Keycloak
Variables d'Environnement
NEXT_PUBLIC_KEYCLOAK_URL=https://security.lions.dev
NEXT_PUBLIC_KEYCLOAK_REALM=btpxpress
NEXT_PUBLIC_KEYCLOAK_CLIENT_ID=btpxpress-frontend
URLs de Redirection Keycloak
- Connexion :
${KEYCLOAK_URL}/realms/${REALM}/protocol/openid_connect/auth - Déconnexion :
${KEYCLOAK_URL}/realms/${REALM}/protocol/openid_connect/logout - Inscription :
${KEYCLOAK_URL}/realms/${REALM}/protocol/openid_connect/registrations
🚀 Avantages de cette Architecture
✅ Simplicité
- Pas de pages intermédiaires inutiles
- Redirection directe vers Keycloak
- Flux utilisateur optimisé
✅ Performance
- Moins de redirections = chargement plus rapide
- Pas de JavaScript côté client pour l'authentification
- Server-side redirects plus efficaces
✅ Sécurité
- Tokens gérés côté serveur uniquement
- Pas d'exposition des tokens côté client
- Suppression automatique des cookies sensibles
✅ Maintenance
- Configuration centralisée dans les API routes
- Moins de code à maintenir
- Logique d'authentification simplifiée
🔧 Utilisation
Pour les Développeurs
// Dans un composant, pour déclencher la connexion
const handleLogin = () => {
window.location.href = '/api/auth/login';
};
// Pour la déconnexion
const handleLogout = () => {
window.location.href = '/api/auth/logout';
};
Pour les Utilisateurs
- Cliquer sur "Commencer" sur la page d'accueil
- Être redirigé automatiquement vers Keycloak
- Se connecter avec ses identifiants
- Être redirigé vers le dashboard BTP Xpress
🛠️ Dépannage
Si la redirection ne fonctionne pas
- Vérifier les variables d'environnement Keycloak
- Vérifier que Keycloak est accessible
- Consulter les logs de l'API route
- Utiliser la page de fallback
/auth/login
En cas d'erreur d'authentification
- Les pages de fallback (
/auth/login,/auth/forbidden) restent disponibles - Les erreurs sont loggées dans la console
- Redirection automatique vers les pages d'erreur appropriées
Cette architecture garantit une expérience utilisateur fluide et une maintenance simplifiée du système d'authentification.