✨ 버그 설명
구글/네이버/카카오 OAuth 로그인이 develop 프론트(https://promptplace-develop.vercel.app)와 프론트 개발자 로컬(http://localhost:5173)에서 dev 백엔드(promptplace-dev.kro.kr)를 통해 진행될 때 redirect_uri_mismatch로 실패한다.
원인: src/auth/services/auth.service.ts:17의 getCallbackUrl()이 NODE_ENV 단일 분기로 callback URL을 결정. 단일 백엔드 인스턴스가 단일 callback URL만 사용하므로 여러 프론트 도메인(vercel-dev / localhost / 운영)을 동시에 지원하지 못함.
✨ 흐름 분석
- 프론트가 자신의 origin에 맞는
redirect_uri로 OAuth 인증 시작
- Provider가 그 URL로
code 돌려줌
- 프론트가
code를 백엔드 토큰 교환 엔드포인트로 전달
- 백엔드가
code로 Provider에 토큰 교환 요청 → 이때 redirect_uri가 1번과 달라서 mismatch
✨ 해결 방향
프론트가 토큰 교환 시 자기가 사용한 redirect_uri를 함께 전달하고, 백엔드는 화이트리스트 검증 후 그 값을 그대로 Provider에 보낸다.
✨ 개발 목록
✨ API 변경 (프론트 동기화 필요)
POST /api/auth/google/token body에 redirect_uri: string 추가 (필수)
POST /api/auth/naver/token body에 redirect_uri: string 추가 (필수)
POST /api/auth/kakao/token body에 redirect_uri: string 추가 (필수)
- 프론트는 OAuth 인증 시작 시 사용한
redirect_uri와 동일한 값을 전달해야 함
✨ 기타
- 화이트리스트 미통과 시 400 반환
- 운영(
https://www.promptplace.kr/auth/callback), 개발(https://promptplace-develop.vercel.app/auth/callback), 로컬(http://localhost:5173/auth/callback) 모두 화이트리스트에 포함 예정
✨ 버그 설명
구글/네이버/카카오 OAuth 로그인이 develop 프론트(
https://promptplace-develop.vercel.app)와 프론트 개발자 로컬(http://localhost:5173)에서 dev 백엔드(promptplace-dev.kro.kr)를 통해 진행될 때redirect_uri_mismatch로 실패한다.원인:
src/auth/services/auth.service.ts:17의getCallbackUrl()이NODE_ENV단일 분기로 callback URL을 결정. 단일 백엔드 인스턴스가 단일 callback URL만 사용하므로 여러 프론트 도메인(vercel-dev / localhost / 운영)을 동시에 지원하지 못함.✨ 흐름 분석
redirect_uri로 OAuth 인증 시작code돌려줌code를 백엔드 토큰 교환 엔드포인트로 전달code로 Provider에 토큰 교환 요청 → 이때 redirect_uri가 1번과 달라서 mismatch✨ 해결 방향
프론트가 토큰 교환 시 자기가 사용한
redirect_uri를 함께 전달하고, 백엔드는 화이트리스트 검증 후 그 값을 그대로 Provider에 보낸다.✨ 개발 목록
OAUTH_ALLOWED_REDIRECT_URIS추가 (콤마 구분 화이트리스트)auth.controller.ts의googleToken/naverToken/kakaoToken에서 body의redirect_uri받기 + 필수 검증auth.service.ts의exchangeGoogleToken/exchangeNaverToken/exchangeKakaoToken시그니처 변경 (redirect_uri인자 추가)getCallbackUrl()제거 (Passport google strategy의callbackURL은 별개 경로라 유지)redirect_uri필수 필드 추가).env/.env.dev갱신 + GitHub Secret(ENV_CONTENT,ENV_DEV_CONTENT)에OAUTH_ALLOWED_REDIRECT_URIS추가 안내pnpm build통과 확인✨ API 변경 (프론트 동기화 필요)
POST /api/auth/google/tokenbody에redirect_uri: string추가 (필수)POST /api/auth/naver/tokenbody에redirect_uri: string추가 (필수)POST /api/auth/kakao/tokenbody에redirect_uri: string추가 (필수)redirect_uri와 동일한 값을 전달해야 함✨ 기타
https://www.promptplace.kr/auth/callback), 개발(https://promptplace-develop.vercel.app/auth/callback), 로컬(http://localhost:5173/auth/callback) 모두 화이트리스트에 포함 예정