`UserGroupInformation ugi =
UserGroupInformation.loginUserFromKeytabAndReturnUGI(...)`
and
`UserGroupInformation.setLoginUser(ugi)`
Should be sufficient. You may also need to use a `UGI.doAs()`, e.g.
ugi.doAs(new PrivilegedExceptionAction<Void>() {
public Void run() {
HBaseAdmin.checkHBaseAvailable(hBaseConfig);
Connection connection =
ConnectionFactory.createConnection(hBaseConfig);
}
});
Also, try setting -Dsun.security.krb5.debug=true when launching your
application to get more information as to what is happening. As Ted
pointed out, it doesn't appear that your Kerberos login occurred.
Saurabh Malviya (samalviy) wrote:
Hi,
I am trying to write java code snippet to authenticate hbase using
Kerberos, But I am getting attached exception. I tried all kind of
config through code but no luck.
-Saurabh
---Java Code
HbaseGetPropertyValues properties = new HbaseGetPropertyValues();
properties.getPropValues();
Configuration hBaseConfig = HBaseConfiguration.create();
hBaseConfig.setInt("timeout", Integer.parseInt(properties.TIMEOUT));
hBaseConfig.set("hbase.zookeeper.quorum",
properties.HBASE_ZOOKEEPER_QUORUM);
//hBaseConfig.set("hbase.master", "hdfs-hbase-m1.insight-test-1:60000");
hBaseConfig.set("hbase.zookeeper.property.clientport",
properties.HBASE_ZOOKEEPER_PROPERTY_CLIENTPORT);
hBaseConfig.set("zookeeper.znode.parent",
properties.ZOOKEEPER_ZNODE_PARENT);
//hBaseConfig.set("hadoop.security.authentication", "kerberos");
hBaseConfig.set("hbase.security.authentication", "kerberos");
hBaseConfig.set("hbase.master.kerberos.principal", "test/INSIGHT@INSIGHT");
hBaseConfig.set("hbase.regionserver.kerberos.principal",
"test/INSIGHT@INSIGHT");
hBaseConfig.set("hbase.master.keytab.file", "/root/test.keytab");
hBaseConfig.set("hbase.regionserver.keytab.file", "/root/test.keytab");
//runLoginAndRenewalThread(hBaseConfig, "/root/test.keytab",
"test/INSIGHT@INSIGHT");
UserGroupInformation.setConfiguration(hBaseConfig);
User.login(hBaseConfig,"hbase.master.keytab.file",
"hbase.regionserver.kerberos.principal", null);
//UserGroupInformation.loginUserFromKeytab("test/INSIGHT@INSIGHT","/root/test.keytab");
UserGroupInformation ugi =
UserGroupInformation.loginUserFromKeytabAndReturnUGI("test/INSIGHT@INSIGHT","/root/samalviy.keytab");
UserGroupInformation.setLoginUser(ugi);
System.out.println("getLoginUser :: "+ugi.getLoginUser());
System.out.println(hBaseConfig);
HBaseAdmin.checkHBaseAvailable(hBaseConfig);
Connection connection = ConnectionFactory.createConnection(hBaseConfig);