Fix: Correction de la boucle de redirection OAuth infinie

- Stockage des tokens dans des cookies HttpOnly côté serveur
- Suppression du stockage localStorage côté client
- Modification du middleware pour vérifier les cookies HttpOnly
- Redirection propre après authentification
- Suppression du nettoyage précoce des paramètres URL

Cela corrige le problème où le dashboard se rafraîchissait en boucle
après l'authentification Keycloak.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
dahoud
2025-10-19 12:37:00 +00:00
parent a8825a058b
commit 418fac529a
3 changed files with 51 additions and 62 deletions

View File

@@ -120,13 +120,44 @@ export async function POST(request: NextRequest) {
hasIdToken: !!tokens.id_token
});
// Supprimer le cookie du code verifier
// Créer la réponse avec les tokens
const response = NextResponse.json({
...tokens,
returnUrl: '/dashboard' // URL par défaut, sera remplacée côté client si returnUrl existe
success: true,
returnUrl: '/dashboard'
});
// Stocker les tokens dans des cookies HttpOnly sécurisés
const isProduction = process.env.NODE_ENV === 'production';
response.cookies.set('keycloak-token', tokens.access_token, {
httpOnly: true,
secure: isProduction,
sameSite: 'lax',
maxAge: tokens.expires_in || 3600, // 1 heure par défaut
path: '/'
});
response.cookies.set('keycloak-refresh-token', tokens.refresh_token, {
httpOnly: true,
secure: isProduction,
sameSite: 'lax',
maxAge: tokens.refresh_expires_in || 86400, // 24 heures par défaut
path: '/'
});
response.cookies.set('keycloak-id-token', tokens.id_token, {
httpOnly: true,
secure: isProduction,
sameSite: 'lax',
maxAge: tokens.expires_in || 3600,
path: '/'
});
// Supprimer le cookie du code verifier
response.cookies.delete('pkce_code_verifier');
console.log('🍪 Tokens stockés dans des cookies HttpOnly sécurisés');
return response;
} catch (error) {