Session and JWT
두 방식의 공통점
세션과 JWT는 모두 “HTTP가 기본적으로 상태를 기억하지 않는다”는 문제를 보완하기 위한 장치다. 사용자가 로그인한 뒤 다음 요청에서도 인증 상태를 이어가려면, 서버나 토큰 어딘가에 인증 정보를 유지해야 한다.
세션 기반 인증
세션 방식에서는 서버가 로그인 상태를 저장한다.
흐름은 보통 다음과 같다.
- 사용자가 로그인 요청을 보낸다.
- 서버가 인증에 성공하면 세션 저장소에 로그인 상태를 만든다.
- 브라우저에는 세션 ID가 담긴 쿠키를 내려준다.
- 이후 요청마다 쿠키가 함께 전달된다.
- 서버는 세션 ID로 사용자 상태를 조회한다.
장점:
- 서버가 즉시 로그인 상태를 폐기하기 쉽다.
- 권한 변경과 강제 로그아웃에 유리하다.
- 민감한 정보를 토큰에 담지 않아도 된다.
단점:
- 서버나 세션 저장소가 상태를 유지해야 한다.
- 분산 환경에서 세션 공유 전략이 필요하다.
JWT 기반 인증
JWT 방식에서는 인증 정보를 토큰 안에 담아 전달한다. 서버는 토큰 서명과 만료 시간을 검증하고, 별도의 세션 조회 없이 요청을 처리할 수 있다.
장점:
- 서버가 상태를 덜 가지는 구조에 유리하다.
- 서비스 간 토큰 전달이 쉽다.
- 로컬 검증이 가능해 확장성이 좋다.
단점:
- 발급한 토큰을 즉시 폐기하기 어렵다.
- 토큰 크기가 커질 수 있다.
- 만료 전략과 재발급 전략이 중요하다.
무엇을 기준으로 고를까
다음 질문으로 판단하면 된다.
- 강제 로그아웃이 자주 필요한가
- 여러 서비스에서 토큰 검증이 자주 일어나는가
- 중앙 세션 저장소 운영 비용을 감당할 수 있는가
- 짧은 만료와 재발급 전략을 설계할 수 있는가
정리
세션은 통제에 강하고, JWT는 분산 검증에 강하다. 둘 중 하나가 항상 우월한 것은 아니다. 인증 시스템에서 더 중요하게 보는 비용이 무엇인지에 따라 선택이 달라진다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
댓글
아직 댓글이 없습니다