[ 
https://issues.apache.org/jira/browse/HBASE-24190?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

zhangbuzhang updated HBASE-24190:
---------------------------------
    Description: 
In hbase-20586 (https://issues.apache.org/jira/browse/HBASE-20586)

(commit_sha: [https://github.com/apache/hbase/commit/cd61bcc0] )

The code added 
([SyncTable.java|https://github.com/apache/hbase/commit/cd61bcc0#diff-d1b79635f33483bf6226609e91fd1cc3])
 for the use of *hbase.security.authentication* is case-sensitive. So users 
setting it to “KERBEROS” won’t take effect.

 

 private void initCredentialsForHBase(String zookeeper, Job job) throws 
IOException {

   Configuration peerConf = HBaseConfiguration.createClusterConf(job

           .getConfiguration(), zookeeper);

   if(peerConf.get("hbase.security.authentication").equals("kerberos")){

     TableMapReduceUtil.initCredentialsForCluster(job, peerConf);

   }

 }



However, in current code base, other uses of *hbase.security.authentication* 
are all case-insensitive. For example in *MasterFileSystem.java.* 

public MasterFileSystem(Configuration conf) throws IOException {

...

this.isSecurityEnabled = 
"kerberos".equalsIgnoreCase(conf.get("hbase.security.authentication"));

...

}

Users may misconfigured the parameter because of the case-senstive problem.

*How To Fix*

Using *eqaulsIgnoreCase* API consistently in every place when using 
*hbase.security.authentication* or make it clear in Doc. (Current doc doesn't 
mention it clearly)

  was:
In hbase-20586 (https://issues.apache.org/jira/browse/HBASE-20586)

(commit_sha: [https://github.com/apache/hbase/commit/cd61bcc0] )

The code added 
([SyncTable.java|https://github.com/apache/hbase/commit/cd61bcc0#diff-d1b79635f33483bf6226609e91fd1cc3])
 for the use of *hbase.security.authentication* is case-sensitive. So users 
setting it to “KERBEROS” won’t take effect.

  !截屏2020-04-14下午7.57.45.png|width=531,height=176!

 

However, in current code base, other uses of *hbase.security.authentication* 
are all case-insensitive. For example in *MasterFileSystem.java.* 

public MasterFileSystem(Configuration conf) throws IOException

{ ...   this.isSecurityEnabled =  
"kerberos".equalsIgnoreCase(conf.get("hbase.security.authentication")); ... }

The doc in GitHub repo is also misleading

 

Users may misconfigured the parameter because of the case-senstive problem.

*How To Fix*

Using *eqaulsIgnoreCase* API consistently in every place when using 
*hbase.security.authentication* or make it clear in Doc. (Current doc doesn't 
mention it clearly)


> Case-sensitive use of configuration parameter hbase.security.authentication
> ---------------------------------------------------------------------------
>
>                 Key: HBASE-24190
>                 URL: https://issues.apache.org/jira/browse/HBASE-24190
>             Project: HBase
>          Issue Type: Bug
>          Components: conf
>            Reporter: zhangbuzhang
>            Priority: Major
>
> In hbase-20586 (https://issues.apache.org/jira/browse/HBASE-20586)
> (commit_sha: [https://github.com/apache/hbase/commit/cd61bcc0] )
> The code added 
> ([SyncTable.java|https://github.com/apache/hbase/commit/cd61bcc0#diff-d1b79635f33483bf6226609e91fd1cc3])
>  for the use of *hbase.security.authentication* is case-sensitive. So users 
> setting it to “KERBEROS” won’t take effect.
>  
>  private void initCredentialsForHBase(String zookeeper, Job job) throws 
> IOException {
>    Configuration peerConf = HBaseConfiguration.createClusterConf(job
>            .getConfiguration(), zookeeper);
>    if(peerConf.get("hbase.security.authentication").equals("kerberos")){
>      TableMapReduceUtil.initCredentialsForCluster(job, peerConf);
>    }
>  }
> However, in current code base, other uses of *hbase.security.authentication* 
> are all case-insensitive. For example in *MasterFileSystem.java.* 
> public MasterFileSystem(Configuration conf) throws IOException {
> ...
> this.isSecurityEnabled = 
> "kerberos".equalsIgnoreCase(conf.get("hbase.security.authentication"));
> ...
> }
> Users may misconfigured the parameter because of the case-senstive problem.
> *How To Fix*
> Using *eqaulsIgnoreCase* API consistently in every place when using 
> *hbase.security.authentication* or make it clear in Doc. (Current doc doesn't 
> mention it clearly)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to