curl:如何在windows上使用kerberos而不是ntlm身份验证?

wkyowqbh  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(757)

我正在尝试连接到kerberos安全下的livy rest服务。在linux centos上 curl 适合搭配 negotiate ,在收到kerberos kinit 通过售票连接

curl --negotiate -u : http://service_link

我所面临的问题是在远程windows桌面上尝试同样的操作。我正在使用mitkerberos for windows,它能够成功地 kinit . 然而, curl 似乎正在使用ntlm ssl票证而不是kerberos进行协商,这将导致以下错误:

AuthenticationFilter: Authentication exception: org.apache.hadoop.security.authentication.client.AuthenticationException

我试过使用windows的官方curl版本,拥有这些特性( 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

以及GOW0.8.0版本的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

这两种方法在谈判时都使用ntlm sll。
问:有没有办法强制使用kerberos而不是ntlm?是否可以调试谈判者以查看它是否(以及在哪里)在寻找kerberos(可能没有看到)票据?
关于kerberos,它似乎在其api上存储keytab,所以我设置了 KRB5CCNAME 环境变量到 API:Initial default ccache ; klist 不过,也许能看到票 curl 需要附加规格吗?
还有——有没有替代的方法 curl 与kerberos安全性的这种连接?

h9vpoimq

h9vpoimq1#

http://service_link 是kerberos的愚蠢url。由于这是一个单标签名称,客户机将只在其默认域中查找服务票证。最好使用和fqdn,以便可以解析主机并将域部分与域匹配。
而且,在你的帖子里也没有提到spn。如果curl能够猜到正确的kdc,那么需要在web服务器上运行auth的帐户上注册spnhttp/service\链接。
最后,您是否使用fiddler或类似工具确认您的web服务器正在发回www authenticate:negotiate header ? curl没有代理设置。
如果所有设置都不正确,就不能强制kerberos。如果他们是对的,curl将首先尝试并成功。取决于什么是错误的,它可能会尝试路缘,然后恢复到ntlm。

相关问题