2010-11-24 4 views
8

저는이 문제를 2 일 동안 지금 작업하고 있으며 여기에있는 누구나 비슷한 문제와 해결책이 있기를 기대합니다.Tomcat이 모든 요청에 ​​대해 새 세션을 만듭니다.

문제 : 그것은 시작 페이지가 (HTML의 메타 새로 고침 태그를 사용하여)를 JSP 페이지로 고객을 리디렉션 요청되면 톰캣 6 에서 실행되는 스프링 MVC (2.5.6.) 웹 응용 프로그램,의 많은 Ajax 요청 (Framework : Prototype)으로 내용을로드합니다. 문제는 Tomcat이 모든 AJAX 요청 (약 67 세션)에 대해 새로운 세션을 생성한다는 것입니다. 내 첫번째 생각은 시작 페이지가로드 된 후 세션 쿠키가 저장되고 Ajax 요청은 새로운 세션을 생성하기 위해 Tomcat을 강제이었다. 내 접근 방식은 손으로 세션 쿠키를 만드는 것이지만 아무런 차이가 없었습니다. 재미있는 점은 다른 tomcat 인스턴스에서는 작동하지만 통합 테스트에서는 원하는 환경에서는 작동하지 않는다는 것입니다. 제 의견으로는 Tomcat 구성 문제입니다.

Request Header 1: 
Cookie JSESSIONID=F3206CBF2C961E125821FF22FA31A02D 

Response Header 1: 
Set-Cookie JSESSIONID=49E000B4D6880F4F94531AB9C78DB667; Path=/JOCA-Music-Portal JSESSIONID=50B5EA0BCFE811C744CE9C1F9EDE0097; Path=/JOCA-Music-Portal 

Request Header 2: 
Cookie JSESSIONID=50B5EA0BCFE811C744CE9C1F9EDE0097 

Response Header 2: 
Set-Cookie JSESSIONID=DCCA2D1B98D11223A6B8855800276E27; Path=/JOCA-Music-Portal 

UPDATE : 추가 조사가 문제를 격리

파이어 버그와 추가 조사 후, 나는 톰캣 오른쪽 JSESSIONID가 여기에 옮겨진 경우에도 모든 요청에 ​​대해 새로운 세션 (50B5EA0BCFE811C744CE9C1F9EDE0097)을 생성 것을 발견 Tomcat 영역 구성. 우리는 로그인을 위해 JDBC 영역을 사용합니다. 로그인이 비활성화되면 하나의 세션 만 생성됩니다. 활성화 된 경우 Tomcat은 유효하지 않거나 만료 된 세션을 생성하므로 각 요청마다 새 세션이 생성됩니다. 하지만 Tomcat이 왜 이런 식으로 행동합니까?

저는 정말 절망적입니다. 그래서 어떤 생각/힌트/해결책도 높이 평가됩니다.

당신이 클라이언트와 서버 사이의 analyze the HTTP traffic에 시도 할 수

+0

에서 상속받은 클래스의 생성자에서 명시 적으로 해제하는 것이 었습니다. –

답변

3

대단히 감사합니다. 요청 및 응답에서 쿠키 헤더가 올바르게 설정되었는지 확인하십시오.

Firefox를 사용하는 경우 Firebug으로 디버그를 시도 할 수 있습니다.

+0

우선 먼저 답변 해 주셔서 감사합니다. 쿠키 헤더가 올바르게 설정되었고, 방화범이 끌 렸습니다. 다른 환경에서는 문제없이 작동하지만 통합 테스트 환경에서는 작동하지 않는다는 점을 잊어 버렸습니다. – Fabe

+0

Tomcat 설정의 ''섹션에'cookies = false'가 있습니까? 'useHttpOnly'의 가치는 무엇입니까? – gawi

+0

아니요 /META-INF/context.xml에 컨텍스트 섹션을 정의하지 않았으므로 쿠키와 useHttpOnly가 설정되지 않았습니다. context.xml을 정의해야합니까? – Fabe

2

우리는 최근에 우리가 개발 한 응용 프로그램과 같은 문제 다 퉜다. 확인해 보니, Tomcat이 세션 고정 공격을 막기 위해 수정되었다는 것이 문제입니다. 기본적으로 인증시 새 세션 ID가 만들어집니다. 이것은 6.0.21에서 시작되었습니다. 컨텍스트 구성 옵션 'changeSessionIdOnAuthentication'(tomcat bug/issue는 https://issues.apache.org/bugzilla/show_bug.cgi?id=45255입니다.)을 확인하십시오.

+0

대단히 고마워요! - 제가 알아 봅니다;) – Fabe

0

동일한 EXTERNALSSO 인증을 사용할 때와 동일한 문제가 발생했습니다. 해결 방법은 org.apache.catalina.authenticator.AuthenticatorBase :

관련 문제