You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by vj...@apache.org on 2020/05/14 08:04:35 UTC

[hbase] branch branch-2.1 updated: HBASE-24190 : Make kerberos value of hbase.security.authentication property case insensitive (#1687)

This is an automated email from the ASF dual-hosted git repository.

vjasani pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 7662d68  HBASE-24190 : Make kerberos value of hbase.security.authentication property case insensitive (#1687)
7662d68 is described below

commit 7662d68941d0e454ca36477c9993a1d36a14e1f8
Author: shahrs87 <sh...@gmail.com>
AuthorDate: Sun May 10 22:24:45 2020 -0700

    HBASE-24190 : Make kerberos value of hbase.security.authentication property case insensitive (#1687)
    
    Signed-off-by: binlijin <bi...@gmail.com>
    Signed-off-by: Viraj Jasani <vj...@apache.org>
---
 .../org/apache/hadoop/hbase/TestHBaseConfiguration.java   | 15 +++++++++++++++
 .../java/org/apache/hadoop/hbase/http/InfoServer.java     |  2 +-
 .../java/org/apache/hadoop/hbase/mapreduce/SyncTable.java |  4 ++--
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/TestHBaseConfiguration.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/TestHBaseConfiguration.java
index 184cdf6..6a0b428 100644
--- a/hbase-common/src/test/java/org/apache/hadoop/hbase/TestHBaseConfiguration.java
+++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/TestHBaseConfiguration.java
@@ -27,9 +27,11 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.List;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.security.User;
 import org.apache.hadoop.hbase.testclassification.MiscTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 import org.junit.AfterClass;
+import org.junit.Assert;
 import org.junit.ClassRule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -101,6 +103,19 @@ public class TestHBaseConfiguration {
     }
   }
 
+  @Test
+  public void testSecurityConfCaseInsensitive() {
+    Configuration conf = HBaseConfiguration.create();
+    conf.set("hbase.security.authentication", "kerberos");
+    Assert.assertTrue(User.isHBaseSecurityEnabled(conf));
+
+    conf.set("hbase.security.authentication", "KERBEROS");
+    Assert.assertTrue(User.isHBaseSecurityEnabled(conf));
+
+    conf.set("hbase.security.authentication", "KERBeros");
+    Assert.assertTrue(User.isHBaseSecurityEnabled(conf));
+  }
+
   private static class ReflectiveCredentialProviderClient {
     public static final String HADOOP_CRED_PROVIDER_FACTORY_CLASS_NAME =
         "org.apache.hadoop.security.alias.JavaKeyStoreProvider$Factory";
diff --git a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/InfoServer.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/InfoServer.java
index e50639a..586a3f3 100644
--- a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/InfoServer.java
+++ b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/InfoServer.java
@@ -171,7 +171,7 @@ public class InfoServer {
       return false;
     }
     String remoteUser = req.getRemoteUser();
-    if ("kerberos".equals(conf.get(HttpServer.HTTP_UI_AUTHENTICATION)) &&
+    if ("kerberos".equalsIgnoreCase(conf.get(HttpServer.HTTP_UI_AUTHENTICATION)) &&
         conf.getBoolean(CommonConfigurationKeys.HADOOP_SECURITY_AUTHORIZATION, false) &&
         remoteUser != null) {
       return HttpServer.userHasAdministratorAccess(ctx, remoteUser);
diff --git a/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/SyncTable.java b/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/SyncTable.java
index 1bb9969..bc85e9c 100644
--- a/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/SyncTable.java
+++ b/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/SyncTable.java
@@ -87,7 +87,7 @@ public class SyncTable extends Configured implements Tool {
   private void initCredentialsForHBase(String zookeeper, Job job) throws IOException {
     Configuration peerConf = HBaseConfiguration.createClusterConf(job
             .getConfiguration(), zookeeper);
-    if(peerConf.get("hbase.security.authentication").equals("kerberos")){
+    if("kerberos".equalsIgnoreCase(peerConf.get("hbase.security.authentication"))){
       TableMapReduceUtil.initCredentialsForCluster(job, peerConf);
     }
   }
@@ -101,7 +101,7 @@ public class SyncTable extends Configured implements Tool {
     Job job = Job.getInstance(getConf(),getConf().get("mapreduce.job.name",
         "syncTable_" + sourceTableName + "-" + targetTableName));
     Configuration jobConf = job.getConfiguration();
-    if (jobConf.get("hadoop.security.authentication").equals("kerberos")) {
+    if ("kerberos".equalsIgnoreCase(jobConf.get("hadoop.security.authentication"))) {
       TokenCache.obtainTokensForNamenodes(job.getCredentials(), new
           Path[] { sourceHashDir }, getConf());
     }