Я пытаюсь подключиться к службе Livy REST под защитой Kerberos. В Linux CentoS curl
отлично работает с negotiate
, после получения билета Kerberos kinit
соединение через
curl --negotiate -u : http://service_link
Проблема, с которой я столкнулся, заключается в попытке сделать то же самое на удаленном рабочем столе Windows. Я использую MIT Kerberos для Windows, который успешно выполняет kinit
. Однако curl
, по-видимому, использует билеты NTLM SSL вместо Kerberos, что приводит к следующей ошибке:
AuthenticationFilter: Authentication exception: org.apache.hadoop.security.authentication.client.AuthenticationException
Я пробовал использовать официальную версию curl для Windows со следующими функциями (curl --version
):
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL libz TLS-SRP HTTP2 HTTPS-proxy
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM SPNEGO SSL SSPI libz
Оба они используют NTLM SLL при согласовании.
Вопрос. Можно ли принудительно использовать Kerberos вместо NTLM? Можно ли отладить Negotiator, чтобы узнать, ищет ли (и где) он билеты Kerberos (и, возможно, не видит)?
Что касается Kerberos, похоже, он хранит таблицы ключей в своем API, поэтому я установил для переменной среды KRB5CCNAME
значение API:Initial default ccache
; klist
видит билет, но может curl
нужно уточнить?
Кроме того, есть ли альтернативные методы curl
для такого соединения с защитой Kerberos?