使用Kerberos

时间:2018-01-30 12:21:43

标签: curl hdfs kerberos httpfs

我想使用带有curl的HTTPFS将数据从我的本地Windows机器加载到HDFS。 Hadoop集群使用Kerberos进行保护。

如何设法完成身份验证?

尝试以下声明时......

curl -k --negotiate -u : -i -X PUT "HTTP..."

它以

失败
HTTP/1.1 401 Unauthorized
Server: Apache-Coyote/1.1
WWW-Authenticate: Negotiate
Set-Cookie: hadoop.auth=; Path=/; Secure; HttpOnly
Content-Type: text/html;charset=utf-8
Content-Length: 997
Date: Tue, 30 Jan 2018 12:15:30 GMT

HTTP/1.1 403 Forbidden
Server: Apache-Coyote/1.1
Set-Cookie: hadoop.auth=; Path=/; Secure; HttpOnly
Content-Type: text/html;charset=utf-8
Content-Length: 1149
Date: Tue, 30 Jan 2018 12:15:30 GMT

卷曲版本是:

curl 7.46.0 (x86_64-pc-win32) libcurl/7.46.0 OpenSSL/1.0.2e zlib/1.2.8 WinIDN libssh2/1.6.0
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL libz

我为Windows安装了MIT Kerberos,它向我显示了一张有效的票证。 不幸的是,我对Kerberos知之甚少,这就是我陷入困境的原因。

非常感谢任何研究方面的帮助或起点。

1 个答案:

答案 0 :(得分:1)

Windows上不需要MIT Kerberos。您的curl已经使用MS的GSS-API变体SSPI编译。启用--verbose以查看是否已发送故障单。

我高度认为您有网络错误配置。启动Wireshark,过滤“kerberos”并查找包含您设计的SPN的TGS-REQTGS-REP(是否已注册?)。

在Windows和Unix之类的版本7.34.0之后,Curl与SPNEGO完美配合。

此外,如果我看到403,身份验证已通过,则您的帐户无权访问该资源。