我在Jetty 6前面使用反向代理(Apache).用户使用SSL连接到Apache,Apache通过普通HTTP将一些请求转发给Jetty.我希望Jetty使用安全会话cookie.
人们会认为这将是安装Jetty后人们做的第一件事 - 但我很难让它上班.
我设置Jetty使用安全cookie,如另一个stackoverflow问题中所述.但是,Jetty拒绝使用安全cookie - 我认为这是因为反向代理的连接不是SSL.
我试图说服Jetty它正在根据sonatype.com上的描述处理来自SSL的请求.也就是说,我在Apache中添加了以下内容:
RequestHeader set X-Forwarded-Scheme "https"
Run Code Online (Sandbox Code Playgroud)
在/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>
Run Code Online (Sandbox Code Playgroud)
仍然没有安全的cookie.有什么建议?
我无法让它与Jetty 6一起工作.升级到Jetty 9之后我就开始工作了.
我在/etc/jetty.xml中更改了这个.它被评论出来,我取消评论它:
<!-- Uncomment to enable handling of X-Forwarded- style headers -->
<Call name="addCustomizer">
<Arg><New class="org.eclipse.jetty.server.ForwardedRequestCustomizer"/></Arg>
</Call>
Run Code Online (Sandbox Code Playgroud)
在反向代理(现在是nginx)中,proxy_set_header X-Forwarded-Proto用于告诉Jetty请求是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;
}
Run Code Online (Sandbox Code Playgroud)
最后,在webapp的web.xml中,这将启用安全和仅限http的会话cookie:
<?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>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3824 次 |
最近记录: |