gpt4 book ai didi

ssl - 在使用 HTTP 的反向代理后面时 Jetty 安全 session cookie

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:34 25 4
gpt4 key购买 nike

我在 Jetty 6 前面使用反向代理 (Apache)。用户使用 SSL 连接到 Apache,Apache 通过纯 HTTP 将一些请求转发到 Jetty。我希望 Jetty 使用安全 session cookie。

有人会认为这是任何人在安装 Jetty 后做的第一件事 - 但我很难让它工作。

我将 Jetty 设置为使用安全 cookie,如 another stackoverflow question 中所述.但是,Jetty 拒绝使用安全 cookie - 我认为这是因为来自反向代理的连接不是 SSL。

我试图说服 Jetty,它正在按照 sonatype.com 中的描述处理通过 SSL 发出的请求。 .也就是我在Apache中添加了如下内容:

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>

仍然没有安全 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>

在反向代理(现在是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;
}

最后,在 webapp 的 web.xml 中启用安全且仅限 http 的 session 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>

关于ssl - 在使用 HTTP 的反向代理后面时 Jetty 安全 session cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6478480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com