如何在cURL中传递Windows凭据?


20

我正在编写一个脚本,该脚本使用cURL从内部Web服务器提取数据。我可以显式地将--user与--ntlm结合使用,并且一切正常,但是我无法识别任何登录的人并将其透明地传递。如果我在Chrome / Firefox / IE中访问同一站点,它将立即为我提供权限,而不会出现任何提示(如果重要,我们将在此处使用代理)。服务器正在使用IIS。

Answers:


26

我使用(在Windows域环境中):

curl --ntlm -u : ...

cUrl知道可以提供我的域凭据,并且每次都可以使用。


3
谢谢@ BillP3rd!请注意:在Windows命令提示符下运行curl时,此方法非常有效,但如果在Windows计算机上的Cygwin之类的终端仿真器中运行,则无法正常工作。
ErinsMatthew

5

使用-u :,它提供一个空的用户代码和密码,以获取cURL从凭证存储区中提取用户名和密码。

我在Unix上使用GSSAPI和 curl -u : --negotiate ...


1

要详细说明@Phil P,请在这里从我的ubuntu框中回答。

  1. 在此处找到您的域控制器的IP地址说明
  2. 安装kerberos sudo apt-get install krb5-user
  3. 在您的计算机中输入以下内容 /etc/krb5.conf

    [libdefaults]
        default_realm = YOURDOMAN
        # note that this must be in UPPER CASE
        krb4_config = /etc/krb.conf
        krb4_realms = /etc/krb.realms
        kdc_timesync = 1
        ccache_type = 4
        forwardable = true
        proxiable = true
        v4_instance_resolve = false
        v4_name_convert = {
            host = {
                rcmd = host
                ftp = ftp
            }
            plain = {
                something = something-else
            }
        }
        fcc-mit-ticketflags = true
    [realms]
        YOURDOMAN = {
            kdc = YOUR_DOAMIN_CONTROLLER_IP
        }
    [domain_realm]
        yourdomain = yourdomain
        yourdomain. = yourdomain
    
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.