Authentication And User API
기본 경로는 Cloudflare Frontend 도메인의 /api입니다. JSON 요청에는 Content-Type: application/json을 사용하며 인증은 HttpOnly 쿠키로 전달됩니다.
상태 확인
| Method | Path | 인증 | 설명 |
|---|
| GET | /health | 아니요 | Lambda/Express 상태 확인 |
가입 및 로그인
| Method | Path | 인증 | 설명 |
|---|
| POST | /api/auth/signup | 아니요 | 이메일과 비밀번호로 가입 |
| POST | /api/auth/signup/confirm | 아니요 | 이메일 확인 코드 검증 |
| POST | /api/auth/login | 아니요 | 이메일 로그인 시작 |
| POST | /api/auth/login/challenge | 아니요 | TOTP/OTP challenge 완료 |
| POST | /api/auth/refresh | Refresh cookie | access token 갱신 |
| POST | /api/auth/logout | 선택 | Cognito global sign-out 및 쿠키 삭제 |
| GET | /api/auth/session | 예 | 프로필, 권한, 구독, MFA 상태 조회 |
비밀번호는 12자 이상이며 영문 대문자, 소문자, 숫자, 특수문자를 포함해야 합니다.
비밀번호
| Method | Path | 인증 | 설명 |
|---|
| POST | /api/auth/password/forgot | 아니요 | 비밀번호 재설정 코드 발송 |
| POST | /api/auth/password/reset | 아니요 | 코드와 새 비밀번호로 재설정 |
| POST | /api/auth/password/change | 예 | 현재 로그인 사용자의 비밀번호 변경 |
MFA
| Method | Path | 인증 | 설명 |
|---|
| POST | /api/auth/mfa/totp/setup | 예 | TOTP secret과 otpauth URI 생성 |
| POST | /api/auth/mfa/totp/confirm | 예 | 인증 코드 검증 후 MFA 활성화 |
| DELETE | /api/auth/mfa/totp | 예 | TOTP MFA 해제 |
소셜 로그인
| Method | Path | 설명 |
|---|
| GET | /api/auth/social/google | Cognito Google 로그인으로 redirect |
| GET | /api/auth/social/google/callback | Google authorization code 교환 |
| GET | /api/auth/social/github | GitHub OAuth로 redirect |
| GET | /api/auth/social/github/callback | GitHub 사용자와 검증 이메일 확인 후 Cognito Custom Auth |
OAuth state는 DynamoDB TTL 항목으로 10분간 저장되고 callback에서 한 번만 소비됩니다.
프로필과 설정
| Method | Path | 권한 | 설명 |
|---|
| GET | /api/me | 로그인 | 계정 전체 조회 |
| PATCH | /api/me/profile | 로그인 | 표시 이름, 소개, avatar URL 변경 |
| PATCH | /api/me/settings | 로그인 | locale, timezone, 이메일 수신 설정 변경 |
| PUT | /api/users/:userId/permissions | PERMISSION_MANAGE | 사용자 권한 변경 및 감사 기록 |
오류 응답
대표적인 응답 코드는 다음과 같습니다.
400: validation 또는 만료된 challenge
401: 로그인 필요, 세션 만료
403: 필요한 권한 없음
404: 사용자 profile 없음
500: 처리되지 않은 서버 오류
validation 오류는 message와 issues 배열을 반환합니다.