사용자 인증과 소셜 로그인 연동을 담당합니다.
기존 User 도메인과 통신하여 로그인 검증을 수행하고, JWT·OAuth2 기반 인증 흐름과 RabbitMQ 이벤트 소비, Slack 알림 등 부가기능을 제공합니다.
기능 | 설명 |
---|---|
일반 로그인 | AuthService 가 User 도메인(UserClient )에서 사용자 정보를 조회 후 비밀번호(BCrypt) 검증 |
JWT 발급/재발급 | **AuthController **에서 Access/Refresh 토큰을 발급하고, Refresh 토큰 쿠키 기반 재발급 지원 |
소셜 로그인(OAuth2) | **OAuth2UserService **가 Naver/Google OAuth2 응답을 처리하고 기존 계정과 자동 연동 |
소셜 계정 매핑 | UserSocial 엔티티로 provider별 사용자 식별자 관리, **UserSocialRepository **로 CRUD 수행 |
회원탈퇴 이벤트 처리 | RabbitMQ로 전달된 user.withdrawn 이벤트를 **AuthUserEventConsumer **가 수신하여 매핑 정보 삭제 |
Slack 알림 | 이벤트 소비 실패 시 **SlackNotifier **가 Slack 채널로 오류 정보 전송 |
📁 com.example.momo.domain.auth
├── 📁 application/ # 애플리케이션 서비스
│ ├── AuthService.java # 로그인 처리
│ ├── OAuth2UserService.java # OAuth2 사용자 정보 로딩 및 연동
│ └── 📁 dto/ # 요청/응답 DTO
│ ├── LoginRequestDto.java
│ ├── LoginResponseDto.java
│ ├── CustomOAuth2User.java
│ ├── OAuth2Response.java
│ ├── GoogleOAuth2Dto.java
│ ├── NaverOAuth2Dto.java
│ └── AuthUser.java
├── 📁 domain/ # 도메인 엔티티
│ └── UserSocial.java # 사용자-소셜 계정 매핑
├── 📁 infra/ # 인프라스트럭처
│ └── UserSocialRepository.java # JPA 리포지토리
├── 📁 presentation/ # 프레젠테이션 레이어
│ └── AuthController.java # /auth/login, /auth/reissue
├── 📁 event/ # RabbitMQ 이벤트 처리
│ ├── 📁 config/
│ │ └── AuthRabbitMQConfig.java # 큐/익스체인지 설정
│ └── 📁 consumer/
│ └── AuthUserEventConsumer.java # user.withdrawn 이벤트 소비
├── 📁 slack/ # Slack 알림
│ └── SlackNotifier.java
└── 📁 exception/
├── AuthException.java
└── AuthExceptionHandler.java
AuthController.login()
→ AuthService.loginUser()
JwtTokenProvider
)AuthController.reissueToken()
OAuth2UserService.loadUser()
OAuth2Response
변환