1. 기능 개요
- Spring Security 기반 인증/인가 기능을 제공합니다.
- 로그인 방식은 이메일/비밀번호 기반 JSON 로그인과 OAuth2 로그인(Google, Kakao) 을 지원합니다.
- 인증 성공 시 JWT 토큰(Access/Refresh Token) 을 발급하며, Refresh Token은 Redis에 저장합니다.
- 로그아웃 시 Access Token을 블랙리스트 처리하고 Refresh Token을 제거합니다.
- Redis를 활용하여 Refresh Token 저장, Access Token 블랙리스트, 임시 비밀번호 저장 기능을 제공합니다.
- CSRF 보호를 위해 별도의 CSRF 토큰 발급 API를 제공합니다.
- 임시 비밀번호 발급 시 이메일 전송 기능을 제공합니다.
2. API 목록
Method |
Endpoint |
설명 |
POST |
/api/auth/sign-in |
로그인 |
POST |
/api/auth/sign-out |
로그아웃 |
POST |
/api/auth/refresh |
토큰 재발급 |
POST |
/api/auth/reset-password |
비밀번호 초기화 |
GET |
/api/auth/me |
엑세스 토큰 조회 |
GET |
/api/auth/csrf |
CSRF 토큰 조회 |
3. 기능별 상세 설계
📌 로그인 및 인증
(1) JSON 로그인
- API:
POST /api/auth/sign-in
- 작업 요약
JsonUsernamePasswordAuthenticationFilter
에서 요청(JSON: email, password) 처리
CustomAuthenticationProvider
가 DB 사용자 조회 및 비밀번호 검증
- 성공 시
JwtLoginSuccessHandler
에서 Access/Refresh Token 발급 및 저장
- 실패 시
CustomLoginFailureHandler
에서 예외 응답 반환
- 사용 클래스
- 인증 처리:
JsonUsernamePasswordAuthenticationFilter
, CustomAuthenticationProvider
, CustomUserDetailsService
, CustomUserDetails
- 핸들러:
JwtLoginSuccessHandler
, CustomLoginFailureHandler
- 요청/응답 DTO:
SignInRequest
, SignInResponse
- 토큰:
JwtTokenProvider
- 보안 설정:
SecurityConfig
(2) OAuth2 로그인
- 작업 요약
- 외부 제공자(Google, Kakao) 인증 후
CustomOAuth2UserService
가 사용자 정보 조회/생성
- 로그인 성공 시
OAuth2JwtLoginSuccessHandler
가 토큰 발급 및 Redis 저장