我試圖連接到Kerberos安全下的Livy REST服務。在Linux CentOS的curl
與negotiate
正常工作,接收一個Kerberos kinit
票通過curl:如何在Windows上使用Kerberos代替NTLM身份驗證?
curl --negotiate -u : http://service_link
我面對的是試圖做同樣的遠程Windows桌面上的問題連接後。我正在使用Windows的MIT Kerberos,它能夠成功執行kinit
。但是,curl
似乎使用NTLM SSL票,而不是Kerberos的,這會導致下面的錯誤進行談判:
AuthenticationFilter: Authentication exception: org.apache.hadoop.security.authentication.client.AuthenticationException
我使用official curl release for 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,它似乎將keytabs存儲在它的api上,所以我設置了KRB5CCNAME
環境變量爲API:Initial default ccache
; klist
能夠看到票,但是,也許curl
需要額外的規格?
而且 - 有沒有其他的方法來curl
與Kerberos安全這樣的連接?
感謝您的回覆,因此出現了其他問題,所以只有upvoted。 – Nutle
由於我通過ssh對它進行隧道傳輸,所以服務鏈接很愚蠢,儘管在''hosts''中改變它並沒有幫助。不是通過Fiddler,而是通過''curl''中的'--verbose''我可以看到服務器正在發回Negotiate頭。所以我最好的猜測是,問題出在SPN HTTP/service_link正確註冊,因爲我不熟悉它,並且可能缺少一些設置。 – Nutle