빌더 인증
표면별 자격증명 규칙
| 표면 | 받는 자격증명 | SDK 동작 |
|---|---|---|
REST (ai.tasks, ai.categories, ai.papers) | Bearer 전용 (McpKey는 REST에서 401) | Authorization: Bearer <token> |
MCP (ai.mcp, ai.vault, ai.sync) | McpKey 또는 Bearer | McpKey 우선 → 없으면 Bearer 폴백 |
new AiNote({ apiKey: '<key>' }); // 같은 키를 양쪽에 (Bearer+McpKey)
new AiNote({ auth: { type: 'bearer', token } }); // REST + MCP 둘 다 Bearer
new AiNote({ auth: { type: 'mcpKey', key } }); // MCP 전용방법 A — BYO 키 (지금 바로, ✅ 오늘 동작)
사용자가 ainote 계정에서 키를 발급 → 당신 앱(서버)에 연결 → SDK가 그 사용자 데이터를 읽고 씀.
키 발급 경로 (둘 중 하나):
무인증 onboarding 도구 — 계정 생성과 동시에 키를 받습니다. 서버 변경 0:
bash# 신규 계정 curl -s https://api.ainote.dev/api/mcp -H 'Content-Type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{ "name":"signup_and_get_key", "arguments":{"email":"you@example.com","password":"min6chars","name":"My App"}}}' # 기존 계정 curl -s https://api.ainote.dev/api/mcp -H 'Content-Type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{ "name":"login_and_get_key", "arguments":{"email":"you@example.com","password":"..."}}}'응답 텍스트에 MCP 키가 들어 있습니다. (
signup은email+password필수,name선택 /login은email+password.)앱/웹 설정 — 이미 ainote 사용자라면 ainote 앱 설정 › MCP 키에서 생성.
특징:
- 서버 변경 0, 오늘 동작.
- ⚠️ MCP 키는 계정 전체 접근(coarse) — 앱별/읽기전용 스코프 없음. 비번급 권한이라 서버에 보관.
- 키는 그 사용자 데이터만 건드림(격리 보장).
방법 B — Sign in with logi (스케일 / 매끄러움)
🚧 계획됨 — 아직 미제공
아래는 향후 방향입니다. 현재 SSO/OAuth 발급 흐름(issuer URL · 클라이언트 등록 · authorize/token 엔드포인트 · 스코프)은 공개돼 있지 않습니다. 지금 구현 가능한 건 방법 A뿐입니다. 다중 사용자 스코프 권한이 필요하면 로드맵을 기다리거나 문의하세요.
logi(1pass)는 ainote의 IdP입니다. "Sign in with logi" 한 번으로 (계획):
- 서드파티 앱 로그인 + ainote 계정 자동 생성(JIT 프로비저닝) + 자동 링크
- 검증된 동일 이메일이면 기존 ainote 계정과 자동 링크 (미검증 이메일/소셜 계정은 보호상 링크 안 함)
- 앱은 ainote JWT(또는 logi
agent:read/agent:write토큰)를 받아 SDK에 Bearer로 전달
목표 장점: 이중가입 없음, raw 키 붙여넣기 없음, 스코프 있는 권한.
설계상 순서: MCP 커넥터(logi 토큰 →
/api/mcp)는 fail-closed — SSO로 먼저 링크된 사용자만 통과(미링크 sub는 401, orphan 계정 안 만듦). 즉 "Sign in with logi 먼저 → 그다음 agent 토큰으로 MCP 호출".
단계 요약
| 방법 A (BYO 키) | 방법 B (Sign in with logi) | |
|---|---|---|
| 상태 | ✅ 오늘 동작 | 🚧 계획됨 |
| 권한 | coarse (계정 전체) | scoped (agent:read/agent:write) |
| 마찰 | 키 복사·붙여넣기 | 동의 1번 |
| 빌드 | 0 (오늘) | (출시 후) logi 토큰 → SDK에 Bearer 전달 |
오늘 빌드/검증/데모는 방법 A로 합니다.
WAF 403
api.ainote.dev 앞단 WAF는 일부 비브라우저 User-Agent를 403으로 막습니다. SDK는 기본 User-Agent: @ainote/sdk/<version>를 보내며 이는 허용됩니다(검증됨). 직접 curl로 호출하거나 userAgent 옵션을 커스텀했을 때 403이 나면 UA를 의심하세요 — 브라우저류 UA 또는 SDK 기본값을 사용하면 통과합니다.