NeahNew/N8N_API_KEY_SOLUTION.md
2026-01-09 11:19:32 +01:00

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 :

  1. Allez dans les paramètres de votre workflow
  2. Trouvez la clé API que N8N utilise
  3. 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_KEY envoyé 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 :

  1. Copier la clé générée par N8N
  2. L'ajouter dans .env.local (ou variables d'environnement production) :
    N8N_API_KEY=votre-cle-generee-par-n8n
    
  3. Redémarrer le serveur
  4. 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

  1. Ouvrez le workflow N8N
  2. Regardez le node "Save Mission To API"
  3. Vérifiez la valeur de x-api-key header
  4. Ou regardez dans config.N8N_API_KEY dans "Process Mission Data"

Option 2: Dans N8N Execution Logs

  1. Allez dans N8N → Executions
  2. Trouvez une exécution récente
  3. Regardez le node "Save Mission To API"
  4. Vérifiez les headers de la requête
  5. Trouvez la valeur de x-api-key

Option 3: Générer une Nouvelle Clé

Si vous ne trouvez pas la clé, vous pouvez :

  1. Générer une nouvelle clé (ex: openssl rand -hex 16)
  2. L'ajouter dans l'environnement du serveur
  3. L'utiliser dans N8N workflow (hardcoder temporairement)

📋 Checklist

  • Trouver la clé API générée par N8N
  • Ajouter cette clé dans N8N_API_KEY environnement 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 :

  1. Environnement serveur : N8N_API_KEY=cle-commune
  2. 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