Skip to main content

Authentification & Mind Keys

Comment fonctionne l'authentification Synapse : Mind Keys pour les agents, JWT pour les humains, ?key= désactivé par défaut (Bearer uniquement, AUTH_QUERY_KEY_MODE=deny).


Authentification & Mind Keys

Synapse utilise deux méthodes d'authentification, chacune optimisée pour un cas d'usage différent. Comprendre la différence est essentiel pour construire des intégrations fiables.

Deux méthodes d'auth

Méthode Cas d'usage Limite de débit Expiration
Mind Key Agents LLM, outils automatisés 120/min (Bearer externe) ; ?key= désactivé par défaut (deny) Jamais
JWT Interface humaine, opérations de compte 120/min (IPs externes) 7 jours

Mind Key (pour les agents)

Une Mind Key est un jeton d'API limité au tenant. Elle authentifie les données d'un seul mind (mémoires, tâches, chat, scripts, etc.). Utilisez-la pour :

  • Les agents LLM appelant l'API
  • Les scripts d'automatisation en arrière-plan
  • La configuration du serveur MCP
  • Toute intégration longue durée

Authentification par en-tête (recommandée)

curl -H "Authorization: Bearer mk_yourMindKeyHere" \
     https://synapse.schaefer.zone/memory/recall

Paramètre de requête (désactivé par défaut)

curl https://synapse.schaefer.zone/memory/recall?key=mk_yourMindKeyHere
Le paramètre de requête `?key=` est **désactivé** par la valeur par défaut durcie `AUTH_QUERY_KEY_MODE=deny` : le serveur répond à `?key=` avec 401 et l'indication "Query-param auth (?key=) is disabled". Bearer uniquement est la valeur par défaut sûre (SSOT : `src/lib/auth.ts`). Ce n'est que si un opérateur définit explicitement `AUTH_QUERY_KEY_MODE=allow` que `?key=` fonctionne comme soupape de transition avec 60 req/min (par IP). Les clients Bearer externes obtiennent 120 req/min par identité ; les réseaux internes fiables ne sont pas limités.

Créer une Mind Key

curl -X POST https://synapse.schaefer.zone/minds \
  -H "Authorization: Bearer YOUR_JWT" \
  -H "Content-Type: application/json" \
  -d '{"name": "Work Mind", "description": "Project memories"}'

La réponse inclut mind_key — sauvegardez-la immédiatement, elle n'est affichée qu'une seule fois.

Lister vos minds

curl -H "Authorization: Bearer YOUR_JWT" \
     https://synapse.schaefer.zone/minds

Supprimer un mind (irréversible !)

curl -X DELETE -H "Authorization: Bearer YOUR_JWT" \
     https://synapse.schaefer.zone/minds/m_xyz789

JWT (pour les humains)

Les JWT authentifient le compte utilisateur, pas un mind spécifique. Utilisez-les pour :

  • L'inscription et la connexion au compte
  • La création / liste / suppression de minds
  • Le partage de minds avec d'autres utilisateurs
  • La gestion des abonnements Web Push

Inscription

curl -X POST https://synapse.schaefer.zone/register \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com", "password": "secret"}'

Renvoie : { "jwt": "eyJ...", "user": {...} }

Connexion

curl -X POST https://synapse.schaefer.zone/login \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com", "password": "secret"}'

Renvoie : { "jwt": "eyJ...", "user": {...} }

Expiration du JWT

Les JWT expirent après 7 jours. Une fois expirés, appelez simplement /login à nouveau pour en obtenir un nouveau. La Mind Key n'expire jamais, donc les intégrations d'agents existantes continuent de fonctionner.

Bonnes pratiques de sécurité

Schéma de variable d'environnement

# .env (NE JAMAIS commiter ce fichier)
SYNAPSE_MIND_KEY=mk_yourMindKeyHere
SYNAPSE_URL=https://synapse.schaefer.zone
// Node.js
const mindKey = process.env.SYNAPSE_MIND_KEY;
const url = process.env.SYNAPSE_URL;
await fetch(`${url}/memory/recall`, {
  headers: { Authorization: `Bearer ${mindKey}` },
});

Configuration du serveur MCP

{
  "mcpServers": {
    "synapse": {
      "command": "npx",
      "args": ["-y", "synapse-mcp-api@latest"],
      "env": {
        "SYNAPSE_MIND_KEY": "mk_yourMindKeyHere",
        "SYNAPSE_URL": "https://synapse.schaefer.zone"
      }
    }
  }
}

Schéma multi-mind

Chaque utilisateur peut avoir plusieurs minds. Schémas courants :

Nom du mind Rôle
work Mémoires liées au travail
personal Préférences personnelles, famille
project-synapse Contexte de projet spécifique
learning-german Progression d'apprentissage
assistant-default Fallback à usage général

Utilisez différentes Mind Keys pour différentes sessions LLM afin de garder les contextes isolés.

Limites de débit

Méthode d'auth Limite Portée
Mind Key (en-tête) 120/min depuis les IPs externes (par identité) ; illimité pour les réseaux internes de confiance Par mind
Mind Key (?key=, allow uniquement) 60/min Par IP
JWT (en-tête) 120 req/min (IPs externes ; illimité pour les réseaux internes de confiance) Par utilisateur
Endpoints publics Aucune Globale

Les en-têtes de limite de débit (X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After) sont inclus dans les réponses le cas échéant.

Prochaines étapes