2010-02-18 16 views
31

जब कोई अनधिकृत क्लाइंट एक यूआरएल अनुरोध करता है जिसके लिए security-config.xml में परिभाषित गैर-अज्ञात पहुंच स्तर की आवश्यकता होती है, तो वसंत सुरक्षा हमारे लॉगिन पृष्ठ पर एक HTTP रीडायरेक्ट भेजती है (उदा। /login)। कोई बात नहीं।मैं वसंत-सुरक्षा को जोड़ने से कैसे रोक सकता हूं; jsessionid = XXX रीडायरेक्ट लॉगिन करने के लिए?

समस्या यह है कि मौजूदा सत्र (ग्राहक के अनुरोध में प्रदान की गई कुकी द्वारा पहचाना गया) अनुपस्थित है, वसंत-सुरक्षा एक पुनर्निर्देशन जारी करता है जो यूआरएल में ग्राहक के नए सत्र को भी निर्दिष्ट करता है, उदा। /login;jsessionid=8o7pglapojus

कई कंटेनर इसका समर्थन करते हैं (जाहिर है यह टॉमकैट में ठीक काम करता है?), लेकिन ऐसा लगता है कि जेटी (जो हम अभी उपयोग कर रहे हैं) नहीं है - रीडायरेक्ट यूआरएल हमारे यूआरएल राउटर से पूरी तरह से बरकरार है (jsessionid "पैरामीटर" सहित), और नामित सत्र /login जेटी/वसंत-सुरक्षा द्वारा अनुरोध नहीं है (यानि /login अनुरोध के जवाब के सेट-कुकी शीर्षलेख में एक पूरी तरह से नई सत्र आईडी प्रदान की जाती है)।

हम अपने मार्गों में /login.* से मेल करके इस पर काम कर सकते हैं, लेकिन अगर मैं प्रमाणीकरण रीडायरेक्ट में सत्र आईडी के उत्सर्जन को रोकने के लिए कोई तरीका है तो उत्सुक हूं।

उत्तर

42

वसंत सुरक्षा 3.0.0 एम 1 या नए में आप नामस्थान में disable-url-rewriting="true" सेट कर सकते हैं। देखें कि क्या मदद करता है। यह भी देखें feature request

+0

@BalusC किसी भी ज्ञात पूर्व वसंत 3 समाधान? – Xorty

+0

@Xorty http://fralef.org/tomcat-disable-jsessionid-in-url.html पर एक नज़र डालें, यदि स्प्रिंग सिक्योरिटी 3+ में अपग्रेड करना एक विकल्प नहीं है। –

0

एक अन्य समाधान यहाँ (सभी अर्थात उन स्प्रिंग सुरक्षा खुद के लिए)

http://randomcoder.com/articles/jsessionid-considered-harmful

एक सर्वलेट फिल्टर आवरण बनाता है और हैंडल इस प्रबंध करती है।

+0

लिंक को सही लेख – futureelite7

8

अब ऐसा लगता है।

<security:http auto-config="false" use-expressions="true" disable-url-rewriting="true"> 

इसके बाद, आपका आवेदन सही तरीके से राज्य की नौकरियों को निष्पादित करने में असमर्थ होगा।

+2

पर इंगित करने के लिए अपडेट किया गया है आपका मतलब है कि क्लाइंट कुकीज़ की अनुमति नहीं देता है, केवल तभी आवेदन पूर्णकालिक कार्य करने में सक्षम नहीं होगा? – Sudarshan

0

@ahmet अल्प बाल्कन:

seamframework randomcoders तुलना में एक बेहतर समाधान प्रदान करते हैं। http://seamframework.org/Documentation/RemovingJSESSIONIDFromYourURLsAndFixingScache

@BalusC:

डेवलपर इस्तेमाल किया वसंत सुरक्षा के FilterChainProxy securtiy सुविधा को लागू करने के लिए, बस http नाम स्थान का उपयोग नहीं।

तब हमें फिल्टर श्रृंखला में कस्टम फ़िल्टर जोड़ने की कोशिश किए बिना अक्षम-यूआरएल-रीराइटिंग जोड़ने का तरीका नहीं मिला, या web.xml पर एक स्वतंत्र फ़िल्टर डालने का कोई तरीका नहीं मिला।

0

आप घाट का उपयोग कर रहे हैं, बस निम्नलिखित संदर्भ परम टैग अपने web.xml में, जोड़ने

<!-- Disables appending JSESSSIONID in browser address bar/requests --> 
<context-param> 
    <param-name>org.eclipse.jetty.servlet.SessionIdPathParameterName</param-name> 
    <param-value>none</param-value> 
</context-param> 

देखें: Session Management - Jetty Doc

संबंधित मुद्दे