You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by su...@apache.org on 2017/02/25 07:18:17 UTC
[24/29] drill git commit: DRILL-4280: CORE (web client)
DRILL-4280: CORE (web client)
+ Disabled web server when authentication is enabled but PLAIN mechanism
is not configured; log a warning
Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/5fff4981
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/5fff4981
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/5fff4981
Branch: refs/heads/master
Commit: 5fff49813b2298c02748dc1da501980e16cab43d
Parents: e2582a1
Author: Sudheesh Katkam <su...@apache.org>
Authored: Wed Jan 25 19:05:23 2017 -0800
Committer: Sudheesh Katkam <su...@apache.org>
Committed: Fri Feb 24 19:01:43 2017 -0800
----------------------------------------------------------------------
.../drill/exec/server/rest/WebServer.java | 29 ++++++++++++++------
1 file changed, 20 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/drill/blob/5fff4981/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/WebServer.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/WebServer.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/WebServer.java
index 0b19dce..685a823 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/WebServer.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/WebServer.java
@@ -26,6 +26,8 @@ import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.drill.common.config.DrillConfig;
import org.apache.drill.exec.ExecConstants;
+import org.apache.drill.exec.rpc.security.plain.PlainFactory;
+import org.apache.drill.exec.server.BootStrapContext;
import org.apache.drill.exec.server.rest.auth.DrillRestLoginService;
import org.apache.drill.exec.work.WorkManager;
import org.bouncycastle.asn1.x500.X500NameBuilder;
@@ -91,16 +93,18 @@ public class WebServer implements AutoCloseable {
private final MetricRegistry metrics;
private final WorkManager workManager;
private final Server embeddedJetty;
+ private final BootStrapContext context;
/**
* Create Jetty based web server.
- * @param config DrillConfig instance.
- * @param metrics Metrics registry.
+ *
+ * @param context Bootstrap context.
* @param workManager WorkManager instance.
*/
- public WebServer(final DrillConfig config, final MetricRegistry metrics, final WorkManager workManager) {
- this.config = config;
- this.metrics = metrics;
+ public WebServer(final BootStrapContext context, final WorkManager workManager) {
+ this.context = context;
+ this.config = context.getConfig();
+ this.metrics = context.getMetrics();
this.workManager = workManager;
if (config.getBoolean(ExecConstants.HTTP_ENABLE)) {
@@ -121,6 +125,13 @@ public class WebServer implements AutoCloseable {
if (embeddedJetty == null) {
return;
}
+ final boolean authEnabled = config.getBoolean(ExecConstants.USER_AUTHENTICATION_ENABLED);
+ if (authEnabled && !context.getAuthProvider()
+ .containsFactory(PlainFactory.SIMPLE_NAME)) {
+ logger.warn("Not starting web server. Currently Drill supports web authentication only through " +
+ "username/password. But PLAIN mechanism is not configured.");
+ return;
+ }
final ServerConnector serverConnector;
if (config.getBoolean(ExecConstants.HTTP_ENABLE_SSL)) {
@@ -138,7 +149,6 @@ public class WebServer implements AutoCloseable {
final ServletContextHandler servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
servletContextHandler.setErrorHandler(errorHandler);
servletContextHandler.setContextPath("/");
- embeddedJetty.setHandler(servletContextHandler);
final ServletHolder servletHolder = new ServletHolder(new ServletContainer(new DrillRestServer(workManager)));
servletHolder.setInitOrder(1);
@@ -159,9 +169,9 @@ public class WebServer implements AutoCloseable {
staticHolder.setInitParameter("pathInfoOnly", "true");
servletContextHandler.addServlet(staticHolder, "/static/*");
- if (config.getBoolean(ExecConstants.USER_AUTHENTICATION_ENABLED)) {
- servletContextHandler.setSecurityHandler(createSecurityHandler());
- servletContextHandler.setSessionHandler(createSessionHandler(servletContextHandler.getSecurityHandler()));
+ if (authEnabled) {
+ servletContextHandler.setSecurityHandler(createSecurityHandler());
+ servletContextHandler.setSessionHandler(createSessionHandler(servletContextHandler.getSecurityHandler()));
}
if (config.getBoolean(ExecConstants.HTTP_CORS_ENABLED)) {
@@ -180,6 +190,7 @@ public class WebServer implements AutoCloseable {
}
}
+ embeddedJetty.setHandler(servletContextHandler);
embeddedJetty.start();
}