hbase+kerberos:usergroupinformation从keytab登录过期了吗?

rnmwe5a2  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(685)

我们正在使用这个方法 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();
          }

感谢您的帮助!
杰森

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题