4.5 KiB
Solution: N8N API Key Mismatch
🔍 Problème
Avant : Vous pouviez créer des missions sans N8N_API_KEY
- Mission créée ✅
- N8N callback échouait silencieusement ❌
- Mission restait en base sans IDs ❌
Maintenant : Avec N8N_API_KEY ajouté
- Mission créée ✅
- N8N callback appelé ✅
- Mais clé API ne correspond pas → 401 → Mission création échoue ❌
✅ Solution 1: Utiliser la Même Clé (RECOMMANDÉ)
Étape 1: Trouver la Clé Générée par N8N
Dans N8N :
- Allez dans les paramètres de votre workflow
- Trouvez la clé API que N8N utilise
- Ou regardez dans les logs d'exécution N8N pour voir quelle clé est envoyée
Étape 2: Utiliser Cette Clé sur le Serveur
Ajoutez la même clé dans votre environnement :
N8N_API_KEY=la-cle-generee-par-n8n
Important : Utilisez exactement la même clé que celle générée par N8N.
Étape 3: Redémarrer le Serveur
# Redémarrer l'application
npm run dev
# ou
yarn dev
✅ Solution 2: Rendre la Vérification Plus Flexible (TEMPORAIRE)
Si vous voulez permettre la création de mission même si les clés ne correspondent pas :
Modifier app/api/missions/mission-created/route.ts :
// Vérifier l'API key
const apiKey = request.headers.get('x-api-key');
const expectedApiKey = process.env.N8N_API_KEY;
// Si pas de clé configurée, accepter (mais logger un warning)
if (!expectedApiKey) {
logger.warn('N8N_API_KEY not configured, accepting request without validation');
// Continue without validation
} else if (apiKey && apiKey !== expectedApiKey) {
logger.error('Invalid API key', {
received: apiKey ? 'present' : 'missing',
expected: expectedApiKey ? 'configured' : 'missing'
});
return NextResponse.json(
{ error: 'Unauthorized' },
{ status: 401 }
);
} else if (!apiKey && expectedApiKey) {
logger.warn('API key expected but not provided, accepting anyway');
// Continue without validation (less secure but works)
}
⚠️ Note : Cette solution est moins sécurisée mais permet de continuer à fonctionner.
✅ Solution 3: Utiliser la Clé du Serveur dans N8N
Au lieu d'utiliser la clé générée par N8N, utilisez celle du serveur :
Dans N8N "Save Mission To API" Node
Header x-api-key :
{{ $node['Process Mission Data'].json.config.N8N_API_KEY }}
Cette valeur vient de :
config.N8N_API_KEYenvoyé par le serveur (ligne 420)- Qui vient de
process.env.N8N_API_KEY
Donc : Si vous mettez la même clé dans process.env.N8N_API_KEY, N8N l'utilisera automatiquement.
🎯 Solution Recommandée
Utiliser la clé générée par N8N dans l'environnement du serveur :
- Copier la clé générée par N8N
- L'ajouter dans
.env.local(ou variables d'environnement production) :N8N_API_KEY=votre-cle-generee-par-n8n - Redémarrer le serveur
- Tester la création de mission
Avantage :
- ✅ Sécurisé (vérification de clé)
- ✅ Fonctionne correctement
- ✅ IDs sauvegardés
🔍 Comment Trouver la Clé N8N
Option 1: Dans N8N Workflow
- Ouvrez le workflow N8N
- Regardez le node "Save Mission To API"
- Vérifiez la valeur de
x-api-keyheader - Ou regardez dans
config.N8N_API_KEYdans "Process Mission Data"
Option 2: Dans N8N Execution Logs
- Allez dans N8N → Executions
- Trouvez une exécution récente
- Regardez le node "Save Mission To API"
- Vérifiez les headers de la requête
- Trouvez la valeur de
x-api-key
Option 3: Générer une Nouvelle Clé
Si vous ne trouvez pas la clé, vous pouvez :
- Générer une nouvelle clé (ex:
openssl rand -hex 16) - L'ajouter dans l'environnement du serveur
- L'utiliser dans N8N workflow (hardcoder temporairement)
📋 Checklist
- Trouver la clé API générée par N8N
- Ajouter cette clé dans
N8N_API_KEYenvironnement serveur - Vérifier que N8N utilise
{{ $node['Process Mission Data'].json.config.N8N_API_KEY }} - Redémarrer le serveur
- Tester création de mission
- Vérifier que les IDs sont sauvegardés
🎯 Résumé
Problème : Clé API N8N ≠ Clé API serveur → 401 Unauthorized
Solution : Utiliser la même clé dans les deux endroits :
- Environnement serveur :
N8N_API_KEY=cle-commune - N8N workflow : Utilise automatiquement via
config.N8N_API_KEY
Après fix : Mission création fonctionne et IDs sont sauvegardés ✅
Document Created: $(date) Priority: HIGH - Blocks mission creation