# 認証境界

OAuth同意、bearer tokenの保存、identity header、認証済みアクセスの判断を分離します。

- Canonical: https://docs.xmemo.dev/ja/docs/security/authentication
- Locale: ja-JP
- Content-Locale: ja-JP
- Canonical-Content-Digest: 7db78d94f9134263232f217ac1a0f2eb57b88ca22e0cf065f3048a20722fd448
- Edition-Digest: accd9d540f2959ebb545c34db4fc3887cdb15728ae00906b7fbb0c4f80b25f65
- Source-Revision: sha256:ee40679d8c2e2aed685ae161cfdb51750fe7be7d9ee62448f8afa4760b35e76c

## 各credentialを置く場所

認証境界はOAuth同意、bearer tokenの保存、秘密ではないidentity header、そして実際のアクセス判断を分離します。これらを混同することがtoken漏えいの最も一般的な原因です。

- OAuth同意はclient側で行われ、この経路で貼り付けたtokenをXMemoが見ることはありません。
- XMEMO_KEYは環境または対応するsecret storeに置き、gitにcommitするconfigファイルには絶対に入れません。
- Identity headerは通常のlabelであり、configに書き込んでも安全です。
- Public discoveryはread-onlyで、secretを含みません。

## Tokenベースのclient設定

実際の値がファイルに現れないよう、client configから環境変数を参照します。

```json
{
  "mcpServers": {
    "XMemo": {
      "type": "http",
      "url": "https://xmemo.dev/mcp",
      "headers": {
        "Authorization": "Bearer ${env:XMEMO_KEY}"
      }
    }
  }
}
```

## 拒否されたrequestの見え方

credentialがない、または不十分な場合は、memoryを読む前に拒否されます。空のresult setは有効な該当なしの回答であり、認可状態を示すものではありません。

```text
401 — no valid bearer token or API key was supplied.
403 — the credential is valid but lacks memory:read or memory:write.
200 with zero results — authorized, nothing matched.
```

## Memory Console の管理

XMemo は MCP エンドポイントだけではありません。Memory Console は、エージェント帰属を見える状態に保ちながら、メモリを確認・修正・削除・エクスポートするためのユーザー向け入口です。

### メモリの表示と検索

コンソールを開いて保存済みメモリ、パス、メモリタイプを確認し、特定の項目が記憶検索で返るべきだったかを確認します。

### 項目の編集・修正

古い事実を修正し、項目をより明確なパスへ移動し、古いメモを置き換えて、今後のアシスタントがユーザー承認済みの最新コンテキストを呼び出せるようにします。

### 削除とエクスポート

アカウントワークフローを使って不要になったメモリを削除し、アカウント単位のメモリ確認に使うエクスポート導線を見つけます。

### エージェント帰属

どのクライアントまたはランナーがメモリを書き込んだかを確認します。クライアントが送信する非シークレットのエージェントおよびインスタンスラベルも含みます。

### プライバシーと認証情報の管理

個人またはチームのパイロットを拡大する前に、OAuth 同意、直接トークンの利用、環境変数シークレットの受け渡し、サポート境界を見える状態に保ちます。
