원격 Vault P1a Auth0 후보와 실험 범위
2026-09-05 범위 변경: 아래는 과거 시험·구현 기록이다. 현재 실행은 원격 Vault 재설계와 선행 검증의 로컬 stdio/SSH 계획을 따른다. 웹·Android와 Auth0 후속 시험은 재개하지 않는다. AWS 시험 리소스는 사용자 요청으로 보존한다. Auth0 정리 상태는 HANDOFF에서 확인한다.
원격 Vault P0 환경 확인과 P1 최소 시험에 따른 첫 후보 조사다. 사용자가 생성한 JP-1 Development tenant의 기본 공개 metadata 검사를 통과했다. 최초에는 tenant가 없었으나 승인 뒤 생성됐고 아래 실제 결과를 확인했다. issuer 응답 설정과 metadata 재조회도 마쳤다. 실제 등록·토큰 교환·회수는 미검증이며 Auth0 운영 채택이나 P1 전체 통과가 아니다.
첫 후보로 삼는 이유
Auth0는 관리형 인증과 MCP용 resource 호환 설정을 제공하므로 자체 인증 서버의 배포·패치·상태 저장을 먼저 추가하지 않고 시험할 수 있다. 이는 공식 기능에 근거한 후보 선정이며 실제 호환성의 증거는 아니다. 기존 Cognito 구성의 S256 metadata 실패는 보존하고, 과거 제안의 DynamoDB 차단 상태는 승계하지 않는다. 목적은 MCP의 목적은 여러 모델이 같은 Vault를 이용하게 하는 것이다다.
확인한 조건과 실환경 판정
| 항목 | 공식 원천에서 확인한 조건 | 실제 tenant에서 볼 것 |
|---|---|---|
| resource와 audience | Resource Parameter Compatibility Profile을 켜야 resource가 API 대상에 반영됨. 둘을 함께 보내면 audience 우선 | 각 클라이언트의 요청 대상과 발급 토큰 aud 일치. 잘못된 대상 거부 |
| issuer 응답 | Include Issuer in Authorization Responses 설정 제공 | metadata 광고와 실제 authorization 응답의 iss 일치 |
| public PKCE | native/public client는 token endpoint 인증 none·PKCE 경로 사용 가능 | 실제 S256 광고, code flow, 지원 token endpoint 인증 방식. 문서만으로 통과 금지 |
| 등록 | 사전 등록 client ID를 먼저 검토. 자동 DCR/CIMD를 모든 환경의 필수값으로 두지 않음 | Codex·Claude 설치 버전의 등록 옵션, ChatGPT의 URL 탐지 뒤 고급 OAuth 설정. 실제 callback 정확히 등록 |
| 갱신·회수 | Dashboard의 사용자 Authorized Applications에서 접근 회수 가능. 일부 새 refresh 관리 API는 Enterprise 전용 | 사용 중인 Free 기능에서 회수 가능 여부·전파 시간·기존 access token 수용 시간·재로그인 부담 |
근거: resource 호환 설정, MCP 인증 구성, public/confidential 앱, refresh 회수. 모두 2026-09-05 열람했다.
회수 설정에는 grant까지 제거할지의 차이가 있다. 앱 삭제·grant 회수·refresh 거부·서버의 access token 거부를 각각 기록한다. Dashboard 회수만으로 특정 연결의 즉시 차단을 약속하지 않는다. access token 수명은 API 설정에서 조정하는 후보이며, 시험 수명과 사용자가 수용할 운영 수명을 구분한다.
지금 필요한 외부 범위 — tenant metadata까지만
- 시험 전용 Auth0 tenant 1개. 제안 이름은
vault-preflight-20260905이며 이름 가용성과 지역은 생성 화면에서 확인한다. 기본 제공 도메인을 사용한다. 사용자 본인이 계정 가입·비밀번호·약관 동의 등 계정 소유자 단계를 수행한다. - 생성 직후 공개
/.well-known/openid-configuration을 읽어 원래 metadata를 보존한다. issuer 정확 일치, S256, code, HTTPS authorization/token/JWKS, public token endpoint 방식, 등록 endpoint 또는 사전 등록 경로를 확인한다. JSON에 값을 보충하거나 다른 tenant 결과로 대신하지 않는다. - 시험 전용 tenant에서 resource 호환·issuer 응답 설정의 표시/요금제 지원을 확인한다. 필요한 설정 변경은 명시한 두 항목만 대상으로 삼고 변경 전후를 기록한다. 기존 tenant가 생겼더라도 그 전역 설정을 임의 수정하지 않는다.
- 이 단계에는 별도 시험 API·OAuth client·최종 사용자·Lambda·GitHub·SSM·DynamoDB 생성과 Auth0 CLI 설치를 넣지 않는다. 서비스가 자동 생성하는 기본 객체가 있다면 생성 이력에 기록하고 사용자가 이미 쓰던 객체로 오인하지 않는다.
새 제공자에는 관리자 계정 정보와 관리 활동이 생긴다. Vault 본문·GitHub 토큰은 전달하지 않는다. 공개 도메인만 받으면 metadata 조회에는 별도 관리 토큰이 필요 없다.
비용·실패·정리
현재 공개 가격은 Free $0/월, 25,000 MAU, 카드 없는 가입을 안내한다. 22일 trial 뒤 Free 전환도 안내하므로 trial에서 보이는 기능을 Free 보장으로 간주하지 않는다. 사용자 지정 도메인은 카드 검증 조건이 있어 이번 범위에서 제외한다. 유료 플랜·카드 등록·추가 상품 없이 진행하고 필요한 기능이 유료 조건이면 중지한다. 이는 실제 tenant의 구독 확인을 대신하지 않는다.
필수 metadata가 맞지 않으면 사용자/API/client나 AWS를 추가하지 않고 실패 원문·설계 영향을 보고한다. 시험 종료 시 전용 tenant에 실제 생성된 객체와 구독 상태를 확인하고 정리한다. tenant 삭제는 되돌리기 어려우므로 정확한 대상과 삭제 범위를 제시한 뒤 사용자가 최종 확인한다. 기존 계정 전체 삭제는 범위 밖이다. tenant 생성 안내, tenant 설정·구독.
metadata 통과 뒤에만 구체화할 것
P1b에는 probe API 1개, read/write 검사 scope, 최소 시험 사용자, 실제 필요한 client 등록과 보호 도구 1개가 필요하다. 여섯 환경의 시험 행과 OAuth client 개수는 같지 않을 수 있다. 설정을 공유하더라도 환경별 호출·회수 영향을 따로 관찰한다.
AWS는 기존 한도 10·미예약 10과 예약 동시성 1 실패 이력을 반영해야 한다. 호스팅·정지 수단과 권한을 구체화하기 전 공용 동시성으로 배포하지 않는다. 따라서 지금 tenant metadata 범위 승인에 AWS 변경 승인을 포함시키지 않는다.
현재 재개점
issuer 응답 설정과 metadata 재조회, 사전 등록 조건 정리를 마쳤다. 다음은 P1b auth_probe·배포/정지 스크립트 로컬 구현·검증이다. 실제 MCP URL이 있어야 ChatGPT 등록 화면의 정확한 callback을 확인할 수 있으므로, 여섯 환경의 callback 등록 완료를 선언하지 않는다. API/client 생성과 배포는 구체화한 범위 뒤에 수행한다.
승인 후 가입 화면 인계
2026-09-05 사용자가 “진행 해”라고 승인했다. Chrome에서 공식 Free 플랜의 가입 양식을 열었으며 카드 불필요 안내를 확인했다. 이메일·약관 동의·Continue와 소셜 가입 선택이 보인다. 가입 정보 입력·약관 동의·계정 생성은 수행하지 않고 사용자에게 인계했다. 가입 이후 trial/구독·실제 tenant 생성 여부를 확인하고, 이미 생성된 tenant를 중복 생성하지 않는다. 사용자 가입 완료 뒤 같은 브라우저에서 이어가며 비밀번호·인증 코드·토큰을 대화로 받지 않는다.
실제 tenant 검사 — 2026-09-05
- tenant:
vault-preflight-20260905, JP-1, Development. 기본 도메인은 Custom Domains 화면의 안내에서 직접 확인한vault-preflight-20260905.jp.auth0.com이다. 별도 custom domain은 만들지 않았다. - 공개 discovery를 호스트에서 인증정보 없이 GET했다. 최초 sandbox 연결 거부와 구분하며 호스트 조회·원문 보존은 성공했다. 원문은 HTML 작업 폴더의
auth0-p1a/discovery.json, 시각·판정은auth0-p1a/checks.json이다. - 통과: issuer 정확 일치(끝
/포함), S256 광고, code 응답형, HTTPS authorization/token/JWKS, token endpoint 인증none, refresh grant 광고. 이것은 metadata 광고 검사이며 실제 PKCE·서명·code 교환 성공은 아니다. - 최초 검사 당시 설정: Resource Parameter Compatibility Profile 켜짐, Include Issuer in Authorization Responses 꺼짐, DCR 꺼짐, CIMD 꺼짐, Refresh Token Revocation Deletes Grant 꺼짐. 이번에 토글·저장하지 않았다. 현재 켜진 resource 설정의 변경 주체나 초기 기본값은 추정하지 않는다.
- metadata에는 registration endpoint가 있지만 DCR 설정은 꺼져 있다. endpoint 광고와 익명 등록 허용을 분리하고 실제 client 생성 요청은 보내지 않았다. 다음 등록은 사전 등록 client ID를 우선 준비한다.
- issuer 응답 지원 광고는 없고 UI 설정도 꺼져 있다. 필요한 issuer 응답 옵션을 켠 뒤 metadata와 실제 authorization 응답을 순서대로 확인해야 한다. 광고 없음만으로 모든 callback 흐름이 실패한다고 판단하지 않는다.
- 구독 실측: Teams > Subscription의 Your Current Plan은 Free·$0·25,000 users. tenant에는 trial 22일 안내가 함께 존재한다. 비교표의 Session & Refresh-Tokens API가 Trial로 표시된다. 무료 계정의 현재 기능 표시를 trial 종료 뒤 기능 보장으로 확대하지 않는다. 해당 관리 API 대신 앞서 정한 Dashboard/Authentication API 회수 경로를 후속 검증한다.
- 계정 가입 뒤 기본 생성됐을 수 있는 객체 전체 inventory는 이번에 검사하지 않았다. 따라서 시험 API/client/user를 추가하지 않았다는 사실을 tenant 안 객체가 0개라는 뜻으로 바꾸지 않는다.
현재 판정은 기본 metadata gate 통과, 설정·등록 준비 남음이다. 다음 작은 작업은 승인된 시험 tenant의 issuer 응답 설정 확인/적용과 metadata 재조회, 사전 등록 client의 정확한 callback·권한 범위 준비다. API/client 생성·MCP 배포는 이 결과 뒤 준비된 범위에서 수행한다. Free 지속 적합성은 실제 기본 OAuth·회수 경로까지 확인해야 완료된다.
issuer 설정 적용과 사전 등록 준비 — 2026-09-05
Include Issuer in Authorization Responses를 꺼짐에서 켜짐으로 변경했다. 페이지 재탐색 뒤에도 켜짐을 확인했고, 20:20:23 +09:00 공개 discovery에서 authorization_response_iss_parameter_supported: true를 확인했다. issuer·S256·code·none 광고도 유지됐다. 전후 JSON 차이는 해당 issuer 지원 필드 추가 1개다. Resource 호환 켜짐, DCR·CIMD·Refresh Token Revocation Deletes Grant 꺼짐은 재조회에서도 같았다. 실제 authorization 성공/오류 응답의 iss 및 code 교환은 아직 시험하지 않았다.
원문과 판정은 HTML 작업 폴더의 auth0-p1a/discovery-after-issuer.json, checks-after-issuer.json이다. 최초 원문을 덮어쓰지 않았다. 이번 외부 변경은 issuer 옵션 1개이며 API/client/user와 AWS 리소스는 추가하지 않았다.
여섯 환경의 사전 등록 조건
| 환경 | 준비된 경로 | 등록 전에 확보할 실제 값 |
|---|---|---|
| ChatGPT Work 웹 | 유효 MCP URL 탐지 뒤 고급 OAuth의 사전 등록 client ID 경로 | 관리 화면에 표시된 정확한 redirect URI와 token 인증 방식 |
| ChatGPT Work Android | 동일 연결 사용 여부를 실제 계정에서 확인 | 웹과 연결을 공유해도 Android 로그인·호출·회수 결과는 별도 기록 |
| Codex Windows CLI 0.146.0 | 설치 help의 --oauth-client-id, --oauth-resource, login --scopes | 고정 callback port 설정 뒤 실제 authorize 요청의 redirect_uri |
| Codex Windows 데스크톱 | 공통 설정 적용 여부와 앱의 로그인 경로 확인 | 앱이 실제 보내는 callback과 요청 scope; CLI 성공으로 대체하지 않음 |
| Claude Windows CLI 2.1.261 | 설치 help의 --client-id, --callback-port; public client이면 secret 생략 | 빈 포트를 선택한 뒤 실제 redirect_uri 확인 |
| Claude Windows 데스크톱 Code Local | 사용자가 확인한 Local/Connectors와 실제 로컬 MCP 설정 경로 | CLI 설정 반영 여부·실제 callback·scope를 앱에서 독립 확인 |
OpenAI 인증 문서는 issuer 검증 요건 충족 시 안정 callback을 안내하지만 관리 화면의 실제 URI를 최종값으로 사용하도록 명시한다. Claude 문서는 고정 포트의 http://localhost:PORT/callback과 public client의 secret 생략을 지원한다. 두 문서는 2026-09-05 재확인했다. 이 표는 등록 조건 준비이며 실제 여섯 callback 확보·등록 완료가 아니다. 와일드카드나 추측 URI를 등록하지 않는다.
다음 probe의 권한·등록 순서
- API 1개와 scope 후보
probe:read,probe:write를 사용한다. read 호출은 합성 ID/시각만 반환하고 write 모드는 권한 확인만 하며 저장하지 않는다. 읽기 토큰의 write 거부, write 권한 토큰의 허용을 나눠 시험한다. - API identifier와 MCP resource는 확정된 공개 HTTPS URL을 기준으로 일치시킨다. issuer는
https://vault-preflight-20260905.jp.auth0.com/로 고정하고 토큰의 aud·서명·만료·scope를 서버에서 확인한다. - public native client는 authorization code + S256 PKCE, token endpoint 인증 none을 우선한다. ChatGPT는 실제 등록 UI가 요구하는 인증 방식 확인 후 확정한다. client 수를 여섯 개로 미리 고정하지 않고 callback·인증 방식·회수 격리 조건으로 나눈다.
- refresh 시험에 필요한
offline_access와 API offline access 허용은 발급 범위에 별도 표시한다. Management API 권한·GitHub 권한은 probe에 주지 않는다. access token 시험 수명·refresh 회전 설정과 grant 회수 범위는 배포안에서 명시하고 운영 허용 지연은 실측 뒤 사용자가 결정한다. - 먼저 데이터 없는 endpoint의 배포 대상·최소 IAM·비용·종료 시각·즉시 정지 방법을 준비한다. 승인된 범위로 endpoint를 확보하면 ChatGPT callback을 읽고, 정확한 client 등록과 여섯 환경 시험을 진행한다. 기존 Lambda 예약 동시성 1 실패를 해결한 것으로 취급하지 않는다.
당시 다음 작업이었던 P1b 배포·정지·권한 범위 구체화는 아래 후속 문서에서 마쳤다. 이번에는 앱 등록·Lambda 생성이나 실제 인증 성공을 완료로 표시하지 않는다.
P1b 준비 후속
원격 Vault P1b 인증 시험 배포안에 실제 AWS 한도·정책을 반영한 제안과 로컬 IAM 초안을 준비했다. 다음은 probe·배포/정지 스크립트의 로컬 구현·검증이며 외부 배포는 미실행이다.