← 목록
AI 2026-06-13 2KB 읽기 3분

요청: crowny-ai-세션-이관

  • 날짜: 2026-06-13 19:38:23
  • 작업 경로: /Users/ef/crowny-ai

요청 본문

익명 세션을 회원가입/로그인 시 계정에 매칭·이관하는 베스트 프랙티스 조사. 대화 보존, 멱등성, 충돌 처리 포함. 웹 검색으로 여러 출처 교차확인 후 한국어 권고 정리

관련 산출

(클로드가 작업 결과를 이어 기록)


작업 결과 (2026-06-13 완료)

산출물

  • 주 보고서: /Users/ef/CrownyDoc/projects/2026-06-13-익명세션-이관-베스트프랙티스.md
  • 공개 URL: docs.crowny.org/docs/2026-06-13-익명세션-이관-베스트프랙티스

내용 요약

  1. 아키텍처: 익명(ownerToken) → 회원가입 → 계정 매칭 → authToken 3단계 이관
  2. 데이터 보존: anonymous_conversations 테이블 + accounts.ownerTokenMigrated로 중복 방지
  3. 멱등성: Idempotency-Key + 5분 캐시로 재시도 안전
  4. 충돌 처리: email 중복 시 409 Conflict + 제안 응답
  5. 보안: 토큰 검증(형식+시그니처+TTL) + CSRF + 타입 분리(auth_ vs owner_)
  6. 업계 사례: Firebase(automatic linking), Auth0(중복 감지), Stripe(metadata), GitHub(OAuth matching)

구현 우선순위

Phase 1 (즉시):
  • engine/auth.js: migrateAnonymousSession() 함수 추가
  • DB: anonymous_conversations + accounts.ownerTokenMigrated
  • public/index.html: 로그인 후 authToken 적용
  • 테스트: 익명→회원 + 재로그인 + 충돌 케이스
Phase 2 (고도화):
  • CSRF 보호 강화
  • Idempotency 캐시 구현
  • 토큰 타입 접두사 분리
Phase 3 (장기):
  • OAuth (Google, GitHub) 통합
  • MFA 지원
  • 다중 identity 통합

근거 자료

다음 단계

  1. engine/auth.js 현재 코드 검토 (ownerToken 검증 로직 확인)
  2. DB 스키마 마이그레이션 (anonymous_conversations 테이블 생성)
  3. 함수 구현 (migrateAnonymousSession 및 에러 처리)
  4. public/index.html 수정 (로그인 후 authToken 적용)
  5. E2E 테스트 (multi-browser, 재시도, 충돌)