문제

기본적으로 tomcat 것입니다 세션을 만들 수 있는 쿠키에 대한 현재의 도메인에 있습니다.

에 있는 경우 www.example.com 쿠키에 대해 생성됩 www.example.com (에서 작동합니다 www.example.com).반면 example.com 그것이 만들어집니다.example.com (을 원하는 행동에 작동합니다 어떤 하위 도메인 example.com 뿐만 아니라 example.com 자).

본 몇 Tomcat 밸브는 것을 차단하기 위해 만들의 세션에 쿠키를 만들 교체 쿠키 정확합니다.example.com 도메인은,그러나 그들의 아무도 보이 완벽하게 작동하고 그들은 모두 나타나 기존 쿠키고 새로 만듭니다.이 의미는 두 가지 JSESSIONID 쿠키가 전송과 각 요청을 합니다.

는데 누군가가 결정적인 이 문제를 해결할 수 있습니다.

도움이 되었습니까?

해결책

이것은 분명히 지원되는 구성 설정을 통해서 6.0.27 이후:

구성에 의해 수행되 편집 META-INF/context.xml

<Context sessionCookiePath="/something" sessionCookieDomain=".domain.tld" />

https://issues.apache.org/bugzilla/show_bug.cgi?id=48379

다른 팁

나는 그냥 갔을 통해 이 모든 것을 찾는 간단한 솔루션을 제공합니다.내가 찾기 시작하에서 톰캣의 관점 첫째.

Tomcat 지 않 직접 액세스를 제공하는 도메인을 구성하는 쿠키에 대한 세션을,그리고 나는 확실히하고 싶지 않았 사용자 지정 패치 tomcat 는 그 문제를 해결하기 위해서와 같이 일부 다른 게시물이 있습니다.

밸브 톰캣에서 또한 문제가있을 것으로 보인 솔루션으로 인해 제한에 액세스하는 헤더를 쿠키로 건설 서블릿 사양에 있습니다.또한 그들은 완전히 실패하는 경우 http 응답은 최선을 다하고하기 전에 전달되는 밸브입니다.

이후 우리는 우리의 요청을 프록시를 통해 아파치는,나는 그때 이동하는 방법을 사용하여 아파치 문제를 해결하는 대신 합니다.

내가 처음 시도하고 mod_proxy directive ProxyPassReverseCookieDomain 지만,그것은 작동하지 않습 JSESSIONID 쿠키기 때문에 tomcat 설정하지 않은 도메인 특성과 ProxyPassReverseCookieDomain 작동할 수 없습니다없이 어떤 종류의 도메인의 일부가되는 쿠키입니다.

나도 전에 와서 해킹을 사용하여 ProxyPassReverseCookiePath 그들이 다시 쓰기 경로를 추가하는 도메인 특성,쿠키지는 느낌을 지저분한 생산 사이트입니다.

내가 마지막으로 작동하도록 재작성하여 응답에 헤더를 사용하여 모듈 mod_headers 에서 아파치에 의해 언급된 데이브 위.

내가 다음 줄을 추가합 내부에 가상호스트 정의:

Header edit Set-Cookie "(JSESSIONID\s?=[^;,]+?)((?:;\s?(?:(?i)Comment|Max-Age|Path|Version|Secure)[^;,]*?)*)(;\s?(?:(?i)Domain\s?=)[^;,]+?)?((?:;\s?(?:(?i)Comment|Max-Age|Path|Version|Secure)[^;,]*?)*)(,|$)" "$1$2; Domain=.example.com$4$5"

위해야 하는 모든 것에 한 줄 config.대체 어떤 JSESSIONID 쿠키 도메인 특성으로".example.com".는 경우 JSESSIONID 쿠키가 포함되지 않은 도메인 특성,그 패턴을 추가 중 하나의 값으로".example.com".보너스로,이 솔루션을 겪지 않에서 두 번 JSESSION 쿠키의 문제는 밸브입니다.

패턴을 작동해야로 여러에서 쿠키를 설정 쿠키는 헤더에 영향을 미치지 않고 다른 쿠키에는 헤더가 있습니다.그것은 또한 수정할 수 있는 작업으로 다른 쿠키를 변경하여 JSESSIONID 의 첫 번째 부분에서 패턴을 이제까지 무엇 쿠키 이름을 욕망이다.

나 reg 전력 사용,그래서 난 몇 가지 최적화 할 수있는 패턴만,그것은 작동하는 것으로 보이 우리를 지금까지.

나는 것입 업데이트하는 경우 게시물을 찾을 버그와 패턴이다.이 중지됩니다 몇 가지에서 당신의 가을 통해 일의 마지막 한 쌍의 좌절감으로 했습니다.

로 이에$DAYJOB.내 경우에는 하고 싶었을 구현 SSL 니다.그런 다음 리디렉션을 비 SSL 페이지입니다.이 핵심적인 문제점을 톰캣에서는 방법(메모리에서)SessionManager.configureSessionCookie 는 하드 드 코드 모든 변수들을 좋아하에 액세스 할 수 있습니다.

나는 몇 가지 아이디어를 함께 포함하여,특히 악명 높은 해킹을 사용하여 mod_headers 에서 아파치를 다시 작성하는 쿠키에 따라 정규 표현식을 사용하고자하는 사람들을 위해.

이 definative 방법으로 이 문제를 해결하는 것을 제출할 수 있는 패치를 tomcat 개발자를 추가하는 구성 매개변수를 SessionManager 클래스입니다.

세션(Id)는 기본적으로 고려의 가치에 대해서만 issueing 응용 프로그램,당신은 오히려한 설정에 추가 쿠키입니다.보 톰캣 SingleSignOnValve 제공하는,추가 쿠키 JSESSIONIDSSO(참고...SSO)서버에 대한 경로가"/"대신에"/applicationName"(로 JSESSIONID 쿠키는 일반적으로 설정).

과 같은 밸브를 구현할 수 있는 모든 프로세스 간의 통신에서 필요를 동기화하기 위해 어떤 상태이 다른 서버에 가상호스트나 웹 어플리케이션에서 톰캣/웹 서버/무엇입니다.

또 다른 이유는 당신이 사용할 수 없습니다 톰캣의 세션을 위해 쿠키를 자신의 목적이,여러 웹 어플리케이션에 동일한 호스트는 서로 다른 세션 id 입니다.E.g.다른 쿠키를 위한"/webapp1"및"/webapp2".제공하는 경우에는"/webapp1"'s 쿠키"/webapp2"이지 않을 찾 세션을 참조,무효화 세션+쿠키 설정한 자신의 새로운 하나입니다.당신은 다시 작성한 모든 톰캣의 세션 처리를 받아들이 외부 세션 id 값(나쁜 생각 securitywise)거나 공유하는 특정 상태로 사용됩니다.

회의 취급을 고려해야한 용기(톰캣)사업이다.어떤 다른 당신이 당신을 필요로 추가해야 방해하지 않고 어떤 컨테이너 필요하다고 생각하는 않습니다.

밸브 기술을 보이지 않는 100%완벽합니다.면 당신이 감히 수정하는 Tomcat 자체:

catalina.jar 에는 다음이 포함 클래스: org.apache.catalina.커넥터에 연결합니다.요청

요청방법:

configureSessionCookie(Cookie cookie)

우리의 환경에 대한 그것이 최선을 다 하드코드 그것은,그러나 당신이 더 많은 일을 할 수 있는 멋진 논리:

cookie.setDomain(".xyz.com");

인을 완벽하게 작동합니다.는 것이 좋을 것이면 이 설정할 수 있게 되었 in tomcat.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top