Skip to main content

Autoryzacja i Mind Key

Jak działa autoryzacja w Synapse: Mind Key dla agentów, JWT dla ludzi, ?key= domyślnie wyłączone (tylko Bearer, AUTH_QUERY_KEY_MODE=deny).


Autoryzacja i Mind Key

Synapse używa dwóch metod autoryzacji, każda zoptymalizowana pod inny przypadek. Zrozumienie różnicy jest kluczowe dla budowy niezawodnych integracji.

Dwie metody autoryzacji

Metoda Przypadek użycia Limit żądań Wygasanie
Mind Key Agenty LLM, narzędzia zautomatyzowane 120/min (zewnętrzny Bearer); ?key= domyślnie wyłączone (deny) Nigdy
JWT Interfejs dla człowieka, operacje na koncie 120/min (zewnętrzne IP) 7 dni

Mind Key (dla agentów)

Mind Key to token API o zakresie dzierżawcy. Uwierzytelnia dane pojedynczego umysłu (wspomnienia, zadania, czat, skrypty itp.). Stosować do:

  • Agentów LLM wywołujących API
  • Skryptów automatyzacji w tle
  • Konfiguracji serwera MCP
  • Dowolnej długotrwałej integracji

Autoryzacja nagłówkiem (zalecane)

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

Parametr zapytania (domyślnie wyłączone)

curl https://synapse.schaefer.zone/memory/recall?key=mk_yourMindKeyHere
Parametr zapytania `?key=` jest **wyłączony** przez utwardzony domyślny `AUTH_QUERY_KEY_MODE=deny`: serwer odpowiada na `?key=` błędem 401 i wskazówką "Query-param auth (?key=) is disabled". Tylko Bearer to bezpieczny domyślny (SSOT: `src/lib/auth.ts`). Tylko jeśli operator jawnie ustawi `AUTH_QUERY_KEY_MODE=allow`, `?key=` działa jako zawór przejściowy z 60 req/min (na IP). Zewnętrzne klienty Bearer otrzymują 120 req/min na tożsamość; zaufane sieci wewnętrzne są bez limitu.

Tworzenie 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"}'

Odpowiedź zawiera mind_key — należy go natychmiast zapisać, jest wyświetlany tylko raz.

Wylistowanie umysłów

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

Usuwanie umysłu (nieodwracalne!)

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

JWT (dla ludzi)

JWT uwierzytelnia konto użytkownika, a nie konkretny umysł. Stosować do:

  • Rejestracji konta i logowania
  • Tworzenia / listowania / usuwania umysłów
  • Współdzielenia umysłów z innymi użytkownikami
  • Zarządzania subskrypcjami Web Push

Rejestracja

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

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

Logowanie

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

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

Wygasanie JWT

JWT wygasają po 7 dniach. Po wygaśnięciu należy po prostu ponownie wywołać /login, aby uzyskać nowy. Mind Key nigdy nie wygasa, więc istniejące integracje agentów nadal działają.

Najlepsze praktyki bezpieczeństwa

Wzorzec zmiennych środowiskowych

# .env (NIGDY nie commitować tego pliku)
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}` },
});

Konfiguracja serwera MCP

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

Wzorzec wielu umysłów

Każdy użytkownik może mieć wiele umysłów. Typowe wzorce:

Nazwa umysłu Przeznaczenie
work Wspomnienia związane z pracą
personal Preferencje osobiste, rodzina
project-synapse Kontekst konkretnego projektu
learning-german Postęp w nauce
assistant-default Ogólnego przeznaczenia, zapasowy

Należy używać różnych Mind Key dla różnych sesji LLM, aby utrzymać konteksty oddzielone.

Limity żądań

Metoda autoryzacji Limit Zakres
Mind Key (nagłówek) 120/min z zewnętrznych IP (na tożsamość); bez limitu dla zaufanych sieci wewnętrznych Na umysł
Mind Key (?key=, tylko przy allow) 60/min Na IP
JWT (nagłówek) 120 ż./min (zewnętrzne IP; bez limitu dla zaufanych sieci wewnętrznych) Na użytkownika
Endpointy publiczne Brak Globalny

Nagłówki limitu żądań (X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After) są dołączane do odpowiedzi, gdy ma to zastosowanie.

Następne kroki