세션과 JWT: 인증 방식의 철학적 차이
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
인증 및 보안
대상자
웹 애플리케이션 개발자, 인증 시스템 설계자
핵심 요약
- 세션(stateful)은 서버가 사용자 정보를 저장하고 관리하는 방식, JWT(stateless)는 클라이언트가 자가포함된 토큰을 보유하는 방식
- 세션은 단일 서버 환경에서 간단하고 보안이 좋지만, JWT는 수평 확장 및 다중 서비스 간 인증에 유리
- JWT는
signed
된 JSON 형식의 토큰으로, 서버가 상태를 기억할 필요가 없음
섹션별 세부 요약
1. 인트로덕션
- 세션과 JWT를 단순한 인증 도구로 보았던 오류를 지적
- stateful vs stateless 개념을 기반으로 차이점을 설명
- 실무에서의 확장성 및 보안 고려사항 강조
2. 세션(stateful)의 원리
- 서버가 session ID를 생성하고 데이터베이스/메모리에 저장
- 브라우저가 쿠키를 통해 session ID 전달, 서버가 상태를 유지
- 단일 서버 환경에서 효과적, 하지만 확장 시 서버 간 상태 공유 문제 발생
3. JWT(stateless)의 원리
- JSON Web Token(JWT)은 클라이언트가 보유하는 자체 포함된 인증 정보
- 서버는 secret key로 토큰의
sign
검증, 상태 저장 필요 없음 - 수평 확장 및 마이크로서비스 아키텍처에 적합, 하지만 토큰 관리 및 보안이 중요
4. 세션 vs JWT 비교
- 세션: 단순한 인증, 보안 강점, 확장성 약점
- JWT: 상태less, 확장성 강점, 보안 이슈(토큰 탈취) 가능성
- 사용 시나리오에 따른 선택 필요 (예: Spring Boot 기반 애플리케이션)
결론
- 세션은 간단한 서버 환경에서 적합, JWT는 확장성과 분산 시스템에서 유리
- JWT 사용 시 토큰 유효성 검증 및 기한 설정 필수
- 시스템 아키텍처와 확장 요구사항에 따라 인증 방식 선택이 철학적 차이로 이어짐