
SNS 인증/인가 설계 요약 (Redis 통합 세션 스토리지)
배경
- 분산 서버(멀티 인스턴스) 환경에서 일관된 인증 상태를 유지하고,
- 서버 주도권으로 즉시 무효화/권한 변경 반영,
- 로그인 유지 경험(세션 만료 뒤에도 재접속 시 유지)을 제공하기 위해 설계.
핵심 결정
- Redis를 통합 세션 스토리지로 채택하여 인증·인가의 단일 사실원장(Source of Truth)로 사용.
- 세션 + 리프레시 토큰 조합: 세션은 로그인 상태 관리, 리프레시는 로그인 연장/재발급에 사용.
채택한 이유
- 분산 환경에서의 안전한 인증
- 중앙(통합) 세션으로 모든 인스턴스가 동일 기준으로 인증 판단 → 스티키 세션 불필요, 확장 용이.
- 서버 주도권 확보(즉시 무효화/권한 변경 반영)
- JWT 단독은 만료 전까지 토큰이 유효하기 쉬움.
- 비밀번호 변경·계정잠금 시 Redis 세션을 통해 곧바로 차단 가능.
- 세션 만료 후 자동 연장
- 리프레시 토큰으로 세션 재발급 → 사용자는 재로그인 부담 감소.
- (정책적으로) 기기/브라우저별 로그인 유지 기간을 제어 가능.
동작 흐름
- 로그인 성공 → Redis 세션 생성(사용자, 권한, 만료정보 등).
- 세션 만료 시 → 리프레시 토큰으로 재발급(정책과 보안검증 통과 시).
- 비번 변경/권한 변경/로그아웃 → 해당 세션(및 패밀리) 즉시 무효화.
Sequence Diagram

'spring' 카테고리의 다른 글
| [Spring] spring-core 직접 구현해보기 - (0) (5) | 2025.12.31 |
|---|---|
| [Spring] 통합 테스트 속도 개선 (2) | 2025.12.15 |
| [spring] 1:1 실시간 채팅 구현 (2) | 2025.09.17 |
| [Spring] virtual thread vs webflux (3) | 2025.08.11 |
| mock대신 spy를 사용한 이유 (2) | 2025.08.06 |