HTTP

2011-06-25 18 views
9

का उपयोग करते हुए रिवर्स प्रॉक्सी के पीछे जेट्टी सुरक्षित सत्र कुकीज मैं जेटी 6 के सामने एक रिवर्स प्रॉक्सी (अपाचे) का उपयोग कर रहा हूं। उपयोगकर्ता एसएसएल के साथ अपाचे से कनेक्ट होते हैं, और अपाचे को सार्थ HTTP पर जेटी के कुछ अनुरोधों को आगे बढ़ाते हैं। मैं जेटी को सुरक्षित सत्र कुकीज़ का उपयोग करना चाहता हूं।HTTP

कोई सोचता है कि यह जेटी स्थापित करने के बाद पहली चीज होगी - लेकिन मुझे इसे काम करने में मुश्किल हो रही है।

मैंने जेटी को another stackoverflow question में वर्णित सुरक्षित कुकीज़ का उपयोग करने के लिए सेट अप किया है। हालांकि, जेटी सुरक्षित कुकीज़ का उपयोग करने से इंकार कर देता है - मुझे लगता है कि ऐसा इसलिए है क्योंकि रिवर्स प्रॉक्सी से कनेक्शन एसएसएल नहीं है।

मैंने जेटी को मनाने की कोशिश की, यह अनुरोध पर काम कर रहा है जो sonatype.com पर एक विवरण के बाद एसएसएल पर आया था।

RequestHeader set X-Forwarded-Scheme "https" 

और /etc/jetty/jetty.xml में:

<Set name="handler"> 
    <New id="Handlers" class="org.mortbay.jetty.handler.rewrite.RewriteHandler"> 
    <Set name="rules"> 
     <Array type="org.mortbay.jetty.handler.rewrite.Rule"> 
     <Item> 
      <New id="forwardedHttps" 
       class="org.mortbay.jetty.handler.rewrite.ForwardedSchemeHeaderRule"> 
      <Set name="header">X-Forwarded-Scheme</Set> 
      <Set name="headerValue">https</Set> 
      <Set name="scheme">https</Set> 
      </New> 
     </Item> 
     </Array> 
    </Set> 

    <Set name="handler"> 
     <New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection"> 
     <Set name="handlers"> 
      <Array type="org.mortbay.jetty.Handler"> 
      <Item> 
       <New id="Contexts" class="org.mortbay.jetty.handler.ContextHandlerCollection"/> 
      </Item> 
      <Item> 
       <New id="DefaultHandler" class="org.mortbay.jetty.handler.DefaultHandler"/> 
      </Item> 
      <Item> 
       <New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/> 
      </Item> 
      </Array> 
     </Set> 
     </New> 
    </Set> 
    </New> 
</Set> 

फिर भी कोई सुरक्षित कुकीज़ जो है, मैं अपाचे में निम्नलिखित गयी। कोई सुझाव?

उत्तर

5

मुझे जेटी 6 के साथ काम करने के लिए यह नहीं मिला। जेटी 9 में अपग्रेड करने के बाद मुझे यह काम मिल गया।

मैंने इसे /etc/jetty.xml में बदल दिया। यह पता टिप्पणी की गयी है और मैं इसे uncommented:

<!-- Uncomment to enable handling of X-Forwarded- style headers --> 
<Call name="addCustomizer"> 
    <Arg><New class="org.eclipse.jetty.server.ForwardedRequestCustomizer"/></Arg> 
</Call> 

रिवर्स प्रॉक्सी (अब nginx) proxy_set_header X-Forwarded-आद्य जेट्टी बताने के लिए कि क्या अनुरोध था प्रयोग किया जाता है http या https:

location/{ 
    proxy_pass http://127.0.0.1:8080; 
    proxy_pass_header Server; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-Forwarded-Proto $scheme; 
} 

अंत में, वेबएप के web.xml में यह सुरक्षित और http-only सत्र कुकीज़ सक्षम करता है:

<?xml version="1.0" encoding="UTF-8"?> 

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
     version="3.0"> 

    <!-- filters and other stuff here --> 

    <session-config> 
    <session-timeout>120</session-timeout> 
    <cookie-config> 
     <http-only>true</http-only> 
     <secure>true</secure> 
    </cookie-config> 
    <tracking-mode>COOKIE</tracking-mode> 
    </session-config> 

</web-app>