본문 바로가기
웹 & 인터넷 기초

토큰이냐 세션이냐, 그것이 인증의 문제로다! 🔐 인증 방식 쉽게 비교하기

by logro 2025. 4. 12.
728x90

안녕하세요 logro 입니다 :)

오늘은 로그인할 때 자주 들리는 용어,
“세션 기반 인증”과 “토큰 기반 인증”의 차이를 알아보려고 해요.

이 둘은 로그인 후 인증 상태를 유지하는 방식인데,
처음엔 이름도 비슷하고 개념도 헷갈리기 쉽죠 😵‍💫

하지만! 비유와 함께 하나씩 살펴보면
누구나 쉽게 이해할 수 있어요 🔍


🏪 먼저 비유부터 들어볼까요?

로그인을 놀이공원 입장이라고 생각해봅시다 🎢

🎟️ 세션 기반 인증

→ 놀이공원에서 입장권을 티켓박스에 맡겨놓고,
입장할 때마다 “저 티켓 맡긴 사람입니다~” 하고 인증하는 방식!

  • 사용자는 브라우저에 세션 ID 쿠키를 가지고 다녀요.
  • 서버는 그 세션 ID를 보고 “아, 이 사용자 세션 있네!” 하고 입장 허용
  • 세션 데이터는 서버에 저장됨

💳  토큰 기반 인증 (JWT 등)

→ 티켓을 직접 들고 다니면서, 입장할 때 “이게 내 티켓이에요!” 하고 보여주는 방식!

  • 서버는 로그인할 때 토큰을 발급해주고
  • 사용자는 그 토큰을 클라이언트(브라우저, 앱 등)에 저장
  • 요청마다 토큰을 HTTP 헤더에 넣어서 전송
  • 토큰 안에 정보가 다 담겨 있어서 서버는 별도 저장이 필요 없음!

📦 핵심 구조 비교

항목 세션 기반 인증 토큰 기반 인증 (JWT 등)
인증 정보 저장 위치 서버 (메모리, DB 등) 클라이언트 (브라우저, 앱 등)
상태 유지 방식 상태 유지 (Stateful) 무상태 (Stateless)
확장성 낮음 (서버에 세션 저장 필요) 높음 (서버 저장 불필요)
보안 상대적으로 안전 (서버 통제 가능) 토큰 탈취 시 위험
모바일 호환성 낮음 높음

 


✅ 언제 어떤 걸 쓰면 좋을까?

세션 기반 인증이 어울리는 경우

  • 소규모 웹사이트, 관리용 백오피스
  • 로그인 상태를 엄격하게 서버에서 관리하고 싶을 때

토큰 기반 인증이 어울리는 경우

  • 모바일 앱, SPA(싱글 페이지 애플리케이션)
  • 마이크로서비스 구조, API 서버

⚠️ 주의할 점

  • 토큰 기반 인증은 토큰이 유출되면 누구든 사용 가능하기 때문에
    꼭! HTTPS 사용짧은 만료시간 + 리프레시 토큰 설계가 필요해요.
  • 세션 기반은 서버 리소스를 많이 차지할 수 있어서
    사용자 수가 많을수록 관리가 번거로워질 수 있어요.

🧠 정리하자면!

세션 기반 서버가 기억한다!
토큰 기반 클라이언트가 들고 다닌다!

둘 다 장단점이 있기 때문에
서비스 규모, 구조, 목적에 따라 선택하면 됩니다 😊

728x90