2010-11-24 19 views
8

के लिए एक नया सत्र तैयार करता है, मैं इस समस्या पर 2 दिनों के लिए काम कर रहा हूं और मुझे आशा है कि यहां किसी को भी ऐसी ही समस्या होगी और उसके लिए समाधान होगा।टोमकैट प्रत्येक अनुरोध

समस्या: यह एक वसंत MVC (2.5.6।) वेब अनुप्रयोग है, जो बिलाव 6. में चलाता प्रारंभ पृष्ठ का अनुरोध किया जाता है तो यह (एचटीएमएल के मेटा रिफ़्रेश टैग का उपयोग करके) एक JSP पृष्ठ करने के लिए ग्राहक पुनर्निर्देश है जो बहुत सारे अजाक्स अनुरोधों (फ्रेमवर्क: प्रोटोटाइप) के साथ इसकी सामग्री को लोड करता है। समस्या यह है कि टॉमकैट प्रत्येक AJAX अनुरोधों (लगभग 67 सत्र) के लिए एक नया सत्र बनाता है। मेरा पहला विचार था कि सत्र कुकी लोड होने के बाद सत्र कुकी संग्रहीत की जाती है और अजाक्स अनुरोधों ने टॉमकैट को एक नया सत्र बनाने के लिए मजबूर किया है। मेरा दृष्टिकोण हाथ से सत्र कुकी बनाना था, लेकिन इससे कोई फर्क नहीं पड़ता। मजेदार बात यह है कि यह किसी अन्य टॉमकैट उदाहरणों में काम करता है, लेकिन एकीकरण परीक्षण के लिए वांछित वातावरण में नहीं। मेरी राय में यह एक टोमकैट विन्यास मुद्दा है।

Firebug के साथ आगे की जांच पड़ताल करने के बाद, मुझे पता चला है कि बिलाव प्रत्येक अनुरोध के लिए एक नया सत्र भले ही सही jsessionid इसे करने के लिए स्थानांतरित होने पर (50B5EA0BCFE811C744CE9C1F9EDE0097) बनाता है:

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 

अद्यतन: आगे की जांच के लिए समस्या अलग-थलग टॉमकैट दायरे विन्यास। हम लॉगिन के लिए एक जेडीबीसी दायरे का उपयोग करते हैं। जब लॉगिन निष्क्रिय हो जाता है, केवल एक सत्र बनाया जाता है। यदि यह सक्रिय है, तो टोमकैट अमान्य/कालबाह्य सत्र बनाता है, यही कारण है कि प्रत्येक अनुरोध के साथ एक नया सत्र बनाया गया है। लेकिन टोमकैट ऐसा क्यों व्यवहार करता है?

मैं वास्तव में हताश हूं, इसलिए किसी भी विचार/संकेत/समाधान की सराहना की जाती है।

आपको बहुत बहुत

+0

क्या आपको समाधान मिला? –

उत्तर

3

आप अपने ग्राहक और अपने सर्वर के बीच analyze the HTTP traffic की कोशिश कर सकते धन्यवाद। सुनिश्चित करें कि कुकी हेडर अनुरोध और प्रतिक्रिया में सही ढंग से सेट है।

फ़ायरफ़ॉक्स का उपयोग करते हुए, आप Firebug से डीबग करने का प्रयास कर सकते हैं।

+0

सबसे पहले आपके उत्तर के लिए बहुत बहुत धन्यवाद। कुकी हेडर सही ढंग से सेट किया गया है, मैंने फायरबग के साथ जांच की है। मैं यह उल्लेख करना भूल गया कि किसी अन्य वातावरण में यह किसी भी समस्या के बिना काम करता है, लेकिन एकीकरण परीक्षण वातावरण में नहीं। – Fabe

+0

क्या आपके टॉमकैट कॉन्फ़िगरेशन के आपके ' 'अनुभाग में' कुकीज़ = झूठी 'है? 'UseHttpOnly' का मूल्य क्या है? – gawi

+0

नहीं मैंने किसी भी संदर्भ खंड को /META-INF/context.xml में परिभाषित नहीं किया है, इसलिए कुकीज़ और उपयोग करें केवल यह सेट नहीं है। क्या मुझे एक context.xml परिभाषित करना चाहिए? – Fabe

2

हम हाल ही में एक ऐप के साथ एक ही मुद्दे में भाग गए जो हम विकसित कर रहे थे। पता लगाने के लिए, मुद्दा यह है कि टॉमकैट को सत्र निर्धारण हमलों को रोकने में मदद के लिए संशोधित किया गया था। डिफ़ॉल्ट रूप से, प्रमाणीकरण पर एक नया सत्र आईडी बनाया जाता है। यह 6.0.21 के साथ शुरू हुआ। संदर्भ कॉन्फ़िगरेशन विकल्प 'changeSessionIdOn प्रमाणीकरण' देखें (टॉमकैट बग/समस्या https://issues.apache.org/bugzilla/show_bug.cgi?id=45255 है)।

+0

बहुत बहुत धन्यवाद! - मैं इसे देख लूंगा;) – Fabe

0

हम एक ही समस्या में भाग गए, लेकिन कस्टम EXTERNALSSO प्रमाणीकरण का उपयोग करते समय। समाधान को हमारी कक्षा के निर्माता में स्पष्ट रूप से बंद करना था जो org.apache.catalina.authenticator.AuthenticatorBase से प्राप्त होता है:

super.setChangeSessionIdOnAuthentication(false); 
संबंधित मुद्दे