java—hiveserver2的简单用户/密码身份验证(不带kerberos/ldap)

0pizxfdo  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(557)

如何为hiveserver2提供简单的propertyfile或数据库用户/密码身份验证?
我已经找到了这个演示文稿,但不是英文的:(。在cloudera参考手册中,他们谈到 hive.server2.authentication 财产。它支持 CUSTOM 接口的实现 hive.server2.custom.authentication .
如何实施?

z9gpfhce

z9gpfhce1#

本质上,您必须提供一个可以执行身份验证的java应用程序。可能您正在对mysql或postgres数据库或平面文件进行身份验证,等等。您需要提供一个jar来实现org.apache.hive.service.auth.passwdauthenticationprovider接口。
一个简单的例子:

package org.apache.hive.service.auth.PasswdAuthenticationProvider.SampleAuth;

import java.util.Hashtable;
import javax.security.sasl.AuthenticationException;
import org.apache.hive.service.auth.PasswdAuthenticationProvider;

/*
 javac -cp $HIVE_HOME/lib/hive-service-0.12.0-cdh5.0.0-beta-2.jar SampleAuthenticator.java -d .
 jar cf sampleauth.jar hive
 cp sampleauth.jar $HIVE_HOME/lib/.

* /

public class SampleAuthenticator implements PasswdAuthenticationProvider {

  Hashtable<String, String> store = null;

  public SampleAuthenticator () {
    store = new Hashtable<String, String>();
    store.put("user1", "passwd1");
    store.put("user2", "passwd2");
  }

  @Override
  public void Authenticate(String user, String  password)
      throws AuthenticationException {

    String storedPasswd = store.get(user);

    if (storedPasswd != null && storedPasswd.equals(password))
      return;

    throw new AuthenticationException("SampleAuthenticator: Error validating user");
  }

}

然后在hive-site.xml中,使用新创建的自定义身份验证jar:

<property>
  <name>hive.server2.authentication</name>
  <value>CUSTOM</value>
</property>

<property>
  <name>hive.server2.custom.authentication.class</name>
  <value>org.apache.hive.service.auth.PasswdAuthenticationProvider.SampleAuth</value>
</property>

相关问题