Files
vpd-permission-poc/docs/design/617-dds-mcp-end-user-context/fn-authenticate-mcp-bearer.md

29 lines
1.1 KiB
Markdown

# 함수 명세: `authenticateMcpBearer` (#617)
> **상태**: Draft · **분류**: 복잡 — 인증 저장소 I/O 및 fail-closed 경계
## 책임
MCP Tool 호출의 Bearer를 기존 애플리케이션 사용자로 해석한다. DDS 역할·DDL을 결정하지 않는다.
## 시그니처
`BearerToken -> AuthenticatedAppUser`
## 입력과 출력
- 입력: `Authorization: Bearer <opaque-token>`에서 추출한 원문 token.
- 출력: 활성 `CB_APP_USER``userId`, 표시명, token 식별자, 검증 시각.
## 규칙
1. token 형식·길이를 먼저 검증한다.
2. 해시 비교, 만료, 회수, 활성 사용자 여부를 한 트랜잭션에서 검증한다.
3. token이 없거나 하나의 활성 사용자로 해석되지 않으면 동일한 권한 없음 결과를 반환한다.
4. 원문 token, 해시, 사용자 상세를 로그·MCP 응답에 넣지 않는다.
5. 각 Tool 호출마다 재검증한다. SSE 연결 생성 시점의 결과를 재사용하지 않는다.
## 실패
`AUTHORIZATION_DENIED`로 fail-closed한다. DDS Context 부착과 DB Tool SQL을 호출하지 않는다.