Authentication & Mind Keys
Synapse の認証の仕組み:エージェント向け Mind Key、人間向け JWT、?key= はデフォルトで無効(Bearer のみ、AUTH_QUERY_KEY_MODE=deny)。
Authentication & Mind Keys
Synapse は 2 つの認証方法を使用し、それぞれが異なるユースケースに最適化されています。信頼できる連携を構築するには、この違いを理解することが不可欠です。
2 つの認証方法
| 方法 | ユースケース | レート制限 | 有効期限 |
|---|---|---|---|
| Mind Key | LLM エージェント、自動化ツール | 120/分(外部 Bearer);?key= はデフォルトで無効(deny) | なし |
| JWT | ヒューマン向け UI、アカウント操作 | 120/分(外部IP) | 7 日 |
Mind Key(エージェント向け)
Mind Key はテナントスコープの API トークンです。単一 mind のデータ(メモリ、タスク、チャット、スクリプトなど)を認証します。以下に使用します。
- API を呼び出す LLM エージェント
- バックグラウンド自動化スクリプト
- MCP サーバー設定
- 任意の長期間の連携
ヘッダー認証(推奨)
curl -H "Authorization: Bearer mk_yourMindKeyHere" \
https://synapse.schaefer.zone/memory/recallクエリパラメータ(デフォルトで無効)
curl https://synapse.schaefer.zone/memory/recall?key=mk_yourMindKeyHere`?key=` クエリパラメータは、強化されたデフォルト `AUTH_QUERY_KEY_MODE=deny` により**無効**です:サーバーは
`?key=` に対して 401 とヒント "Query-param auth (?key=) is disabled" を返します。Bearer のみが安全なデフォルトです(SSOT:`src/lib/auth.ts`)。
オペレーターが明示的に `AUTH_QUERY_KEY_MODE=allow` を設定した場合のみ、`?key=` は 60 req/min(IP ごと)の
移行用バルブとして機能します。外部 Bearer クライアントは ID ごとに 120 req/min を取得し、信頼できる内部
ネットワークは無制限です。
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"}'レスポンスに mind_key が含まれます — すぐに保存してください。一度しか表示されません。
mind の一覧
curl -H "Authorization: Bearer YOUR_JWT" \
https://synapse.schaefer.zone/mindsmind の削除(不可逆!)
curl -X DELETE -H "Authorization: Bearer YOUR_JWT" \
https://synapse.schaefer.zone/minds/m_xyz789JWT(人間向け)
JWT は特定の mind ではなくユーザーアカウントを認証します。以下に使用します。
- アカウントの登録とログイン
- mind の作成/一覧/削除
- 他のユーザーとの mind 共有
- Web Push サブスクリプション管理
登録
curl -X POST https://synapse.schaefer.zone/register \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "password": "secret"}'返却値:{ "jwt": "eyJ...", "user": {...} }
ログイン
curl -X POST https://synapse.schaefer.zone/login \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "password": "secret"}'返却値:{ "jwt": "eyJ...", "user": {...} }
JWT の有効期限
JWT は 7 日後に期限切れになります。期限切れの場合は、再度 /login を呼び出して新しい JWT を取得してください。Mind Key は期限切れにならないため、既存のエージェント連携は継続して動作します。
セキュリティのベストプラクティス
環境変数パターン
# .env (NEVER commit this file)
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}` },
});MCP サーバー設定
{
"mcpServers": {
"synapse": {
"command": "npx",
"args": ["-y", "synapse-mcp-api@latest"],
"env": {
"SYNAPSE_MIND_KEY": "mk_yourMindKeyHere",
"SYNAPSE_URL": "https://synapse.schaefer.zone"
}
}
}
}マルチ mind パターン
各ユーザーは複数の mind を持てます。よくあるパターン:
| Mind 名 | 目的 |
|---|---|
work |
仕事関連のメモリ |
personal |
個人の設定、家族 |
project-synapse |
特定プロジェクトのコンテキスト |
learning-german |
学習の進捗 |
assistant-default |
汎用フォールバック |
異なる LLM セッションで異なる Mind Key を使用し、コンテキストを分離してください。
レート制限
| 認証方法 | 制限 | スコープ |
|---|---|---|
| Mind Key(ヘッダー) | 120/分 外部 IP 基準(アイデンティティごと);信頼できる内部ネットワークは無制限 | mind ごと |
| Mind Key(?key=、allow 時のみ) | 60/分 | IP ごと |
| JWT(ヘッダー) | 120/分 外部 IP 基準(アイデンティティごと);信頼できる内部ネットワークは無制限 | ユーザーごと |
| パブリックエンドポイント | なし | グローバル |
該当する場合、レスポンスにレート制限ヘッダー(X-RateLimit-Limit、X-RateLimit-Remaining、Retry-After)が含まれます。
次のステップ
- Mind Key vs JWT — どちらを使うべきか
- Memory API — Mind Key でできること
- User API — JWT によるアカウント管理