Skip to content

feat(S15P11A705-64): Kakao·Naver 소셜 로그인 추가 #33

Description

@cherry-go-round

배경 / 목적

MVP 기능범위와 API 명세 §3.1이 Google·Kakao·Naver 3사 소셜 로그인을 요구하는데, 인증 골격 티켓(#32)에서는 Google 하나만 구현합니다. 남은 두 provider를 추가해 명세된 범위를 채웁니다.

인증 기반과 토큰 발급 구조는 #32에서 이미 완성되므로, provider 등록과 사용자 정보 정규화가 주 작업입니다.

Jira (필수)

상위/관련 GitHub Issue

상세 내용

  • Kakao, Naver OAuth 클라이언트 등록과 설정 추가
  • 각 provider의 사용자 정보 응답을 공통 형태(OAuthUserInfo)로 정규화해 member·social_account 생성 로직에 연결
  • 식별자는 provider가 발급한 값을 씁니다 — Google sub, Kakao id, Naver response.id. 이메일·닉네임을 식별 기준으로 쓰지 않습니다 (06 §2.2)
  • 숫자로 보이는 값도 문자열로 저장합니다
  • 리다이렉트 URI에 context path /api/core 포함
  • social_accountprovider 값 처리와 UNIQUE(provider, provider_user_id) 부분 유니크 확인
  • client id/secret은 환경변수 주입. .env.example에 키 이름만 추가

email은 공급자가 미제공·미동의 시 null일 수 있습니다(06 §2.2). 정규화 계층이 이를 허용해야 합니다.

할 일

  • Kakao OAuth 클라이언트 등록·설정
  • Naver OAuth 클라이언트 등록·설정
  • OAuthUserInfo 정규화에 두 provider 추가
  • .env.example에 client id/secret 키 이름 추가
  • 테스트 (공급자 호출은 대역화)

완료 조건

  • Kakao 로그인 시작 요청이 Kakao 인가 페이지로 리다이렉트된다
  • Naver 로그인 시작 요청이 Naver 인가 페이지로 리다이렉트된다
  • Kakao·Naver 각각 신규 계정 콜백에서 membersocial_account가 생성되고 인증 쿠키가 발급된다
  • Kakao·Naver 각각 기존 계정 콜백에서 member가 추가 생성되지 않는다
  • provider가 다르면 동일 사용자라도 별도 social_account로 생성된다
  • emailnull인 응답에서도 가입이 성공한다
  • 기존 Google 로그인·로그아웃·재발급 동작이 회귀하지 않는다
  • 테스트가 PostgreSQL Testcontainers에서 수행된다
  • ./gradlew clean check --no-daemon 통과
  • 08_API_명세 §3.1 지원 provider 목록이 구현과 일치한다

Metadata

Metadata

Labels

enhancement새 기능·개선 (feat)

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions