포스트

Session and JWT

두 방식의 공통점

세션과 JWT는 모두 “HTTP가 기본적으로 상태를 기억하지 않는다”는 문제를 보완하기 위한 장치다. 사용자가 로그인한 뒤 다음 요청에서도 인증 상태를 이어가려면, 서버나 토큰 어딘가에 인증 정보를 유지해야 한다.

세션 기반 인증

세션 방식에서는 서버가 로그인 상태를 저장한다.

흐름은 보통 다음과 같다.

  1. 사용자가 로그인 요청을 보낸다.
  2. 서버가 인증에 성공하면 세션 저장소에 로그인 상태를 만든다.
  3. 브라우저에는 세션 ID가 담긴 쿠키를 내려준다.
  4. 이후 요청마다 쿠키가 함께 전달된다.
  5. 서버는 세션 ID로 사용자 상태를 조회한다.

장점:

  • 서버가 즉시 로그인 상태를 폐기하기 쉽다.
  • 권한 변경과 강제 로그아웃에 유리하다.
  • 민감한 정보를 토큰에 담지 않아도 된다.

단점:

  • 서버나 세션 저장소가 상태를 유지해야 한다.
  • 분산 환경에서 세션 공유 전략이 필요하다.

JWT 기반 인증

JWT 방식에서는 인증 정보를 토큰 안에 담아 전달한다. 서버는 토큰 서명과 만료 시간을 검증하고, 별도의 세션 조회 없이 요청을 처리할 수 있다.

장점:

  • 서버가 상태를 덜 가지는 구조에 유리하다.
  • 서비스 간 토큰 전달이 쉽다.
  • 로컬 검증이 가능해 확장성이 좋다.

단점:

  • 발급한 토큰을 즉시 폐기하기 어렵다.
  • 토큰 크기가 커질 수 있다.
  • 만료 전략과 재발급 전략이 중요하다.

무엇을 기준으로 고를까

다음 질문으로 판단하면 된다.

  • 강제 로그아웃이 자주 필요한가
  • 여러 서비스에서 토큰 검증이 자주 일어나는가
  • 중앙 세션 저장소 운영 비용을 감당할 수 있는가
  • 짧은 만료와 재발급 전략을 설계할 수 있는가

정리

세션은 통제에 강하고, JWT는 분산 검증에 강하다. 둘 중 하나가 항상 우월한 것은 아니다. 인증 시스템에서 더 중요하게 보는 비용이 무엇인지에 따라 선택이 달라진다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

댓글

아직 댓글이 없습니다