You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by vg...@apache.org on 2014/10/06 09:43:16 UTC
svn commit: r1629584 - in /hive/branches/branch-0.14:
service/src/java/org/apache/hive/service/auth/
service/src/java/org/apache/hive/service/cli/thrift/
shims/0.20/src/main/java/org/apache/hadoop/hive/shims/
shims/0.20S/src/main/java/org/apache/hadoop...
Author: vgumashta
Date: Mon Oct 6 07:43:15 2014
New Revision: 1629584
URL: http://svn.apache.org/r1629584
Log:
HIVE-8324: Shim KerberosName (causes build failure on hadoop-1)
Modified:
hive/branches/branch-0.14/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java
hive/branches/branch-0.14/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java
hive/branches/branch-0.14/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java
hive/branches/branch-0.14/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java
hive/branches/branch-0.14/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java
hive/branches/branch-0.14/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java
Modified: hive/branches/branch-0.14/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java?rev=1629584&r1=1629583&r2=1629584&view=diff
==============================================================================
--- hive/branches/branch-0.14/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java (original)
+++ hive/branches/branch-0.14/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java Mon Oct 6 07:43:15 2014
@@ -29,10 +29,10 @@ import javax.security.sasl.Sasl;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
+import org.apache.hadoop.hive.shims.HadoopShims.KerberosNameShim;
import org.apache.hadoop.hive.shims.ShimLoader;
import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge;
import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.hadoop.security.authentication.util.KerberosName;
import org.apache.hive.service.cli.HiveSQLException;
import org.apache.hive.service.cli.thrift.ThriftCLIService;
import org.apache.thrift.TProcessorFactory;
@@ -287,12 +287,11 @@ public class HiveAuthFactory {
public static void verifyProxyAccess(String realUser, String proxyUser, String ipAddress,
HiveConf hiveConf) throws HiveSQLException {
-
try {
UserGroupInformation sessionUgi;
if (ShimLoader.getHadoopShims().isSecurityEnabled()) {
- KerberosName kerbName = new KerberosName(realUser);
- String shortPrincipalName = kerbName.getServiceName();
+ KerberosNameShim kerbName = ShimLoader.getHadoopShims().getKerberosNameShim(realUser);
+ String shortPrincipalName = kerbName.getServiceName();
sessionUgi = ShimLoader.getHadoopShims().createProxyUser(shortPrincipalName);
} else {
sessionUgi = ShimLoader.getHadoopShims().createRemoteUser(realUser, null);
@@ -306,5 +305,5 @@ public class HiveAuthFactory {
"Failed to validate proxy privilege of " + realUser + " for " + proxyUser, e);
}
}
-
+
}
Modified: hive/branches/branch-0.14/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java?rev=1629584&r1=1629583&r2=1629584&view=diff
==============================================================================
--- hive/branches/branch-0.14/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java (original)
+++ hive/branches/branch-0.14/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java Mon Oct 6 07:43:15 2014
@@ -31,8 +31,9 @@ import org.apache.commons.codec.binary.B
import org.apache.commons.codec.binary.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.hive.shims.HadoopShims.KerberosNameShim;
+import org.apache.hadoop.hive.shims.ShimLoader;
import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.hadoop.security.authentication.util.KerberosName;
import org.apache.hive.service.auth.AuthenticationProviderFactory;
import org.apache.hive.service.auth.AuthenticationProviderFactory.AuthMethods;
import org.apache.hive.service.auth.HiveAuthFactory;
@@ -237,19 +238,31 @@ public class ThriftHttpServlet extends T
}
}
- private String getPrincipalWithoutRealm(String fullPrincipal) {
- KerberosName fullKerberosName = new KerberosName(fullPrincipal);
+ private String getPrincipalWithoutRealm(String fullPrincipal)
+ throws HttpAuthenticationException {
+ KerberosNameShim fullKerberosName;
+ try {
+ fullKerberosName = ShimLoader.getHadoopShims().getKerberosNameShim(fullPrincipal);
+ } catch (IOException e) {
+ throw new HttpAuthenticationException(e);
+ }
String serviceName = fullKerberosName.getServiceName();
- String hostName = fullKerberosName.getHostName();
+ String hostName = fullKerberosName.getHostName();
String principalWithoutRealm = serviceName;
if (hostName != null) {
principalWithoutRealm = serviceName + "/" + hostName;
}
return principalWithoutRealm;
}
-
- private String getPrincipalWithoutRealmAndHost(String fullPrincipal) {
- KerberosName fullKerberosName = new KerberosName(fullPrincipal);
+
+ private String getPrincipalWithoutRealmAndHost(String fullPrincipal)
+ throws HttpAuthenticationException {
+ KerberosNameShim fullKerberosName;
+ try {
+ fullKerberosName = ShimLoader.getHadoopShims().getKerberosNameShim(fullPrincipal);
+ } catch (IOException e) {
+ throw new HttpAuthenticationException(e);
+ }
return fullKerberosName.getServiceName();
}
}
Modified: hive/branches/branch-0.14/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java?rev=1629584&r1=1629583&r2=1629584&view=diff
==============================================================================
--- hive/branches/branch-0.14/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java (original)
+++ hive/branches/branch-0.14/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java Mon Oct 6 07:43:15 2014
@@ -59,6 +59,7 @@ import org.apache.hadoop.fs.permission.F
import org.apache.hadoop.fs.permission.FsPermission;
import org.apache.hadoop.hdfs.MiniDFSCluster;
import org.apache.hadoop.hive.io.HiveIOExceptionHandlerUtil;
+import org.apache.hadoop.hive.shims.HadoopShims.KerberosNameShim;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.mapred.ClusterStatus;
import org.apache.hadoop.mapred.FileInputFormat;
@@ -928,4 +929,10 @@ public class Hadoop20Shims implements Ha
public Path getCurrentTrashPath(Configuration conf, FileSystem fs) {
return null;
}
+
+ @Override
+ public KerberosNameShim getKerberosNameShim(String name) throws IOException {
+ // Not supported
+ return null;
+ }
}
Modified: hive/branches/branch-0.14/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java?rev=1629584&r1=1629583&r2=1629584&view=diff
==============================================================================
--- hive/branches/branch-0.14/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java (original)
+++ hive/branches/branch-0.14/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java Mon Oct 6 07:43:15 2014
@@ -60,6 +60,7 @@ import org.apache.hadoop.mapreduce.Outpu
import org.apache.hadoop.mapreduce.TaskAttemptContext;
import org.apache.hadoop.mapreduce.TaskAttemptID;
import org.apache.hadoop.mapreduce.TaskID;
+import org.apache.hadoop.security.KerberosName;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.util.Progressable;
import org.apache.hadoop.util.VersionInfo;
@@ -546,4 +547,44 @@ public class Hadoop20SShims extends Hado
public Path getCurrentTrashPath(Configuration conf, FileSystem fs) {
return null;
}
+
+ /**
+ * Returns a shim to wrap KerberosName
+ */
+ @Override
+ public KerberosNameShim getKerberosNameShim(String name) throws IOException {
+ return new KerberosNameShim(name);
+ }
+
+ /**
+ * Shim for KerberosName
+ */
+ public class KerberosNameShim implements HadoopShimsSecure.KerberosNameShim {
+
+ private KerberosName kerberosName;
+
+ public KerberosNameShim(String name) {
+ kerberosName = new KerberosName(name);
+ }
+
+ public String getDefaultRealm() {
+ return kerberosName.getDefaultRealm();
+ }
+
+ public String getServiceName() {
+ return kerberosName.getServiceName();
+ }
+
+ public String getHostName() {
+ return kerberosName.getHostName();
+ }
+
+ public String getRealm() {
+ return kerberosName.getRealm();
+ }
+
+ public String getShortName() throws IOException {
+ return kerberosName.getShortName();
+ }
+ }
}
Modified: hive/branches/branch-0.14/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java?rev=1629584&r1=1629583&r2=1629584&view=diff
==============================================================================
--- hive/branches/branch-0.14/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java (original)
+++ hive/branches/branch-0.14/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java Mon Oct 6 07:43:15 2014
@@ -72,6 +72,7 @@ import org.apache.hadoop.mapreduce.TaskT
import org.apache.hadoop.mapreduce.task.JobContextImpl;
import org.apache.hadoop.mapreduce.task.TaskAttemptContextImpl;
import org.apache.hadoop.net.NetUtils;
+import org.apache.hadoop.security.authentication.util.KerberosName;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.util.Progressable;
import org.apache.tez.test.MiniTezCluster;
@@ -847,4 +848,44 @@ public class Hadoop23Shims extends Hadoo
TrashPolicy tp = TrashPolicy.getInstance(conf, fs, fs.getHomeDirectory());
return tp.getCurrentTrashDir();
}
+
+ /**
+ * Returns a shim to wrap KerberosName
+ */
+ @Override
+ public KerberosNameShim getKerberosNameShim(String name) throws IOException {
+ return new KerberosNameShim(name);
+ }
+
+ /**
+ * Shim for KerberosName
+ */
+ public class KerberosNameShim implements HadoopShimsSecure.KerberosNameShim {
+
+ private KerberosName kerberosName;
+
+ public KerberosNameShim(String name) {
+ kerberosName = new KerberosName(name);
+ }
+
+ public String getDefaultRealm() {
+ return kerberosName.getDefaultRealm();
+ }
+
+ public String getServiceName() {
+ return kerberosName.getServiceName();
+ }
+
+ public String getHostName() {
+ return kerberosName.getHostName();
+ }
+
+ public String getRealm() {
+ return kerberosName.getRealm();
+ }
+
+ public String getShortName() throws IOException {
+ return kerberosName.getShortName();
+ }
+ }
}
Modified: hive/branches/branch-0.14/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java?rev=1629584&r1=1629583&r2=1629584&view=diff
==============================================================================
--- hive/branches/branch-0.14/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java (original)
+++ hive/branches/branch-0.14/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java Mon Oct 6 07:43:15 2014
@@ -731,4 +731,21 @@ public interface HadoopShims {
* @return Path to HDFS trash, if current hadoop supports trash feature. Null otherwise.
*/
Path getCurrentTrashPath(Configuration conf, FileSystem fs);
+
+ /**
+ * Returns a shim to wrap KerberosName
+ */
+ public KerberosNameShim getKerberosNameShim(String name) throws IOException;
+
+ /**
+ * Shim for KerberosName
+ */
+ public interface KerberosNameShim {
+ public String getDefaultRealm();
+ public String getServiceName();
+ public String getHostName();
+ public String getRealm();
+ public String getShortName() throws IOException;
+ }
+
}