Commit fe20116b authored by Phillip Webb's avatar Phillip Webb

Propagate https scheme when using Jetty

Update Jetty 9 SSL support to register the SecureRequestCustomizer which
ensures that calling getScheme() on the HttpServletRequest returns
'https'.

Fixes gh-2232
parent 0702b4e7
...@@ -29,7 +29,9 @@ import org.eclipse.jetty.http.HttpVersion; ...@@ -29,7 +29,9 @@ import org.eclipse.jetty.http.HttpVersion;
import org.eclipse.jetty.http.MimeTypes; import org.eclipse.jetty.http.MimeTypes;
import org.eclipse.jetty.server.AbstractConnector; import org.eclipse.jetty.server.AbstractConnector;
import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.HttpConfiguration;
import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.HttpConnectionFactory;
import org.eclipse.jetty.server.SecureRequestCustomizer;
import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.SessionManager; import org.eclipse.jetty.server.SessionManager;
...@@ -492,9 +494,15 @@ public class JettyEmbeddedServletContainerFactory extends ...@@ -492,9 +494,15 @@ public class JettyEmbeddedServletContainerFactory extends
@Override @Override
public ServerConnector getConnector(Server server, public ServerConnector getConnector(Server server,
SslContextFactory sslContextFactory, int port) { SslContextFactory sslContextFactory, int port) {
HttpConfiguration config = new HttpConfiguration();
config.setSecureScheme("https");
config.setSecurePort(port);
config.addCustomizer(new SecureRequestCustomizer());
HttpConnectionFactory connectionFactory = new HttpConnectionFactory(config);
SslConnectionFactory sslConnectionFactory = new SslConnectionFactory(
sslContextFactory, HttpVersion.HTTP_1_1.asString());
ServerConnector serverConnector = new ServerConnector(server, ServerConnector serverConnector = new ServerConnector(server,
new SslConnectionFactory(sslContextFactory, sslConnectionFactory, connectionFactory);
HttpVersion.HTTP_1_1.asString()), new HttpConnectionFactory());
serverConnector.setPort(port); serverConnector.setPort(port);
return serverConnector; return serverConnector;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment