2012-02-17 3 views
0

내 게시물을보고 주셔서 감사합니다.특정 세션 ID로 세션 생성

라이센스 문제로 인해 회색 영역으로 인해 두 개의 tomcat 인스턴스가 실행됩니다. 나는 아파치 프록시를 사용하여이 둘 사이의 통신을 원활하게한다.

App1은 tomcatA에 살고 있습니다. App2는 tomcatB에 살고 있습니다.

두 가지 모두 사용자 인증이 필요하며 데이터 저장을 위해 세션을 사용합니다. App1은 외부 세계에 보이는 유일한 것이며 App2에 제공되는 모든 요청은 App1의 JavaScript에 의해 생성됩니다. 불행히도 App1은 세션을 가지고 있으며 App2의 모든 요청에 ​​특정 JSESSIONID를 보냅니다. App2에 특정 ID를 가진 세션이 없기 때문에 오류와 함께 반환됩니다.

특정 ID로 세션을 초기화 할 수있는 방법이 있습니까? 모든 요청을 수정하여 올바른 세션 ID를 헤더에 넣을 수있는 방법이 있습니까?

편집 : 특정 세션 ID가있는 App1에서 들어오는 요청이 App2에서 만든 세션에 매핑된다는 것을 인식하려면 App2가 필요합니다.

답변

1

tomcatB에 대해 다른 세션 쿠키 이름 (또는 가능한 경우 경로)을 사용할 수 있습니다. 따라서 tomcatB는 JSESSIONID 쿠키를 다른 쿠키로 간주하고 세션 쿠키로 간주하지 않습니다.

http://tomcat.apache.org/tomcat-7.0-doc/config/context.html을 참조하십시오.

2

두 응용 프로그램이 같은 Tomcat에 살았더라도 세션은 응용 프로그램별로 발행 될 때와 다를 수 있습니다. 개인적으로, 나는이 디자인에 완전히 확신하지 못했습니다.

질문이 다른 앱에 인증을 전파하는 방법 인 경우 Josso이나 CAS와 같은 싱글 사인온 애플리케이션을 사용하십시오. 세션 데이터를 공유하려면 두 응용 프로그램에서 액세스 할 수 있고 JSON을 통해 액세스 할 수있는 중앙 집중식 캐시를 사용할 수 있습니다.

네, 세션 데이터가 잘못되었습니다.

업데이트 : 업데이트 :다음과 같은 핸드 셰이크 프로토콜을 구현하기 만하면됩니다. app2/register/{app1 session id} -이 시점에서 두 세션 ID를 모두 보유하고 있으며 상호 연관시킬 수 있습니다. 이것은 세션 리스너에서도 수행 할 수 있습니다.

+0

나는 디자인 중 하나를 좋아하지 않지만, 곧 협동 인턴으로 곧 떠날 예정이다. 나는 완전히 재 설계 할 선택과 시간이별로 없다. 두 세션간에 데이터를 공유 할 필요가 없으며 동일한 방법으로 인증 할 필요가 없습니다. 나는 그 질문을 명확히하기 위해 편집했다. – Monir

+0

SESSION 데이터가 사용되므로 특정 정보가 필요할 때마다 데이터베이스를 쿼리 할 필요가 없습니다. 데이터를 지속하는 구조를 구현할 필요가 없었던만큼 작습니다. – Monir

+1

편집을 통해 달성하고자하는 것을 더 잘 이해하게되었습니다. App1 세션과 App2 세션을 상호 연관 시키려고합니다. 나는 그것을 반영하기 위해 답을 편집했다. –