2013-04-26 3 views
0

나는 다음과 같은 요구 사항을- 동적 컨텍스트는

  1. 여러 JAR 파일이 있습니다. 각각 임베디드 부두가 있습니다.
  2. 리버스 프록시 (Apache)를 사용하여 동일한 도메인/포트에서 모두 실행
  3. JAR은 여러 컴퓨터가 (동일한 호스트/포트 아래에서) 다른 컴퓨터에서 실행될 수 있습니다.
  4. 완전한 세션 분리 - 동일한 웹 응용 프로그램의 두 인스턴스간에 절대적으로 공유되지 않습니다.
  5. 이 모든 것을 동적으로 조정하십시오.
  6. 관련성이 있는지는 잘 모르지만 스프링 보안이 일부 웹 앱에서 사용되고 있음을 알고 있습니다.

역방향 프록시 규칙을 추가하고 Apache를 다시 시작하여 모든 것이 실행되고 있습니다. 다음은 webapp-1의 인스턴스 2 개와 webapp-2의 인스턴스 2 개에 대한 간략한 설명입니다.

http://mydomain.com/app1 ==> 1.1.1.1:9099 
http://mydomain.com/app2 ==> 1.1.1.1:9100 
http://mydomain.com/app3 ==> 1.1.1.2:9099 
http://mydomain.com/app4 ==> 1.1.1.2:9100 

성공적으로 설정하면 (거의) JSESSIONID 쿠키에 문제가 발생합니다. 모든 앱이 다른 쿠키를 무시합니다. 즉, 다른 세션에 영향을 미치므로 전체 세션 분리를 달성하지 못했습니다.

온라인으로이 문제에 관해 많이 읽었지 만, 내 시나리오에서는 해결책이 충분하지 않습니다.

나를위한 이상적인 해결책은 쿠키 이름에 대해 일종의 UUID를 사용하도록 JETTY를 정의하는 것입니다. 나는 이것이 왜 디폴트가 아닌지 아직도 알 수 없다.

자바 스크립트 솔루션을 사용해도됩니다. JavaScript에는 ReverseProxy 조작 후 URL을 볼 수있는 이점이 있습니다. 따라서 http://mydomain.com/XXX에 대해서는 쿠키 이름을 XXX_JSESSIONID으로 정의 할 수 있습니다.

그러나 나는 이것들에 관한 하우투를 발견 할 수 없다.

어떻게 해결할 수 있으며 세션을 완전히 분리 할 수 ​​있습니까?

+0

세션 관리에 무엇을 사용하고 있습니까? 부두의 JDBC 세션, 기본 해시 세션 관리자, mongo ... 사용자 정의 하나? 내가 아는 한 –

+0

기본값.브라우저에서 JSESSIONID 쿠키를 볼 수 있습니다. DB를 전혀 사용할 수 없습니다. 나는 커스텀 세션 매니저를 작성하지 않았다. –

답변

1

사용중인 세션 관리자와 그것이 제공하는 기능/이점을 이해해야합니다. 사용할 수있는 db가없고 사용자 정의 세션 관리자가없는 경우 단일 호스트에서만 세션 관리에 사용할 수있는 HashSessionManager를 사용하고 있다고 믿으려고합니다.이 인스턴스에서 jvms를 통한 세션 공유는 없습니다 .

위와 같이 4 개의 개별 jvm 프로세스 (및 HashSessionManager 사용)를 실행하는 경우 노드간에 공유되는 세션이 없음을 나타냅니다.

또한 각 응용 프로그램의 세션 ID 변수의 이름을 변경하려는 것 같습니다. 이를 위해서는 각 응용 프로그램마다 다른 이름을 설정하면됩니다.

http://www.eclipse.org/jetty/documentation/current/session-management.html

각 웹 애플리케이션 컨텍스트에 대한 새로운 org.eclipse.jetty.servlet.SessionCookie 이름을 설정하고 그 즉각적인 문제를 해결해야한다.

+0

안녕하세요. 아마 HashSessionManager를 사용할 것입니다. 하지만 내 질문에 지정된대로 컨텍스트를 변경하는 것은 적합하지 않습니다. 좀 더 역동적 인 것이 필요합니다. 같은 일을 할 수있는 JVM 인수가 있습니까? 세션은 공유되지 않습니다. 더 나 빠지면 오버라이드됩니다. app2에 액세스하면 app1에서 로그 아웃됩니다. 적절한 프로덕션 프로젝트가 다른 쿠키 이름을 정의한다고 가정합니다. 이것이 스프링 보안에 어떤 영향을 줍니까? "JSESSIONID"라는 이름을 하드 코딩하는 모듈이 있습니까? –