के पीछे स्प्रिंग सिक्योरिटी के साथ https की आवश्यकता है मेरे पास वसंत सुरक्षा के साथ एक स्प्रिंग एमवीसी एप्लिकेशन सुरक्षित है। अधिकांश एप्लिकेशन संसाधनों को सहेजने के लिए सरल http का उपयोग करते हैं, लेकिन एक छोटा सा हिस्सा अधिक गोपनीय जानकारी को संसाधित करता है और एक https चैनल की आवश्यकता होती है।एक रिवर्स प्रॉक्सी
security-config.xml
से
निकालें:
<sec:http authentication-manager-ref="authenticationManager" ... >
...
<sec:intercept-url pattern="/sec/**" requires-channel="https"/>
<sec:intercept-url pattern="/**" requires-channel="http"/>
</sec:http>
सभी ठीक काम किया जब तक हम यह मुख्य सर्वर, जहां आवेदन सर्वर के पीछे चलाने प्रॉक्सी उल्टा करने के लिए स्थानांतरित करने के लिए फैसला किया। और अब एचटीटीपीएस को रिवर्स प्रॉक्सी द्वारा संसाधित किया जाता है, एप्लिकेशन सर्वर केवल HTTP अनुरोध देखता है, और /sec/**
पदानुक्रम तक पहुंच को अस्वीकार करता है।
कुछ शोध करने के बाद, मैंने पाया है कि प्रॉक्सी एक X-Forwarded-Proto: https
हैडर (*) जोड़ने के लिए, लेकिन वसंत में सुरक्षा HttpServletRequest.isSecure()
चैनल सुरक्षा (SecureChannelProcessor
जावाडोक से उद्धरण) की पेशकश की
कैसे कर सकता है निर्धारित करने के लिए प्रयोग किया जाता है मैं स्प्रिंग सिक्योरिटी को बताता हूं कि एक सुरक्षित अनुरोध के लिए X-Forwarded-Proto: https
हैडर पर्याप्त है?
मुझे पता है कि मैं प्रॉक्सी कॉन्फ़िगरेशन पर उस हिस्से की रिपोर्ट कर सकता हूं, लेकिन प्रॉक्सी व्यवस्थापक वास्तव में उस समाधान को पसंद नहीं करते हैं, क्योंकि प्रॉक्सी के पीछे कई एप्लिकेशन हैं और कॉन्फ़िगरेशन एक गैर-प्रबंधनीय स्थिति में बढ़ सकता है।
मैं वर्तमान में एक्सएमएल कॉन्फ़िगरेशन के साथ स्प्रिंग सुरक्षा 3.2 का उपयोग कर रहा हूं, लेकिन मैं जावा कॉन्फ़िगरेशन और/या अधिक हालिया संस्करण के आधार पर उत्तर स्वीकार करने के लिए तैयार हूं।
(*) बेशक, आने वाले अनुरोध में उपस्थित होने पर प्रॉक्सी हेडर को हटा दें, इसलिए एप्लिकेशन इसमें विश्वास कर सकता है।
आपका ऐप सर्वर क्या है? इसके लिए टॉमकैट कनेक्टर में कोई सेटिंग नहीं है? –
@NeilMcGuigan: हाँ यह एक टोमकैट है। क्या यह इतना आसान हो सकता है? –
@NeilMcGuigan: कृपया इसे एक उत्तर के रूप में लिखें, ताकि मैं इसे स्वीकार कर सकूं। –