我们正在使用这个方法 UserGroupInformation.loginUserFromKeytabAndReturnUGI(user, keytab)
验证java程序以写入远程hbase群集。当应用程序第一次启动时,我们都很好,它正在与hbase愉快地交谈。
krb5.conf票证的生存期被设置为24小时,24小时后的情况似乎是“tgt过期”,我们开始看到这样的异常: Exception encountered while connecting to the server : javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
我们没有任何重新登录逻辑。我一直认为从keytab登录不应该要求我们为relogin编写任何额外的代码,因为它是由rpcclient处理的。但这里有一些奇怪的事情:
看起来重新登录的某些机制正在启动,但什么也没做,我不知道它尝试使用什么方法 org.apache.hadoop.security.UserGroupInformation Not attempting to re-login since the last re-login was attempted less than 600 seconds before.
当最初通过keytab进行身份验证时, isFromKeytab()
返回false!我想知道这是否就是为什么它不尝试使用reloginfromkeytab()并尝试查看缓存的原因?
我们应该尝试捕捉异常并使用 checkTGTAndReloginFromKeytab()
或者做这样的事?
if (UserGroupInformation.isLoginKeytabBased()) {
UserGroupInformation.getLoginUser().reloginFromKeytab();
} else if (UserGroupInformation.isLoginTicketBased()) {
UserGroupInformation.getLoginUser().reloginFromTicketCache();
}
感谢您的帮助!
杰森
暂无答案!
目前还没有任何答案,快来回答吧!