2013년 9월 3일 화요일

Session Cluster에서 JSESSIONID 충돌로 인한 브라우저에서 세션값을 읽어버리는 현상


보통 ND의 경우 잘 안일어나는 현상은 아니지만, 현재 같은 도메인에서 컨텍스트 루트만 다른게 주어 사용하는데 한 브라우저에서
첫번째 서비스 이용중 두번째 서비스로 접근시 해당 브라우저 세션값하고 서버 세션값을 비교하면서 해당 부분이 같아 충돌 하는 현상이 보임.

해결 방안

1. 서버간 JSESSIONID값을 다른게 주어 셋팅
2. 애플리케이션간 JSESSIONID값을 다른게 주어 셋팅


1. 서버간 JSESSIONID 셋팅
서버 > Application Server > server1 > 세션 관리 화면에서 “쿠키사용가능”을 선택 하고 보면
안의 쿠키이름이 “JSESSIONID”라고 되어있는걸 확인 할 수 있다.
이 부분을 서로 다르게 주어 충돌 현상을 방지 할 수있다.

예)

WAS BOX1 server1 = JSESSIONID1
WAS BOX2 server2 = JSESSIONID2
WAS BOX1 server3 = JSESSIONID3
WAS BOX2 server4 = JSESSIONID4

2. 애플리케이션간 JSESSIONID 셋팅
엔터프라이즈 응용프로그램 > 응용프로그램명 > 세션 관리 화면에서 "쿠키사용가능:을 선택 해서
쿠키경로를 다른 이름으로 각각 셋팅해 주고,
어플리케이션 레벨의 세션관리로 이동하여 “세션 관리 대체” 를 체크
이부분을 체크하면 서버단의 JSESSIONID 를 읽지 않고 어플리케이션 단의 JSESSIONID를 읽게 된다.
이후 각각의 어플리케이션 마다 JSESSIONID를 틀리게 준다.


** 작업 후 플로그인 재생성 및 배포가 필요함

수 작업으로 진행한 경우 플로그인 파일에서 해당 부분만 맞추어 수정 하면됨.
<UriGroup Name="uswsup_host_uswsup02_uswwcmp02Node02_Cluster_URIs">
<Uri AffinityCookie="JSESSIONID1" AffinityURLIdentifier="jsessionid" Name="/*"/>
</UriGroup>

댓글 없음:

댓글 쓰기