인증
대화형 OAuth (권장)
최초 연결 시 MCP 클라이언트는 다음을 수행합니다:
- Builder 또는 Runtime URL에 접근
- 인증 챌린지 수신
- EKB 계정의 브라우저 동의 화면 열기 (
/oauth/consent) - PKCE를 사용한 인증 코드 흐름 완료
- 본인을 대표하는 토큰으로 EKB에 호출
연결한 엔드포인트에 따라 build 또는 use 접근을 승인합니다. Builder와 Runtime은 토큰을 공유하지 않습니다.
동의 화면에 표시되는 내용
| 범위 | 화면의 레이블 |
|---|---|
odin:build | Build in your workspace |
odin:use | Use your agents and tools |
화면에는 요청하는 MCP 클라이언트 이름과 권한이 표시됩니다. 명시적으로 승인하거나 거부하세요 — 기본적으로 아무것도 부여되지 않습니다. 거부하면 클라이언트가 멈추지 않도록 error=access_denied와 함께 클라이언트로 다시 리디렉션됩니다.
보류 중인 동의 요청은 만료됩니다. 페이지에 요청이 만료되었거나 이미 사용되었다고 표시되면, MCP 클라이언트에서 다시 시작하세요.
왜 두 개의 부여인가
| 부여 | 범위 | Audience | 일반적인 용도 |
|---|---|---|---|
| Builder | odin:build | /builder/mcp | 에이전트, 워크플로우, 테이블, 인터페이스, KB 생성/변경 |
| Runtime | odin:use | /runtime/mcp | 에이전트 질문, 게시된 도구 실행, KB 검색, 테이블 쿼리 |
Runtime 토큰을 Builder에 지정하면 실패합니다 (그 반대도 마찬가지). "내 지원 에이전트에게 질문하기"는 "내 에이전트를 재작성하기"로 승격될 수 없습니다.
토큰이 할 수 있는 일
세 가지 계층이 적용됩니다:
- Audience — 토큰은 승인한 서버에만 유효합니다
- Scope — build 대 use
- 백엔드 허용 목록 — 명시적으로 지정된 EKB API 집합만 MCP를 통해 접근할 수 있습니다
MCP 서비스는 자체 자격 증명을 보유하지 않습니다. 모든 호출은 사용자의 토큰(또는 API 키)을 전달합니다. EKB는 여전히 일반적인 프로젝트 구성원 자격, 권한, 게시 상태, 문서 Access Tag를 적용합니다.
API 키 (헤드리스)
CI와 자동화는 브라우저 동의 흐름을 완료할 수 없습니다. 다음을 전달하세요:
X-API-KEY: ...
X-API-SECRET: ...
| 키 유형 | 적합한 용도 |
|---|---|
| 사용자 수준 | list_odin_projects, 다중 프로젝트 Runtime, 여러 프로젝트를 봐야 하는 CI |
| 프로젝트 범위 | 단일 프로젝트로 고정된 자동화 |
예시 구성: 클라이언트 연결.
MCP 클라이언트 구성의 API 시크릿은 다른 자격 증명과 동일하게 취급하세요 — 공유 저장소에 커밋하지 마세요.
보안 팁
- Builder는 구성 변경이 필요한 클라이언트에만 연결하세요
- 일상용 어시스턴트에는 Runtime만 사용하는 것이 좋습니다
- 프로덕션에서는 HTTPS MCP URL을 사용하세요
- 헤드리스 접근에 사용되는 API 키를 정기적으로 교체하세요
- 노트북 / 클라이언트가 더 이상 빌드 접근을 가져서는 안 되면 권한을 해제하거나 다시 연결하세요
- Access Tag와 프로젝트 역할은 Runtime 검색 및 에이전트 답변에도 계속 적용된다는 점을 기억하세요
문제 해결
| 증상 | 확인할 사항 |
|---|---|
| 동의 만료 | 클라이언트에서 다시 시작하세요. 요청은 유효 기간이 짧습니다 |
| 토큰이 Runtime에서는 되지만 Builder에서는 안 됨 | 예상된 동작입니다. 별도의 부여이므로 Builder를 별도로 연결하고 승인하세요 |
| 헤드리스 호출이 프로젝트 간에 실패 | 사용자 수준 API 키를 사용하세요 |
| 거부 후 클라이언트 멈춤 | 클라이언트가 access_denied를 처리해야 합니다. 필요하면 연결을 재시도하세요 |