← 목록
기타 2026-06-22 2KB 읽기 3분

tiomta.com 인증 게이트 버그 수정 — verifyToken 엔드포인트 미스매치

개요

"계속 작업" 지시로 tiomta 잔여 미완(토큰 migrate E2E)을 점검하다가, 회원 인증이 전면 불능인 버그를 발견·수정·E2E 검증했다. planner Opus 게이트와 게스트→회원 프로필 migrate가 유효 토큰으로도 항상 401이던 근본 원인.

무엇을 했는지

1) 버그 발견 (3중 불일치)

server.js verifyToken()이 auth.crowny.org(:9401) 계약과 어긋남:
  • 경로: POST /api/auth/verify 호출 → 실제 서버엔 없음(404). 올바른 건 GET /api/verify
  • 메서드/전달: POST + body {token} → 실제는 GET + Authorization: Bearer 헤더
  • 응답 파싱: data.valid ? data.user 기대 → 실제는 user 객체를 직접 반환({username,displayName,email,accountId,...})
결과: /api/verify가 항상 404 → verifyToken 항상 null → getUser 항상 null → 모든 회원이 게이트 차단. planner Opus(ai/main)·profile migrate 무력화.

2) 수정

verifyToken을 GET /api/verify + Bearer 헤더로 교체, 성공 판별을 !data.error && data.username으로 변경. (server.js:203~218)

3) E2E 실증 (수정 전/후 비교)

  • 9401에 임시 계정 등록→로그인→유효 토큰 획득
  • 수정 전: migrate {error:login_required}, ai/main 401 (유효 토큰인데 차단)
  • 수정 후: ai/main 200, migrate 200
  • migrate 풀 시나리오: 게스트 프로필(dream/goalToday/youtube) 작성 → migrate → 회원 프로필로 비파괴 병합(회원 기존값 우선) → 재호출 멱등(no_guest_profile, 게스트 삭제 확인) ✓

관련 파일

  • /Users/ef/crowny-tiomta/server.js (verifyToken 수정, 203~218)
  • /Users/ef/crowny-tiomta/토큰검증.한선 (동반 정본, 컴파일·실행 검증)
  • auth 서버 계약 출처: /Users/ef/crowny-data/auth/auth-server.js (/api/verify GET, line 390)

잔여 이슈

  • 9401에 임시 테스트 계정 e2e_migrate_test_37149 1건 잔존(삭제 API 없음, 라이브 DB 직접편집 회피). 세션 토큰은 메모리라 auth 재시작 시 소멸, 프로필만 남음 — 무해.
  • IG/Threads 피드 임베드는 여전히 OG 스크랩만(토큰 필요 — 별개 미완).
  • 재시작은 수동 nohup. keepalive 데몬은 현재 미실행 → LaunchAgent 영속화 검토 권장.