티스토리 뷰

Infra

톰켓 세션 동작원리

wan-blog 2019. 4. 6. 13:56
반응형

톰켓 세션 동작원리

  • 사용자 하드웨어에 저장되는 텍스트이다.
  • 클라이언트가 웹서버에 접근하면 요청한 response로 웹페이지를 전송하면서 쿠키정보도 보내줌.

세션

  • HTTP프로토콜은 비접속형 프로토콜, 매 접속마다 새로운 네트웤 연결이 이루어진다. 그래서 서버는 클라이언트의 이전 상태를 기억하기위해 세션이라는 개념을 사용한다.

웹 어플리케이션에서 개발할때 세션을 이용해서 사용자의 로그인정보의 상태를 유지할 수 있게 한다. 로그인상태를 유지하기 위해서는 서블릿 컨테이너인 tomcat이 내부적으로 어떻게 동작하는지 알아야한다.

  • login페이지를 들어가게되면 HTTP 헤더 response 정보를 보게되면 JSESSIONID값이 톰켓에서 발급되는 쿠키정보를 볼수 있습니다.


<그림 1>

  • 톰켓은 사용자가 로그인을 하지 않아도 최초 접속 시 JSESSIONID쿠키 값을 브라우저에 내려주는 것을 알 수 있다. 이렇게 쿠키를 response해주는 이유는 HTTP 프로토콜의 stateless의 특징 때문이다. 이것은 클라이언트와 서버는 단한번의 요청과 응답으로 연결이 끊어기 때문이다. 그렇기 때문에 서버에서는 사용자의 로그인 인증 여부를 확인할 수 있도록 key값처럼 사용할 수 있는 JSESSIONID값을 클라이언트로 내려줌으로써 이를 통하여 로그인 처리를 한다.


<그림 2>

  • 그림2 화면처럼 쿠키정보를 확인하게되면 JSESSIONID라는 이름으로 쿠키 정보가 저장되어지는 것 을 알수 있다. 로그인 페이지를 reload하면 client 브라우저에 저장되어있는 JSESSIONID쿠키 값을 request header로 전달하며 response로는 JSESSIONID쿠키값을 response하지 않는다.

  • 사용자가 로그인 인증을 하게 되면 서버에서 세션 객체에 JESSIONID쿠키 값을 키로 사용하는 사용자 정보를 메모리 영역에 저장한다. 이와같은 키로 사용되는 세션 아이디값이 메모리에 저장됨으로 여러 페이지를 이동하여도 로그인 상태정보를 유지 할 수 있다.

쿠키 충돌주의

만약 톰켓 인스턴스 3개가 있다고 가정하자.

222.111.111.111:8001

222.111.111.111:8002

222.111.111.111:8003

하나의 애플리케이션에서 로그인 후 또 다른 어플리케이션에 로그인 하면 처음에 로그인 했던 어플리케이션의 세션이 사라져서 자동으로 로그아웃 처리 된 것을 확인할 수 있는데 이는 JSESSIONID 라는 쿠키 이름의 충돌 때문이다.

충돌이 발생하는 이유는 각 애플리케이션의 아이피가 같기 때문이다.
참고로 쿠키는 포트를 구분하지 않기 때문에 8001, 8002, 8003 포트로 서비스를 분리하여도 동일 서비스로 인식하여 로컬에 저장되어 있는 쿠키를 서버로 전송한다.
이를 해결하기 위해서는 server.xml의 context에 다음을 추가하여 각 서비스를 구분하면 위의 문제를 해결할 수 있다.

sessionCookieName="ADMIN_JSESSIONID"

추가적으로 톰켓은 JSESSIONID 쿠키를 풀 도메인으로 셋팅한다. 아래와같이 만약 여러 도메인의 세션을 공유하기 원한다면 server.xml에 설정이 필요하다.

a.test.com <-- JSESSIONID : 11114B1E761B88562A923438B1DA2F17

b.test.com <-- JSESSIONID : 22224B1E761B88562A923438B1DA2F17

c.test.com <-- JSESSIONID : 33334B1E761B88562A923438B1DA2F17

참고


반응형

'Infra' 카테고리의 다른 글

Jenkins 설치방법  (0) 2019.11.04
AWS EC2(Amazon Linux) Java 8 설치하기  (0) 2019.11.02
리눅스 사용자관리및 파일관리  (0) 2019.10.27
AWS EC2 생성 및 서버 접속하기  (0) 2019.10.27
NGINX 1 - NGINX란?  (0) 2019.05.26
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함