JsessionID & JWT와의 차이

carlkim·2024년 1월 11일
1

WAS

목록 보기
1/12

JSESSIONID란?

  • 톰캣 컨테이너에서 세션을 유지하기 위해 발급하는 키

  • HTTP 프로토콜은 stateless하다.
    요청시마다 새로운 연결이 생성되고 응답후 연결은 끊기게 되므로 상태를 유지할 수 없다.

  • 따라서, 상태를 저장하기 위해서 톰캣은 JSESSIONID 쿠키를 클라이언트에게 발급해주고 이 값을 통해 세션을 유지할 수 있도록 한다.

-- 클라이언트는 쿠키에 담긴 Jessionid를 식별자를 서버에 전송하여 세션을 식별하고 유지한다.

동작방식에 대해서

1. 브라우저에 최초 접근시 톰캣은 Response 헤더에 다음과 같이 JSESSIONID값이 발급된다.

Set-Cookie: JSESSIONID=3CB361E0BE1A9A7DE7DB926DF0772BAE

  1. 브라우저 재요청시 Response를 통해 받은 JSESSIONID를 Request 헤더의 쿠키에 값을 넣어 서버에 요청한다.

쿠키를 통해 JSESSIONID값을 전달받게 되면 서버는 새로운 JSESSIONID 값을 Response 헤더에 발급하지 않는다.

  1. 클라이언트로부터 전달받은 JSESSIONID값을 기준으로 서버에서는 세션 메모리 영역에 상태를 유지할 값들을 저장할 수 있게 된다. (HttpSession 등)

유지범위

  • 동일한 Full 도메인 (서브도메인이 다를 경우 쿠키가 유지되지 않으므로..)
  • 포트번호는 달라도 무관하다.

한계

  • 톰캣 컨테이너를 2대 이상 사용하게 될 경우 세션을 유지할 수 없다. 유지가 되기 위해서는 세션 클러스터링 환경을 구축하여야 한다.

요약

JSESSIONID는 Java 웹 애플리케이션에서 세션 관리를 위한 쿠키로 사용되며, 사용자의 상태를 유지하고 추적하기 위해 사용

jwt와 jession의 차이

jwt와 jession의 차이 요약

간단히 말하면 JSESSIONID는 서버 기반의 세션 식별자로, 서버에서 세션 상태를 유지하며 확장성이 서버 의존적이다. 반면에
JWT는 클라이언트-서버 간의 토큰 기반 방식으로, 서버에 의존성이 낮고 토큰에 유효 기간이 포함되어 있어 서버 상태를 유지하지 않습니다.

profile
가장 나답게 문제해결.

0개의 댓글