<aside>
<img src="/icons/reorder_gray.svg" alt="/icons/reorder_gray.svg" width="40px" />
목차
</aside>
1. 배경
중고 거래 및 경매 사이트 제작 프로젝트에서 저는 회원(인증/인가) 도메인에 대한 개발을 담당했습니다. 해당 도메인은 사용자 회원가입, 로그인, 권한 관리, 보안 강화를 목표로 하며, 사용자 경험과 시스템 확장성을 모두 고려해야 했기에 아래와 같은 요구사항을 설정하여 개발을 진행하였습니다.
- 간편하고 안전한 로그인 방식 제공.
- 보안성이 높은 토큰 기반 인증 시스템 구축.
- 서버 부하를 줄이는 상태 비저장 아키텍처 구현.
2. 선택지
(1) 인증 방식
- 선택지 1: 자체 인증 시스템 (이메일/비밀번호 기반)
- 사용자 계정과 비밀번호를 직접 관리하며 Spring Security로 인증 로직을 구현.
- 선택지 2: Google OAuth
- Google의 OAuth 2.0을 활용하여 SSO(Single Sign-On)를 제공.
- 선택지 3: Firebase Authentication
- Google Firebase를 통해 다양한 로그인 옵션(이메일, 소셜 로그인 등)을 지원.
(2) 토큰 관리 전략
- 선택지 1: 단일 리프레시 토큰
- 하나의 리프레시 토큰을 장기간 사용하며 만료 시 재로그인 요구.
- 선택지 2: Refresh Token Rotation (RTR)
- 액세스 토큰 갱신 시 새로운 리프레시 토큰을 발급하고 이전 토큰을 무효화.
- 선택지 3: 세션 기반 인증
- 서버 측 세션 저장소를 사용하여 사용자 상태를 관리.
(3) 보안 프레임워크 및 토큰 형식
- 선택지 1: Spring Security + JWT
- Spring Security로 인증/인가를 관리하고 JWT로 상태 비저장 인증 구현.