Auth API (v1 구현 기준)¶
요약
인증/회원 도메인, base /api/auth. 회원가입·로컬 로그인·로그아웃·소셜 로그인(OIDC)·토큰 재발급(reissue) 5개 + dev 전용 소셜 로그인 모의 1개 = 6개 구현.
로그인 응답은 accessToken(1시간) + refreshToken(2주, MSG-135) — 웹은 HttpOnly 쿠키, 앱은 body(X-Client-Type). Redis 저장·로테이션·재사용 감지·로그아웃 블랙리스트.
에러 코드는 Auth 2xxx, User 1xxx 체계.
이 노트로 답할 수 있는 질문¶
- 회원가입/로그인/로그아웃/소셜 로그인의 경로와 요청·응답 필드는?
- 비밀번호 검증 규칙은?
- 소셜 로그인은 어떤 방식(OIDC)이고 요청에 뭘 보내나?
- Auth 도메인 에러 코드(2xxx)는 뭐가 있나?
- refresh token은 구현돼 있나?
엔드포인트¶
| 메서드/경로 | 인증 | 핵심 |
|---|---|---|
POST /api/auth/signup |
불필요 | email·password(8~64, 영문+숫자)·nickname(2~20). 409 EMAIL_ALREADY_EXISTS |
POST /api/auth/login |
불필요 | email·password → accessToken + refreshToken(웹=HttpOnly 쿠키/앱=body). X-Device-Id 헤더 없으면 서버 생성 후 응답 헤더로 반환 |
POST /api/auth/logout |
필요 | Bearer 토큰 무효화(Redis 블랙리스트) + 해당 디바이스 refresh 세션 삭제. X-Device-Id 없으면 전 디바이스 삭제. 응답 null |
POST /api/auth/oauth/{provider} |
불필요 | OIDC idToken → accessToken + refreshToken. 미지원 provider는 2422 |
POST /api/auth/reissue |
불필요 | refresh(웹=쿠키/앱=body)로 새 access + 회전된 새 refresh 발급. 회전된 옛 토큰 재사용 시 세션 체인 폐기 (MSG-135) |
POST /api/auth/dev/social-login |
불필요 | local/dev 프로파일 전용(prod 미노출). ID Token 검증 없이 (provider, oid)로 find-or-create 후 토큰 발급. refresh는 body |
에러 코드¶
- Auth 2xxx: 2401 INVALID_TOKEN · 2402 EXPIRED_TOKEN · 2403 UNAUTHENTICATED · 2411 INVALID_CREDENTIALS · 2421 INVALID_ID_TOKEN · 2422 UNSUPPORTED_PROVIDER · 2431 INVALID_REFRESH_TOKEN · 2432 EXPIRED_REFRESH_TOKEN · 2433 REFRESH_TOKEN_REUSE_DETECTED
- User 1xxx: 1404 USER_NOT_FOUND · 1409 EMAIL_ALREADY_EXISTS