HiveServer2 添加自定义用户名密码验证

原创 hive

配置

  1. hive-site.xml 中加
<property>
  <name>hive.server2.authentication</name>
  <value>CUSTOM</value>
</property>

<property>
  <name>hive.server2.custom.authentication.class</name>
  <value>org.apache.hadoop.hive.contrib.auth.XXXXPasswdAuthenticator</value>
</property>

设置 server2 验证方式是 CUSTOM;并指定自定义验证类是 org.apache.hadoop.hive.contrib.auth.XXXXPasswdAuthenticator

  1. 完成自定义验证类 org.apache.hadoop.hive.contrib.auth.XXXXPasswdAuthenticator,继承 org.apache.hive.service.auth.PasswdAuthenticationProvider

重写方法,如下:

@Override
public void Authenticate(String userName, String passwd) throws AuthenticationException
{
    LOG.info("user: " + userName + " try login.");

    String passwdMD5 = getConf().get(String.format(HIVE_JDBC_PASSWD_AUTH_PREFIX, userName));

    if (passwdMD5 == null)
    {
        String message = "user's ACL configration is not found. user:" + userName;
        LOG.info(message);
        throw new AuthenticationException(message);
    }

    String md5 = MD5Util.md5Hex(passwd);

    if (!md5.equals(passwdMD5))
    {
        String message = "user name and password is mismatch. user:" + userName;
        throw new AuthenticationException(message);
    }
}

@Override
public Configuration getConf()
{
    if (conf == null)
    {
        this.conf = new Configuration();
    }
    return conf;
}

@Override
public void setConf(Configuration arg0)
{
    this.conf = arg0;
}
  1. 打 jar 包放到 hive\lib 下。注意,jar 包中的目录结构和 org.apache.hadoop.hive.contrib.auth.XXXXPasswdAuthenticator 是一致的。

  2. hive-site.xml 中配置一组可用帐号密码

<property>
    <name>hive.jdbc_passwd.auth.username</name>
    <value>用authenticate自定方法加密后的密码</value>
</property>

多组,只要添加多个如上的 property 即可。

  1. 重启 HiveServer2 服务;

  2. 测试

try {
    Class.forName("org.apache.hive.jdbc.HiveDriver");// 指定连接类型
    conn = DriverManager.getConnection(url, user, password);// 获取连接
} catch (Exception e) {
    e.printStackTrace();
}

参考:

  1. 之二十-自定义 HiveServer2 的用户安全认证 – lxw 的大数据田地 http://lxw1234.com/archives/2016/01/600.htm
  2. 配置 HiveServer2 的安全策略之自定义用户名密码验证 - 推酷 http://www.tuicool.com/articles/bQj6BvA
  3. https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2#SettingUpHiveServer2-Configuration
如果觉得这对你有用,请随意赞赏,给与作者支持
评论 0
最新评论