Session vs JWT 비교

moon.kick·2025년 4월 16일

좋은 질문! 요즘은 JWT, OAuth2, 토큰 기반 인증이 대세처럼 보이지만,
Session(세션)아직도 많이 쓰이고 있고,
특정 상황에서는 더 적합한 선택이기도 해.
즉, "안 쓴다"는 오해고, "용도에 따라 다르게 쓰는 것"이 맞아.


💡 요약: "세션 안 써?" → ❌아니, 아직도 쓴다!


🧠 Session vs JWT 비교 요약

항목SessionJWT (토큰 인증)
📍 저장 위치서버 (메모리, Redis 등)클라이언트 (토큰 자체 보관)
🔄 서버 확장 시세션 공유 필요 (Redis로 해결)stateless라 서버 확장에 유리
✅ 인증 확인 방법세션 ID로 서버가 상태 기억토큰 검증으로 인증 처리
🔒 보안서버 관리하므로 안전토큰 탈취되면 위험, 블랙리스트 등 필요
🔄 만료 관리서버가 세션 만료 관리클라이언트가 토큰 재발급 요청
🧠 사용 난이도쉬움 (Spring Boot에서 자동 지원)복잡함 (토큰 발급/검증/재발급 등 수동)
💬 실시간 지원서버가 상태 기억 (예: 실시간 알림 등 가능)무상태라 어려움 (추가 로직 필요)

✅ 지금도 세션을 쓰는 대표적인 경우

프로젝트 상황세션 선호 이유
🧑‍💼 사내 인트라넷인증 서버 따로 두기 귀찮고, 내부망이라 보안 이슈 적음
🧼 간단한 로그인 시스템스프링 기본 세션 사용하면 간단하게 구현 가능
👨‍👨‍👧‍👦 로그인이 많은 대중적인 웹 서비스Redis로 세션 분산 관리해서 빠르게 처리 가능
🏦 은행/보안 사이트세션 만료시간 + 재로그인 정책이 깔끔함

🔄 Spring에서 세션 아직도 많이 쓰이는 이유

  • Spring Security 기본 설정이 세션 기반
  • 로그인 후 SecurityContext에 저장되는 인증 객체도 세션 기반
  • Spring Session + Redis 설정하면 수평 확장도 문제없음
  • 상태가 필요한 경우 (예: 관리자 감시용 실시간 접속자 추적) 세션이 유리

✅ JWT가 세션을 완전히 대체할 수 없다고 보는 이유

  • JWT는 서버가 상태를 기억 못함 → 실시간 제어가 어려움
  • 유효기간 내엔 무조건 유효 → 로그아웃 구현이 복잡함
  • Redis로 블랙리스트 관리해도 결국 "토큰 관리서버" 필요

🔐 요즘 추천하는 구성

토큰 인증이 필요할 때세션 인증이 더 나을 때
SPA, 모바일, 마이크로서비스전통적 웹, 단일 앱, 보안 강화
인증 서버 따로 운영서버가 상태 기억할 때 유리
클라이언트 위주 로직서버 제어/정책 강화 필요

✨ 결론

세션은 아직도 현역이야. 단지 "무조건 JWT"가 아니라
"서비스 성격에 따라 세션과 토큰을 적절히 고르는 시대"인 거지.


원하면

  • Spring Boot에서 세션 기본 인증 구조
  • Redis 세션 스토리지 구성 방법
  • 세션 기반 로그인 흐름 + 로그아웃 처리 예시

이런 것도 보여줄 수 있어!
너 지금 만들고 있는 서비스가 JWT 중심이야, 아니면 서버 중심으로 세션도 고민해보고 싶어? 😎

profile
@mgkick

0개의 댓글