diff --git a/common/src/java/org/apache/hive/http/HttpServer.java b/common/src/java/org/apache/hive/http/HttpServer.java index 24c5422a18..703a25de0c 100644 --- a/common/src/java/org/apache/hive/http/HttpServer.java +++ b/common/src/java/org/apache/hive/http/HttpServer.java @@ -593,6 +593,22 @@ private void initializeWebServer(final Builder b, int queueSize) throws IOExcept ServletContextHandler logCtx = new ServletContextHandler(contexts, "/logs"); setContextAttributes(logCtx.getServletContext(), b.contextAttrs); + ServletHandler logServletHandler = logCtx.getServletHandler(); + if(b.useSPNEGO) { + Map params = new HashMap(); + try { + params.put("kerberos.principal", SecurityUtil.getServerPrincipal(b.spnegoPrincipal, b.host)); + } catch (IOException e) { + LOG.error("unable to get spnegoPrincipal principal ",e.getMessage()); + } + params.put("kerberos.keytab", b.spnegoKeytab); + params.put(AuthenticationFilter.AUTH_TYPE, "kerberos"); + FilterHolder holder = new FilterHolder(); + holder.setClassName(AuthenticationFilter.class.getName()); + holder.setInitParameters(params); + logServletHandler.addFilterWithMapping( + holder, "/*", FilterMapping.ALL); + } logCtx.addServlet(AdminAuthorizedServlet.class, "/*"); logCtx.setResourceBase(logDir); logCtx.setDisplayName("logs");