MCP 인증과 권한
인증과 권한
섹션 제목: “인증과 권한”실제 접근 범위는 토큰 권한 ∩ 플랫폼 연결 권한 ∩ 현재 소유권 ∩ 대상 데이터 소속입니다.
매 조회마다 서명·발급자·대상 리소스·유효기간, 사용자·클라이언트에 묶인 연결의 만료·철회, 현재 소유권, 필요한 권한, 페이지의 플랫폼 소속을 확인합니다.
현재는 소유자만 지원합니다. 직원·초대 운영자와 구매자용 MCP는 구현하지 않았습니다. 이메일 일치만으로 계정을 연결하지 않습니다. 소유권 이전, 비활성화, 플랫폼 삭제와 연결 철회 시 기존 조회 권한도 차단됩니다.
자격 증명 전달
섹션 제목: “자격 증명 전달”클라이언트의 인증 저장소에서 HTTP 헤더로 전달합니다.
Authorization: Bearer MCP_OAUTH_ACCESS_TOKEN위 값은 예시 표기이며 실제 토큰이 아닙니다.
- URL query·프롬프트·도구 인자·소스 코드·로그에 토큰을 넣지 않습니다.
- 기존 스토어프론트 키·서버 키·Sanctum 토큰·WordPress 쿠키로 대체하지 않습니다.
connection_id는 식별자이지 인증 수단이 아닙니다.- 도메인·플랫폼·사용자 식별자를 입력에 추가해도 권한이 생기지 않습니다.
토큰 계약
섹션 제목: “토큰 계약”지정된 발급자의 RS256 서명 JWT 접근 토큰만 지원합니다. 일반 JWT, OIDC ID 토큰, 임의 opaque 토큰은 허용하지 않습니다.
| 항목 | 검증 |
|---|---|
헤더 typ | at+jwt 또는 application/at+jwt |
헤더 alg, kid | RS256 및 신뢰한 공개키 식별자 |
iss | 설정한 발급자와 정확히 일치 |
aud | MCP 리소스 URI 포함; 문자열 또는 배열 |
sub | 비어 있지 않은 안정적인 사용자 식별자 |
client_id | 연결 기록의 클라이언트와 일치 |
iat, exp | 정수 시각, 미래 발급·만료 거부, 수명 최대 1시간 |
jti | 비어 있지 않은 토큰 식별자 |
scope | 공백으로 구분한 권한 문자열 |
nbf | 포함된 경우 유효 시작 시각 검증 |
발급자·사용자·클라이언트는 대소문자 등을 임의로 정규화하지 않고 비교합니다. 공개키는 운영자가 신뢰하는 발급자에서 준비합니다. 토큰의 URL이나 요청값으로 공개키·발급자를 선택하지 않습니다.
공개키 자동 갱신, OAuth 토큰 발급·갱신 및 발급자 측 개별 토큰 철회 연동은 후속 작업입니다. 플랫폼 연결 철회는 현재도 각 조회에서 확인합니다.
OAuth JWT 접근 토큰 프로파일과 MCP HTTP 인증 규격을 기준으로 설계한 로컬 구현 범위입니다.
| 권한 | 도구 |
|---|---|
platform:read | 연결 목록, 플랫폼 기본 정보 |
pages:read | 페이지 목록·단일 페이지 구조 |
Gateway 인증 확인과 도구 조회에는 platform:read가 필요합니다. 페이지 도구는 여기에 pages:read도 필요합니다. 토큰과 연결 기록 양쪽에서 허용해야 합니다.
편집·게시·결제·환불 권한은 현재 지원하지 않습니다.
인증 리소스 메타데이터
섹션 제목: “인증 리소스 메타데이터”설정된 Gateway에서 다음과 같은 메타데이터를 제공합니다. 모든 주소는 예시입니다.
{ "resource": "http://127.0.0.1:8120/mcp", "authorization_servers": ["https://auth.example.com/runmoa"], "scopes_supported": ["platform:read", "pages:read"], "bearer_methods_supported": ["header"]}인증 없이 조회할 수 있지만 설정한 Host와 전달된 Origin 검증은 적용됩니다. 메타데이터가 있다고 고객용 로그인·동의 화면이 준비된 것은 아닙니다.
연결 생성과 철회
섹션 제목: “연결 생성과 철회”개발용 연결은 검증한 외부 사용자 식별자를 기존 소유자에 묶는 서버 측 CLI로만 생성합니다. 수동 생성은 local/testing에서만 허용하며 원격 생성 API는 없습니다. 이 CLI를 운영 고객의 동의 흐름으로 사용하면 안 됩니다.
고객용 화면은 이후 로그인 → 관리 가능한 플랫폼 선택 → 필요한 권한 동의 → 검증된 사용자 연결 순서로 구현합니다.
정보 보호와 오류
섹션 제목: “정보 보호와 오류”- 누락·위조·만료 토큰은 거부합니다.
- 권한 부족, 다른 사용자의 연결, 철회·만료 연결은 조회를 거부합니다.
- 다른 플랫폼의 페이지는 존재 여부를 공개하지 않습니다.
- 유효한 토큰이어도 연결 목록은 비어 있을 수 있습니다.
- 감사 기록을 남길 수 없으면 플랫폼 정보를 반환하지 않습니다.
- 응답·감사 기록에 토큰·원본 본문·고객·결제 정보를 포함하지 않습니다.
HTTP 오류와 도구 결과 오류의 차이는 도구 참조를 참고하세요.