当前位置: 首页 > 知识库问答 >
问题:

使用Java对启用Kerberos的Hadoop集群进行身份验证

竺和洽
2023-03-14

我有Kerberos并启用了Hadoop集群。我需要使用Java代码执行HDFS操作。

多谢了。

共有1个答案

江正德
2023-03-14

如果您只想将HDFS Java API用于短期连接,那么UserGroupInformation有一个LoginUserFromKeyTab方法。

如果您想要一个持久的连接(即比初始Kerberos TGT的生存期更长),那么请查看该帖子。

如果您对Kerberos的阴暗面感兴趣(好吧,反正也没有其他方面),那么请看一看《大门之外的疯狂》在线书--风险自负。

~~~~~~~

顺便说一句,Java API还有一个替代方案:WebHDFS REST服务。但是在Windows上,您仍然需要一些Java代码来创建Kerberos TGT(使用GSSAPI,即Linux的方式,而不是使用SSPI,即Microsoft的方式!!!),运行SPNEGO初始身份验证,并检索委托令牌。此时,任何HTTPS库都能够使用该令牌处理文件操作。

 类似资料:
  • 15/02/06 15:17:12警告IPC.Client:连接到服务器时遇到异常:javax.security.sasl.saslexception:GSS initiate失败[由GSSException:未提供有效凭据(机制级别:找不到任何Kerberos tgt导致)]LS:本地异常失败:java.io.ioException:javax.security.sasl.saslexcepti

  • 我已经在Kubernetes上建立了Spark独立集群,并试图连接到Kubernetes上没有的Kerberized Hadoop集群。我已经将core-site.xml和hdfs-site.xml放在Spark集群的容器中,并相应地设置了HADOOP_CONF_DIR。我能够成功地在Spark容器中为访问Hadoop集群的principal生成kerberos凭据缓存。但是当我运行spark-s

  • 我的环境设置(AWS EKS)的方式是,在我的中,用户有一个exec配置来调用。 这样,当运行时,它将请求令牌对Kubernetes集群进行身份验证。 我目前正在编写一个将与Kubernetes API交互的客户端应用程序。这是用Python编写的,使用的是官方的Python客户端。 在执行任何示例时,我得到的错误是不允许执行某个操作(例如,列表pods)。我认为问题的根源在于我需要将中的令牌传递

  • 但现在我们希望使用keytab文件生成的票证过期 我是一个使用Kerberos的新手,任何指向正确方向的指针都会有很大的帮助。

  • 我知道Fiddler支持Kerberos,所以我的想法是把打嗝链到Fiddler上。我首先确保我可以在Fiddler中使用篡改(使用此链接作为指南)。然后我将Fiddler设置为Burp的上游代理,但是当我在Burp中篡改一个请求时,在发出请求时仍然得到一个未经授权的401。 关于如何让Burp进行Kerberos身份验证,还有其他想法吗?

  • 我正在使用一个keytab,并使用windows命令行上的kinit命令设置它。我得到消息“new ticket is storage in cache file”。之后,当我运行java应用程序访问keytab文件以获取密钥时,我得到以下错误。 C:\users\cxxxxx\git\abcd.keytab refreshKrb5Config为false主体为xxxx_dev@xxxx.xxxx