Wie kann ich meine Windows-Anmeldeinformationen in cURL übergeben?


19

Ich schreibe ein Skript, das cURL verwendet, um Daten von einem internen Webserver abzurufen. Ich kann explizit --user in Kombination mit --ntlm verwenden und alles funktioniert gut, aber ich kann nicht erkennen, wer angemeldet ist, und es transparent weitergeben. Wenn ich dieselbe Site in Chrome / Firefox / IE besuche, erhalte ich sofort Berechtigungen ohne Aufforderung (hier wird ein Proxy verwendet, wenn dies wichtig ist). Der Server verwendet IIS.

Antworten:


26

Ich verwende (in einer Windows-Domänenumgebung):

curl --ntlm -u : ...

cUrl kann meine Domain-Anmeldeinformationen angeben und dies funktioniert jedes Mal.


3
Vielen Dank an BillP3rd! Nur ein Hinweis: Dies funktioniert einwandfrei, wenn Sie curl in einer Windows-Eingabeaufforderung ausführen, jedoch nicht, wenn Sie in einem Terminalemulator wie Cygwin auf Ihrem Windows-Computer ausgeführt werden.
ErinsMatthew

5

Verwenden Sie -u :diesen Code, der einen leeren Benutzercode und ein leeres Kennwort enthält, damit cURL diese aus dem Anmeldeinformationsspeicher abholt.

Ich benutze dies unter Unix mit GSSAPI und curl -u : --negotiate ...


1

Um auf @Phil P näher einzugehen, antworten Sie hier, wie ich es aus meiner Ubuntu-Box heraus gemacht habe.

  1. Finden Sie heraus , die IP - Adresse des Domänencontrollers Anweisungen, wie das tun hier
  2. Installieren Sie Kerberos sudo apt-get install krb5-user
  3. Geben Sie Folgendes in Ihr ein /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
    
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.