# 인증 경계

OAuth 동의, bearer token 저장, identity header와 인증된 접근 결정을 분리합니다.

- Canonical: https://docs.xmemo.dev/ko/docs/security/authentication
- Locale: ko-KR
- Content-Locale: ko-KR
- Canonical-Content-Digest: 7db78d94f9134263232f217ac1a0f2eb57b88ca22e0cf065f3048a20722fd448
- Edition-Digest: af1e2332cf5bff77f56ba34734c732edfae268fa0b1187d9943be8f73986e552
- Source-Revision: sha256:ee40679d8c2e2aed685ae161cfdb51750fe7be7d9ee62448f8afa4760b35e76c

## 각 credential의 위치

인증 경계는 OAuth 동의, bearer token 저장, 비밀이 아닌 identity header, 그리고 실제 접근 결정을 분리합니다. 이를 섞는 것이 token 유출의 가장 흔한 원인입니다.

- OAuth 동의는 client에 있으며, XMemo는 이 경로에서 붙여 넣은 token을 보지 않습니다.
- 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}"
      }
    }
  }
}
```

## 거부된 요청은 어떻게 보이는가

credential이 없거나 충분하지 않으면 memory를 읽기 전에 거부됩니다. 결과가 비어 있는 것은 유효한 불일치 응답이며 authorization 신호가 아닙니다.

```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.
```

## 메모리 콘솔 컨트롤

XMemo는 단순한 MCP 엔드포인트가 아닙니다. 메모리 콘솔은 에이전트 속성을 표시하면서 메모리를 검토, 수정, 제거 및 내보낼 수 있는 사용자 대면 공간입니다.

### 메모리 보기 및 검색

콘솔을 열어 저장된 메모리를 확인하고, 경로와 메모리 유형을 검사하고, 리콜이 특정 항목을 반환해야 하는지 여부를 확인하세요.

### 항목 편집 또는 수정

오래된 사실을 수정하고, 항목을 더 명확한 경로로 이동하거나, 오래된 메모를 교체하여 미래의 보조자가 사용자가 승인한 최신 컨텍스트를 기억할 수 있도록 하세요.

### 삭제 및 내보내기

계정 워크플로를 사용하여 더 이상 원하지 않는 추억을 제거하고 계정 범위 메모리 검토를 위한 내보내기 경로를 찾으세요.

### 상담원 속성

클라이언트가 보낼 때 비밀이 아닌 에이전트 및 인스턴스 레이블을 포함하여 어떤 클라이언트 또는 실행기가 메모리를 썼는지 검토합니다.

### 개인 정보 보호 및 자격 증명 제어

개인 또는 팀 파일럿을 확장하기 전에 OAuth 동의, 직접 토큰 사용, 환경 비밀 전달 및 지원 경계를 눈에 띄게 유지하세요.
