首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在通过Java代码访问Kerberized时是否需要kinit?

在通过Java代码访问Kerberized时是否需要kinit?
EN

Stack Overflow用户
提问于 2017-06-05 05:16:04
回答 2查看 1.5K关注 0票数 3

我有一个java应用程序,它需要访问Hadoop集群来定期获取文件(例如,每24小时一次)。

由于为保护该集群启用了Kerberos协议,所以我使用UserGroupInformation类的UserGroupInformation()方法:https://hadoop.apache.org/docs/r1.2.1/api/org/apache/hadoop/security/UserGroupInformation.html

现在,我知道kinit命令授予一个票证授予票证来访问任何Kerberized,并且必须定期刷新此票证(通过kinit命令)。现在,我的问题是,是否需要定期(从代码中)运行kinit,并结合上面的Java运行代码才能工作?或者一旦运行就足够了吗?或者根本不需要。

感谢您的阅读。

EN

回答 2

Stack Overflow用户

发布于 2017-06-05 05:55:35

不是的。如果您使用带有有效键签和用户名的函数kinit,则不需要定期从任何地方运行loginUserFromKeytab

来自文档

从keytab文件中登录用户。从keytab文件加载用户标识并将其登录。它们将成为当前登录的用户。

因此,每次使用有效的参数调用方法loginUserFromKeytab时。它登录用户。

票数 3
EN

Stack Overflow用户

发布于 2017-06-05 20:35:27

这是一个又长又复杂的故事。简言之:

  • 如果您请求显式地使用Hadoop auth库创建带有私有 Kerberos票证,那么该票证是不可再生的;您必须不时地启动一个后台线程来调用checkTGTAndReloginFromKeytab(),并且当它接近到期时,它将重新创建该票证。
  • 否则,UGI将隐式地读取共享票证缓存以获取现有的票证;它还将隐式地启动一个后台线程,以自动更新该票证(只要它没有到达续订结束时间--此时您就完了)。

一些推荐读数:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44362086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档