TIL

[250423 TIL] 배달어플 소셜로그인

도원좀비 2025. 4. 23. 23:14

🔍 진행한 작업 요약

1️⃣ 소셜 로그인 기능 구현 (OAuth2)

  • spring-security-oauth2-client 사용
  • Kakao / Naver 로그인 분기 처리 (registrationId 기준)
  • 유저 정보 매핑용 DTO (KakaoUserInfoResponse, NaverUserInfoResponse) 작성

2️⃣ 사용자 등록 및 조회 로직 개선

  • socialId + socialType 기준으로 유저 검색
  • 같은 이메일로 다른 소셜 로그인 시 예외 발생 처리
  • UserRepository.validateSocialJoinEmail() 도입

3️⃣ JWT 발급 및 Redis 저장

  • 로그인 성공 시 AccessToken, RefreshToken 발급
  • RefreshToken은 Redis에 RT:{userId} 형식으로 저장
  • 기존 StringRedisTemplate 사용 → RefreshTokenService로 책임 분리 리팩토링

4️⃣ 예외 처리 및 인증 흐름 점검

  • 이메일 UNIQUE 제약 유지
  • 중복된 이메일로 소셜 로그인 시도 시 UserException 발생
  • 인증 예외로 빠지지 않도록 전역 예외처리 흐름 확인

5️⃣ 배운 점

  • 소셜 로그인 시 이메일 중복 처리를 어떻게 해야 하는지 명확하게 정의
  • JWT 기반 인증에서 Redis를 활용해 토큰 무효화 및 재발급 전략 구성
  • OAuth2UserService와 AuthenticationSuccessHandler 커스터마이징으로 인증 흐름 제어
  • UserRepository에 도메인 정책을 위임하여 유연하고 재사용성 높은 구조로 리팩토링

6️⃣ 마무리

  • 회원가입 → 소셜 로그인 연동 → JWT 발급 → Redis 저장까지 완전 연결
  • 로그인/회원가입 예외 케이스도 안전하게 방어