# HMM 백오피스 MCP 사용자 Bearer 인증 설계 (#712) > 상태: 구현·배포·검증 완료 > 대상: `https://hmm-backoffice.cloud-handson.com/mcp` > 브랜치: `hmm-backoffice` ## 목적 HMM 백오피스에서 발급한 `vpd_live_*` 사용자 토큰을 MCP의 실제 인증 수단으로 사용한다. 현재 별도 호스트의 `https://hmm-mcp.cloud-handson.com/mcp`는 서버 공용 게이트웨이 토큰만 허용하므로 사용자 토큰을 보내면 Nginx에서 HTTP 401을 반환한다. 사용자별 HMM 데모는 백오피스 MCP 주소를 사용해야 한다. ## 확인된 현행 결함 - 백오피스의 `/mcp`는 `initialize`, `tools/list`, `tools/call`을 제공한다. - Controller가 `Authorization: Bearer` 값을 추출하지만 Service의 `ignoredAuthorization` 인자로 전달해 검증하지 않는다. - Tool 실행은 토큰 사용자 컨텍스트를 설정하지 않고 백오피스 JDBC 계정으로 바로 `DBMS_CLOUD_AI_AGENT.RUN_TOOL`을 호출한다. - 따라서 주소를 올바르게 사용해도 토큰이 인증과 행 접근 문맥에 연결되지 않는다. ## 변경 설계 ```text Private Agent Factory → POST https://hmm-backoffice.cloud-handson.com/mcp → Authorization: Bearer → HMM_ACCESS_BEARER_TOKENS SHA-256/만료/회수/재직 검증 → 동일 JDBC connection에서 HMM_ACCESS_CTX_PKG.SET_USER_BY_BEARER → DBMS_CLOUD_AI_AGENT.RUN_TOOL → finally HMM_ACCESS_CTX_PKG.CLEAR_USER ``` 1. 모든 MCP method는 활성 사용자 Bearer를 요구한다. 누락·오류·만료·회수 토큰은 HTTP 401로 fail-closed한다. 2. 원문 토큰은 로그, 응답, DB, Git에 기록하지 않는다. DB에는 기존 SHA-256 해시만 사용한다. 3. `tools/call`은 토큰 검증과 Tool 실행을 같은 요청에서 수행한다. 4. Tool 실행 connection에는 컨텍스트를 설정하고 성공·실패와 무관하게 `finally`에서 지운다. 5. `initialize`와 `tools/list`도 토큰을 검증해 discovery만으로 인증을 우회할 수 없게 한다. ## Agent Factory 설정 | 항목 | 값 | |---|---| | Server URL | `https://hmm-backoffice.cloud-handson.com/mcp` | | Authentication mode | `Bearer Token` | | Bearer token | 백오피스에서 발급한 토큰 원문만 입력 (`Bearer ` 접두어 제외) | 별도 서버 `https://hmm-mcp.cloud-handson.com/mcp`에는 사용자 토큰을 사용하지 않는다. 그 주소는 운영 `HMM_MCP_BEARER_TOKEN`을 사용하는 호환 게이트웨이다. ## 완료 기준 - 활성 사용자 토큰으로 `initialize`, `tools/list`, 세 Tool 호출이 성공한다. - 누락·무효·회수 토큰은 HTTP 401이다. - Tool 호출 전후 DB context 설정·정리가 자동 테스트로 검증된다. - 운영 배포 후 외부 HTTPS에서 discovery와 대표 Tool 호출을 검증한다. - 토큰 원문이나 해시는 테스트 출력과 문서에 남지 않는다. ## 배포 검증 결과 2026-07-23 운영 배포에서 다음을 확인했다. - 자동 테스트 107건 통과 - 운영 JAR과 검증 빌드 SHA-256 일치 - 무토큰 `initialize`, `tools/list`: HTTP 401 - 활성 E1002 임시 사용자 토큰: - `initialize`: HTTP 200 - `tools/list`: HTTP 200 - `resolve_hr_term`: HTTP 200, 정상 MCP result - 발견 도구: `resolve_hr_term`, `search_hr_data`, `search_hr_policy` - 같은 토큰을 회수한 직후 `tools/list`: HTTP 401 - 검증 중 발급한 임시 토큰과 이전 실패 시 남은 임시 토큰을 모두 회수 - 백오피스 시스템 설정과 MCP 서비스 화면의 Agent Factory 주소를 `https://hmm-backoffice.cloud-handson.com/mcp`로 변경 상세 증거는 `docs/reports/2026-07-23-hmm-backoffice-mcp-bearer-verification.md`에 기록한다.