我想使用带有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 GMTcurl版本为:
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我安装了MIT Kerberos for Windows,它显示了一个有效的票证。不幸的是,我对Kerberos了解不多,这就是为什么我有点卡住了。
任何帮助或研究的起点都是非常感谢的。
发布于 2018-01-30 23:45:46
在Windows上不需要MIT Kerberos。您的curl是使用SSPI编译的,SSPI是MS的GSS-API的变体。启用--verbose以查看是否发送了票证。
我高度假设您的网络配置有误。启动Wireshark,过滤“kerberos”,查找包含您设计的SPN的TGS-REQ和TGS-REP (是否已注册?)。
从Windows和类Unix的7.38.0版本开始,Curl就可以完美地与SPNEGO协同工作。
此外,如果我看到403,身份验证已经通过,您的帐户就没有资格访问资源。
https://stackoverflow.com/questions/48521373
复制相似问题