Аутентификация в cURL с Windows на Hadoop HTTPFS, защищенная с помощью Kerberos
Я хочу загрузить данные с моего локального компьютера с Windows в HDFS, используя HTTPFS с curl. Кластер 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:
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 для Windows, и он показывает мне действующий билет. К сожалению, я немного знаю о Kerberos, поэтому я застрял.
Любая помощь или отправные точки для исследования очень ценятся.
1 ответ
Вам не нужно MIT Kerberos на Windows. Ваш локон был скомпилирован с SSPI, MS-вариантом GSS-API. включить --verbose
чтобы увидеть, отправляется ли билет.
Я полагаю, что у вас неверная конфигурация сети. Запустите Wireshark, отфильтруйте 'kerberos' и найдите TGS-REQ
а также TGS-REP
содержащий ваш разработанный SPN (он зарегистрирован?).
Curl безупречно работает с SPNEGO, начиная с версии 7.38.0 как для Windows, так и для Unix-подобных.
Более того, если я вижу 403, аутентификация прошла, ваша учетная запись просто не имеет права доступа к ресурсу.