使用kerberos身份验证从服务器下载文件

时间:2012-07-01 17:47:29

标签: shell https download kerberos

我正在尝试从Linux shell下载脚本,通过https保护网络服务器,该文件受kerberos身份验证保护。我尝试过使用wget和curl,但这些似乎都不支持kerberos而不是https。

是否有通过https支持kerberos的linux命令行实用程序?如果是这样,你如何使用它?

3 个答案:

答案 0 :(得分:11)

如果它有GSS-Negotiate,完全有可能卷曲。检查curl -V它应该返回功能行,其中包含 GSS-Negotiate (Ubuntu 12.04包含它)。您还需要Kerberos客户端工具(如Ubuntu上的krb5-user)并使用REALM和kdc设置/etc/krb5.conf。见MIT docs

首先,您必须能够从Web服务器使用的同一个KDC获取票证(忽略更复杂的可能性)。此外,您要访问的域必须具有正确的反向指针或在/etc/hosts中进行配置,因此请检查您的DNS。

kinit <some user principal>

开始

然后,您可以卷曲到要检查的网址。 curl需要用户才能接受您的协商(但实际上并未使用,无论用户名或密码是什么。)我还使用--trace-ascii-来获取Kerberos错误。< / p>

例如:

 curl  --negotiate -u foo --trace-ascii -  http://intranet/

如果你看到:

== Info: gss_init_sec_context() failed: : Credentials cache file '/tmp/krb5cc_0' not found<= Recv header, 29 bytes (0x1d)

然后你忘了kinit或者没有成功。

如果您看到类似的内容但是krb5kdc_err_s_principal_unknown,则使用反向指针或主机条目构建的kerberos库的名称在KDC上没有相应的主体。

否则,如果服务器发送了正确的HTTP/1.1 401: Authorization RequiredWWW-Authenticate: Negotiate,您将获得身份验证。

答案 1 :(得分:6)

检查卷曲手册页。您可以使用--negotiate来使用SPNego / GSSAPI / Kerberos。大多数网络服务器都支持SPNego。

答案 2 :(得分:1)

curl如果您使用fbopenssl进行编译,则会获得SPNEGO支持,但没有内置支持。我已经做到了,但它确实有效。