보안

세션(Session) 기반 인증과 JWT(JSON Web Token)

타우루스 2026. 2. 22. 15:26

웹 애플리케이션에서 사용자의 로그인 상태를 유지하는 두 가지 핵심 방식인 세션(Session) 기반 인증JWT(JSON Web Token) 기반 인증의 가장 큰 차이는 '사용자의 로그인 상태 정보(State)를 서버와 클라이언트 중 어디에 저장하느냐'입니다.


1. 세션(Session) 기반 인증: 서버가 기억하는 방식 (Stateful)

  • 원리: 사용자가 로그인하면 서버의 메모리나 데이터베이스에 사용자의 인증 정보를 저장하고, 클라이언트(브라우저)에게는 이를 식별할 수 있는 영수증 번호표 같은 '세션 ID(Session ID)'만 쿠키(Cookie)를 통해 발급합니다.

  • 동작 방식: 클라이언트가 API 요청을 보낼 때마다 쿠키에 담긴 세션 ID를 전달하면, 서버는 자신의 저장소(Session DB)를 뒤져 해당 ID가 유효한지, 누구의 것인지 확인한 후 요청을 처리합니다.

  • 비유: 클럽 입장 시 신분증을 확인하고 방문자 명부(서버 DB)에 이름을 적은 뒤, 이름표(세션 ID)를 달아주는 것과 같습니다. 서버(클럽 직원)는 항상 명부를 가지고 일일이 대조해야 합니다.


2. JWT 기반 인증: 클라이언트가 증명하는 방식 (Stateless)

  • 원리: 사용자가 로그인하면 서버는 사용자의 식별 정보와 권한 등을 담아 암호학적으로 서명된 '토큰(JWT)'을 클라이언트에게 발급합니다. 가장 중요한 점은 서버가 발급 후 이 토큰의 상태를 따로 저장하지 않는다는 것입니다.
  • 동작 방식: 클라이언트가 요청을 보낼 때마다 HTTP 헤더에 JWT를 담아 보내면, 서버는 데이터베이스를 매번 조회할 필요 없이 자신이 가진 '비밀키(Secret Key)'로 토큰의 위변조 여부(서명)만 검증하고 요청을 처리합니다.

 

  • 비유: 관공서에서 위조 방지 홀로그램(서명)이 찍힌 주민등록등본(JWT)을 발급해 주는 것과 같습니다. 한 번 발급해주면, 이후 제출받는 기관은 매번 관공서 DB를 뒤지지 않고 홀로그램만 보고 진위를 판별합니다.


3. 세션 vs JWT 핵심 차이점 비교

복잡한 시스템 아키텍처를 설계할 때 반드시 고려해야 하는 두 방식의 트레이드오프(Trade-off)는 다음과 같습니다.

구분 세션(Session) 기반 인증 JWT 기반 인증
상태 저장 위치 서버 (메모리, Redis, DB 등) 클라이언트 (로컬 스토리지, 쿠키 등)
서버 확장성
(Scalability)
낮음. (서버를 늘릴 경우 세션 클러스터링 등 저장소를 공유하는 추가 인프라 구축 필요) 매우 높음. (서버간 세션 공유 불필요, 독립적인 마이크로서비스(MSA) 환경에 최적화)
보안 및 제어력 높음. (서버가 상태를 중앙 통제하므로 해킹 의심 시 즉시 특정 사용자의 세션 만료 및 강제 로그아웃 처리 가능) 낮음. (한 번 발급된 토큰은 유효기간 만료 전까지 서버가 강제 무효화(Revoke)하기 까다로움)
트래픽 및 성능 부하 요청마다 서버가 DB나 인메모리를 조회하는 I/O 부하 발생 데이터베이스 조회 없이 CPU 연산(서명 암호화 검증)만으로 처리 가능
데이터 전송량
(Payload)
작음. (짧은 무작위 문자열인 세션 ID만 전송) 상대적으로 큼. (사용자 정보 등 Claim이 포함되어 네트워크 대역폭을 더 차지함)

두 방식은 어느 하나가 절대적으로 우월한 것이 아니라, 개발하려는 시스템의 아키텍처(Monolithic vs MSA)와 보안 요구사항에 따라 적절히 선택되어야 합니다.

'보안' 카테고리의 다른 글

[보안점검도구]TCP Wrapper(TCP 래퍼)  (0) 2026.02.22
분산 신원 증명(DID, Decentralized Identity)  (0) 2026.02.22
JWT(JSON Web Token)  (0) 2026.02.22
OAuth(Open Authorization)  (0) 2026.02.22
IPSec  (0) 2025.09.20