시스템 구성은 다음과 같다.
아파치 - 톰켓 ___ test.co.kr 홈페이지
|__ biz.test.co.kr 홈페이지
하나의 톰켓 instance 위에 서비스 되었던 test.co.kr에 추가로 biz.test.co.kr 서비스를 탑재하였다.
헌데 이상한 현상이 발생하였다.
biz.test.co.kr 홈페이지 접속하여 로그인 한 후 test.co.kr로 접속하면 세션 공유 현상이 발생하지 않았는데
다음과 같은 방법으로 테스트를 해보면 세션 공유 현상이 발생했다.
- test.co.kr 접속
- biz.test.co.kr 접속 후 로그인
- 다시 test.co.kr 접속하면 로그인이 되어 있는 현상
위에서 정의된 메인 도메인과 서브 도메인은 서로 다른 서비스를 위해서 구축된 것이기 때문에 세션 공유가 발생하면 안 된다.
원인을 파악해 보니 다음과 같았다.
- test.co.kr 접속하면 Response header에 jsessionId 쿠키 값을 톰켓에서 발급
- biz.test.co.kr 접속하면 위에서 발급 받은 jsessionId 쿠키 값을 Request header에 담아 톰켓 서버로 전송
- biz.test.co.kr 에서 로그인을 하면 해당 jsessionId 값이 tomcat의 세션 객체에 저장
- test.co.kr로 다시 접속하면 Request header에 기존 발급 받은 jsessionId 쿠키 값을 전송
- Request header에 있는 jsessionId 값이 톰켓의 세션 객체에 존재하기 때문에 화면 상에서는 로그인이 되어 있는 것으로 보임
결국 test.co.kr 로 사용자가 접근을 하게 되면 www.test.co.kr로 redirect해주도록 apache virtualhost 설정을 추가하여 해결하였다.
결론 : 메인 도메인과 서브 도메인은 서로 쿠기를 공유한다.
'프로그래밍' 카테고리의 다른 글
spring 2.5 not supported by MultipartResolver 발생 시 해결 방법 (0) | 2012.10.26 |
---|---|
java generic에서 E와 T 차이 (5) | 2012.10.24 |
getter, setter 자동 생성 라이브러리 lombok (0) | 2012.10.23 |
properties 너가 날 엿 먹이는 구나~ (0) | 2012.04.14 |
ant를 이용한 ftp 업로드 (0) | 2009.04.01 |
Generic과 Auto-boxing (1) | 2009.03.15 |
날짜함수 (0) | 2009.02.21 |
자바의 인터페이스 (0) | 2009.01.26 |