安全的 hbase 应用程序 - kerberos 身份验证

secure hbase application - kerberos authentication

我正在运行设置一个无限循环来测试 kerberos 凭据的到期时间,我有以下代码。

UserGroupInformation.loginUserFromKeytab(user, keytablocn);
Configuration config = HBaseConfiguration.create();
HConnection conn = HConnectionManager.createConnection(config);

for (;;) {
HTableInterface ht = conn.getTable(tableName);
getAndPriintRow(rowkey);
}

我希望 kerberos 凭据在程序启动后大约 10 小时过期(在 linux shell 上使用 keytab 的 kinit 需要在我们的环境中大约 10 小时后重新登录)。

但是大约 10 小时后我在日志中看到的是:

15/03/06 12:39:54 DEBUG org.apache.hadoop.security.UserGroupInformation: PrivilegedAction as:*(auth:KERBEROS) from:org.apache.hadoop.hbase.ipc.RpcClient$Connection.handleSaslConnectionFailure(RpcClient.java:796) 15/03/06 12:39:54 DEBUG org.apache.hadoop.security.UserGroupInformation: Initiating logout for * 15/03/06 12:39:54 DEBUG org.apache.hadoop.security.UserGroupInformation: hadoop logout 15/03/06 12:39:54 DEBUG org.apache.hadoop.security.UserGroupInformation: Initiating re-login for *** 15/03/06 12:39:55 DEBUG org.apache.hadoop.security.UserGroupInformation: hadoop login

以某种方式调用了 checkTGTAndReloginFromKeytab() 方法。我无法弄清楚如何调用此方法。这允许程序永久 运行。这是设计使然吗?重新登录是什么?

这是按照设计。当会话过期时,它将尝试重新登录。
此功能使 HBase 客户端在应用程序服务器中使用时能够永远保持运行。