1. 요약 (Summary)
- PKCE 토큰 교환 — 타임아웃 3초, RT 7일 회전·hash 저장·강제 revoke, signup_token 5분의 인증 2계층을 구현한다.
- 공통 스펙 오픈 이슈였던 미반영 스키마 4건 — birth_date·gender·닉네임 모더레이션 상태·device_id — 를 본 문서에서 확정한다. 여기에
status·last_active_at·installation_id·ban_list 4건을 추가해 계정 상태 게이트·휴면·영구 정지 차단을 지원한다.
- 계정 상태 게이트를 Security 필터 단계에서 집행한다 — 잠금·기능 정지·영구 정지를 각 도메인이 중복 검사하지 않게 한다. PostgreSQL 관용 — partial index·배열 — 은 MySQL 8.4 관용으로 통일한다.
- 탈퇴·복원은 HMAC — provider+subject — 아카이브 키로 1년 내 재가입 시 제재 이력 포함 전부 복원, 닉네임 선점 시 재설정 유도로 구현한다.
2. 전제 및 현재 시스템
- 영향받는 서비스/모듈: 인증·회원 도메인, Security 필터 — 전 API JWT 검증, 알림 — 세션 종료 푸시, 모더레이션 — 닉네임·사진.
- 현재 트래픽/데이터 규모: W1 릴리즈 완료 — 로그인·가입 경로 가동 중. 정합화분 — 스키마 4건·복원·단일 기기 — 이 이번 범위.
- 외부 의존성: Kakao·Google OAuth — PKCE, S3 — 프로필 이미지·PII 아카이브, Secrets Manager — JWT 키.
3. 목표 (Goals) / 목표가 아닌 것 (Non-Goals)
Goals
- 만 14세 미만 통과 0건·오복원 0건을 서버 검증으로 보장한다.
- 단일 활성 기기 — 다른 기기 로그인 시 기존 RT 전부 revoke + 종료 푸시 — 를 원자적으로 처리한다.
- DB 변경 4건을 확정해 온보딩·마이페이지 양쪽 오픈 이슈를 닫는다.
- 계정 상태를 단일 게이트로 집행해 잠금·기능 정지·영구 정지가 각 도메인에 중복 구현되지 않게 한다. 제재 집행 후 지연 0분이 목표다.
- 영구 정지 계정의 재가입 통과 0건을 밴리스트 대조로 보장한다 — 만 14세 미만 통과와 같은 급의 절대 조건이다.
- 휴면 사전 고지 누락 0건을 보장한다 — 30일 처리 7일·1일 전, 1년 처리 30일 전.
- 개별 동의 2종을 약관과 분리해 기록하고 미동의 상태의 인증 수단 사용을 막는다.
Non-Goals