💬 LANGUAGES/JAVA

[Tomcat] JSESSIONID, Cookie 쿠키

삶감 2022. 7. 12. 08:48

1. JSESSIONID란?

  • Tomcat 컨테이너에서 세션을 유지하기 위해 발급하는 키
  • HTTP는 stateless하기 떄문에, 새로운 연결이 생성되면 이전 연결은 끊기기 때문에 상태를 유지할 수 없는 문제를 해결하기 위함

 

2. JSESSIONID의 동작방식

  1. 브라우저 최초 접근 -> Tomcat: Response 헤더에 JSESSIONID 값 발급
    Set-Cookie: JSESSIONID=3CB361E0BE1A9A7DE7DB926DF0772BAE
  2. 브라우저 재 요청 시 Response를 통해 받은 JSESSIONID를 Request 헤더의 쿠키에 값을 넣어 서버에 요청. 쿠키를 통해 JSESSIONID를 전달 받으면 서버는 새 JSESSIONID를 발급하지 않는다.
  3. 서버는 클라이언트에게서 전달받은 JSESSIONID를 기준으로 세션 메모리 영역에 상태를 유지할 값들(HttpSession 등)을 저장

 

3. JSESSIONID 유지범위

  • 동일한 Full 도메인 (서브도메인이 다를 경우 쿠키가 유지되지 않음)
  • 포트 번호 무관

 

4. JSESSIONID의 한계

  • Tomcat 컨테이너를 2대 이상 사용할 경우 세션 유지 불가.
    -> 유지를 위해서 세션 클러스터링 환경을 구축해야함

 


 

Cookie

1. Cookie란?

  • 클라이언트 소유
  • 서버에 Request 보낼 시 자동으로 헤더에 포함되어 전송됨
  • 주로 서버의 필요에 의해 클라이언트에 생성하도록 지시 (Set-Cookie) ex. JSESSIONID
  • HttpOnly, Secure 속성은 서버 -> 클라이언트로 전송. 클라이언트 -> 서버는 값을 주지 않음.
    => 디버깅 창에서 Response 속성으로만 확인 가능
  • Tomcat 8.5 <=
    • httpOnly 기본값=true : JavaScript로 탈취 불가
    • secure=true : https로만 전송됨
  • 세션 쿠키, 영구적 쿠키
    • 세션 쿠키 : 만료시각 X, 메모리 저장, 브라우저 닫으면 삭제됨
    • 영구적 쿠키 : 만료시각 O, 파일 저장

 

 

 

참고자료

728x90
728x90