가희의자기개발블로그

JSESSIONID 본문

백엔드/JSP

JSESSIONID

가희gahui 2020. 7. 7. 19:41
반응형

1_JSESSIONID 란?

톰캣 컨테이너에서 세션을 유지하기 위해 발급하는 키이다. 즉, 세션에서 사용되는 쿠키이름이다. 쿠키는 클라이언트에 그리고 세션은 서버에 저장되는 걸로 알고있는게 일반적이고, 그러므로 쿠키보단 세션이 보안에 좋다고 이전에 공부했다. 하지만 세션 또한, 쿠키 형태로 서버와 클라이언트간에 주고 받는다.

 

HTTP 프로토콜은 stateless(무상태)하다. 즉, 상태정보를 유지하지 않는다는 말로, 사용자는 매번 서버에 요청을 할때마다 응답을 받는 순간 연결을 끊어버리고 서버의 입장에서는 요청을 하는 사용자가 누구인지 알지 못한다. 따라서 톰캣은 JSESSIONID 쿠키를 클라이언트에게 발급해주고 이 값을 통해 세션을 유지 할 수 있게 한다. 사실 이 방법 외에도 , URL Rewritng, 세션 방법을 사용한다. 

 

2_ 동작방식

2_1 쿠키 형태로 전송되는 JSESSIONID

1. 사용자가 웹 페이지 URL 입력 후 서버에 요청한다.

2. 서버에서 요청한 사용자가 최초로 요청했다고 판단되면 톰캣은 Response 헤더에 다음과 같이 JSESSIONID값이 발급된다.

Set-Cookie: JSESSIONID=3CB361E0BE1A9A7DE7DB926DF0772BAE

3. 전달된 JSESSIONID값은 쿠키 형태로 사용자의 매번 요청때마다 서버에 전달된다. 즉, 재요청시 Response를 통해 받은 jsessionid를 Request헤더의 쿠키에 값을 넣어 서버에 요청한다. 

4. 사용자에게 전달 받은 JSESSIONID값으로 동일한 사용자의 요청인지를 판단하여 사용자 정보를 유지한다. 

 

2_2 URL과 함께 전송되는 JSESSIONID(URL 재작성, URL rewritng)

1. 사용자가 웹 페이지 URL을 서버에 요청 후 response.encodeURL(URL) 메소드로 구현된 링크에 JSESSIONID값이 붙게 된다. (최초 요청에 따른 서버에서의 JSESSIONID 전달)

2. URL에 붙게 되는 JSESSIONID를 서버에 요청할때마다 전달함

3. 사용자에게 전달 받은 JSESSIONID값으로 동일한 사용자의 요청인지를 판단하여 사용자 정보를 유지

 

 jsessionid 값이 URL이 틀리거나 없을 시 서버와의 세션이 끊어짐.

※ encodeURL 메소드는 지능적으로 작동하는데 현재 웹 애플리케이션 URL이 아니면 jsessionid 값이 붙지 않고, 본래의 URL (http://localhost:8080/stone.jsp), 상대경로 (stone.jsp), 절대경로 (/stone.jsp) 이러한 모든 경우에는 jsessionid 값을 붙게 된다. 

 

 

jsessionid 는 WAS에서 생성되어 전송되기 때문에 WAS 별로 다를 수 있습니다.

또한 프로그래밍 언어별로 값이 아닌 파라미터명이 다를 수 있습니다. 

(예를 들어 PHP인 경우 PHPSESSID)

3_ 유지범위

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

반응형

'백엔드 > JSP' 카테고리의 다른 글

Servlet  (0) 2020.07.13
한글처리  (0) 2020.07.09
기초- JSP프로젝트 구조  (0) 2020.06.16
MVC  (0) 2020.06.16
Connection Pool  (0) 2020.06.12
Comments