I'm trying to connect to a Livy REST service under Kerberos security. On Linux CentoS curl
works fine with negotiate
, after receiving a Kerberos kinit
ticket the connection through
curl --negotiate -u : http://service_link
The problem I'm facing is trying to do the same on remote Windows desktop. I'm using MIT Kerberos for Windows, which is able to do a successful kinit
. However, curl
seems to be negotiating using the NTLM SSL tickets instead of Kerberos, which results in the following error:
AuthenticationFilter: Authentication exception: org.apache.hadoop.security.authentication.client.AuthenticationException
I've tried using the official curl release for windows, having these features (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
and the gow 0.8.0 version of curl:
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
Both of these use NTLM SLL when negotiating.
Question: Is there a way to force using Kerberos instead of NTLM? Is it possible to debug the Negotiator to see whether (and where) it is looking for Kerberos (and possibly not seeing) tickets?
Concerning the Kerberos, it seems to be storing the keytabs on its api, so I've set the KRB5CCNAME
environment variable to API:Initial default ccache
; klist
is able to see the ticket, however, maybe curl
needs additional specification?
Also -- are there alternative methods to curl
for such connection with Kerberos security?