티스토리 뷰

세션 기반 인증 vs 토큰 기반 인증

세션 기반 인증과 토큰 기반 인증의 차이점

구분 세션 기반 인증 토큰 기반 인증
인증 방식 서버에서 세션 ID 생성 후 클라이언트에 쿠키로 전달하여 세션 관리 서버에서 토큰(JWT 등) 생성 후 클라이언트에 전달, 클라이언트가 토큰을 서버로 전송
서버 상태 상태 저장 방식: 서버가 세션을 관리하며 사용자 상태 유지 상태 비저장 방식: 토큰만으로 인증을 수행하고, 서버는 사용자 상태를 관리하지 않음
저장 위치 서버 메모리 또는 데이터베이스에 세션 정보 저장 클라이언트가 토큰을 저장 (예: 로컬 스토리지, 세션 스토리지)
확장성 서버 자원이 필요하여 사용자 수가 많아지면 확장성에 한계 서버에 상태가 저장되지 않아 확장성이 뛰어나며, 다중 서버 환경에 적합
보안 서버에서 직접 세션을 관리해 보안성이 높지만, 세션 하이재킹 위험 존재 토큰 유출 시 일정 시간 동안 무단 접근이 가능하므로 저장 위치와 보관 방법에 주의가 필요
만료 관리 서버에서 세션 만료를 직접 제어 토큰 만료는 사전에 설정된 시간만큼 지속되며, 중간에 서버에서 토큰을 무효화할 수 없음
로그아웃 처리 서버에서 세션을 삭제하여 즉시 로그아웃 가능 클라이언트에서 토큰을 삭제해야 로그아웃 효과가 있으며, 만료 시간까지 토큰이 유효
적합한 상황 내부 시스템, 보안이 중요한 웹 애플리케이션 모바일 앱, REST API 기반 서비스, 다중 서버 환경

예시 상황

세션 기반 인증 사용 예시: 회사 내부 ERP 시스템, 인트라넷 사이트

토큰 기반 인증 사용 예시: 외부에 REST API 제공 서비스, 모바일 앱, 외부 협력사와 연동되는 서비스