HiveServer2 添加自定义用户名密码验证
原创
hive
配置
- 在
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
。
- 完成自定义验证类
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;
}
-
打 jar 包放到 hive\lib 下。注意,jar 包中的目录结构和
org.apache.hadoop.hive.contrib.auth.XXXXPasswdAuthenticator
是一致的。 -
在
hive-site.xml
中配置一组可用帐号密码
<property>
<name>hive.jdbc_passwd.auth.username</name>
<value>用authenticate自定方法加密后的密码</value>
</property>
多组,只要添加多个如上的 property
即可。
-
重启 HiveServer2 服务;
-
测试
try {
Class.forName("org.apache.hive.jdbc.HiveDriver");// 指定连接类型
conn = DriverManager.getConnection(url, user, password);// 获取连接
} catch (Exception e) {
e.printStackTrace();
}
参考:
- 之二十-自定义 HiveServer2 的用户安全认证 – lxw 的大数据田地 http://lxw1234.com/archives/2016/01/600.htm
- 配置 HiveServer2 的安全策略之自定义用户名密码验证 - 推酷 http://www.tuicool.com/articles/bQj6BvA
- https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2#SettingUpHiveServer2-Configuration