Аутентификация в 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, аутентификация прошла, ваша учетная запись просто не имеет права доступа к ресурсу.

Другие вопросы по тегам