Repository: accumulo
Updated Branches:
  refs/heads/master a52b23827 -> 548796163


ACCUMULO-3636 Ensure KerberosToken is created when SASL is enabled.

Typically, no token properties are needed for kerberos, so we need
to ensure that we don't try to use a password in that case.


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/54879616
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/54879616
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/54879616

Branch: refs/heads/master
Commit: 548796163149a917e4d8d7beb69f9d5e41360ee9
Parents: a52b238
Author: Josh Elser <els...@apache.org>
Authored: Tue Mar 3 09:56:00 2015 -0800
Committer: Josh Elser <els...@apache.org>
Committed: Tue Mar 3 09:56:00 2015 -0800

----------------------------------------------------------------------
 .../accumulo/monitor/servlets/trace/Basic.java  | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/54879616/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/Basic.java
----------------------------------------------------------------------
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/Basic.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/Basic.java
index 1a098c2..19cd2c6 100644
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/Basic.java
+++ 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/Basic.java
@@ -18,6 +18,7 @@ package org.apache.accumulo.monitor.servlets.trace;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
+import java.io.IOException;
 import java.util.Date;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -31,6 +32,7 @@ import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import 
org.apache.accumulo.core.client.security.tokens.AuthenticationToken.Properties;
+import org.apache.accumulo.core.client.security.tokens.KerberosToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
@@ -71,12 +73,22 @@ abstract class Basic extends BasicServlet {
 
   protected Scanner getScanner(StringBuilder sb) throws AccumuloException, 
AccumuloSecurityException {
     AccumuloConfiguration conf = Monitor.getContext().getConfiguration();
+    final boolean saslEnabled = 
conf.getBoolean(Property.INSTANCE_RPC_SASL_ENABLED);
     String principal = conf.get(Property.TRACE_USER);
     AuthenticationToken at;
     Map<String,String> loginMap = 
conf.getAllPropertiesWithPrefix(Property.TRACE_TOKEN_PROPERTY_PREFIX);
     if (loginMap.isEmpty()) {
-      Property p = Property.TRACE_PASSWORD;
-      at = new PasswordToken(conf.get(p).getBytes(UTF_8));
+      if (saslEnabled) {
+        try {
+          at = new KerberosToken();
+        } catch (IOException e) {
+          throw new AccumuloException("Failed to create KerberosToken", e);
+        }
+        principal = SecurityUtil.getServerPrincipal(principal);
+      } else {
+        Property p = Property.TRACE_PASSWORD;
+        at = new PasswordToken(conf.get(p).getBytes(UTF_8));
+      }
     } else {
       Properties props = new Properties();
       int prefixLength = 
Property.TRACE_TOKEN_PROPERTY_PREFIX.getKey().length();
@@ -89,10 +101,6 @@ abstract class Basic extends BasicServlet {
       at = token;
     }
 
-    if (conf.getBoolean(Property.INSTANCE_RPC_SASL_ENABLED)) {
-      principal = SecurityUtil.getServerPrincipal(principal);
-    }
-
     String table = conf.get(Property.TRACE_TABLE);
     try {
       Connector conn = HdfsZooInstance.getInstance().getConnector(principal, 
at);

Reply via email to