본문으로 바로가기

[Tomcat] JSESSIONID 란? 쿠키란?

category 용어·개념 2019. 6. 25. 12:11

JSESSIONID란?

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

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

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

 

동작방식에 대해서

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

 

Set-Cookie: JSESSIONID=3CB361E0BE1A9A7DE7DB926DF0772BAE

 

2. 브라우저 재요청시 Response를 통해 받은 JSESSIONID를 Request 헤더의 쿠키에 값을 넣어 서버에 요청한다. 쿠키를 통해 JSESSIONID값을 전달받게 되면 서버는 새로운 JSESSIONID 값을 Response 헤더에 발급하지 않는다.

 

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

 

유지범위

- 동일한 Full 도메인 (서브도메인이 다를 경우 쿠키가 유지되지 않으므로..)

- 포트번호는 달라도 무관하다.

 

한계

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



출처: https://pshcode.tistory.com/114 [박성훈의 웹개발]

 

[톰캣] JSESSIONID

JSESSIONID란? - 톰캣 컨테이너에서 세션을 유지하기 위해 발급하는 키 - HTTP 프로토콜은 stateless하다. 요청시마다 새로운 연결이 생성되고 응답후 연결은 끊기게 되므로 상태를 유지할 수 없다. - 따라서, 상..

pshcode.tistory.com

 

쿠키(Cookie)란?

● 요약
 - 쿠키 기본
   1) 기본적으로 클라이언트의 소유
   2) 서버에 요청시 헤더에 자동으로 포함해서 전송됨
   3) 주로 서버단의 필요에 의해 클라이언트에 생성하도록 지시 (Set-Cookie) 
       예:) JSESSIONID
   4) HttpOnly, Secure 속성은 서버→클라이언트로 던져주며, 클라이언트→서버는 값을 주지 않음.
       고로 디버깅 창에서 Response 속성으로만 확인가능

 - Tomcat 8.5 이상 
    1) httpOnly 기본값=true (true이면 JavaScript로 탈취 불가
    2) secure = true 이면 https 로만 전송됨

-  세션 쿠키 vs 영구적 쿠키
    1) 만료시각을 지정하면 영구적 쿠키, 파일 저장
    2) 만료시각이 없으면 세션 쿠키, 메모리 저장, 브라우저 닫으면 삭제됨

출처:
https://stackoverflow.com/questions/26437334/cookies-received-from-server-is-secure-but-cookies-sent-to-server-is-not-secure

...더보기

■ 구글번역:

쿠키는 본질적으로 클라이언트 쪽의 것입니다. 그것들은 서버가 클라이언트에게 "당신이 나에게 요청할 때마다,이 정보 비트를 포함"이라고 말하는 방법입니다. 보안 플래그는 "보안 연결을 통해 나에게 요청할 때마다이 정보 비트를 포함하지만 보안되지 않은 연결을 통해이를 누설하지 마십시오."라고 말합니다. 일치하는 사용자 에이전트, 즉 웹 브라우저는 해당 지시문을 준수해야합니다. 그러나 다른 방법으로는 동등한 지시어가 없습니다. 서버는 클라이언트가 보내는 쿠키로 전혀 아무것도 할 필요가 없으며 서버가 클라이언트에서 쿠키를 설정할 수있는 것과 동일한 "클라이언트가 서버에 쿠키를 설정합니다"는 없습니다. 지시문 (Secure, HttpOnly, Domain, Expires 등)은 쿠키를 설정할 때만 사용됩니다. 

Secure 및 HttpOnly와 같은 쿠키 플래그는 서버에서 클라이언트로만 보내집니다. 당신은 다른 방향으로 가고있는 교통에서 그들을 이제까지 보지 않을 것이다. 쿠키가 안전한 지 확인하려면 브라우저가 HTTPS 대신 HTTP를 통해 요청하고 쿠키가 아직 존재하는지 확인하십시오 (그렇지 않아야 함). 쿠키가 HttpOnly인지 확인하려면 브라우저에서 사이트를 연 다음 dev 도구에서 JS 콘솔을 사용하여 document.cookie의 값을 확인하십시오. 당신은 httponly가 아닌 쿠키만 보여야합니다. 

 

반응형