Jak mogę przekazać moje poświadczenia systemu Windows w cURL?

20

Piszę skrypt, który używa cURL do pobierania danych z wewnętrznego serwera WWW. Mogę jawnie używać --user w połączeniu z --ntlm i wszystko działa dobrze, ale nie mogę go rozpoznać, kto jest zalogowany i przekazać go w sposób przejrzysty. Jeśli odwiedzę tę samą witrynę w przeglądarce Chrome / Firefox / IE, natychmiast otrzymam uprawnienia bez żadnych monitów (używamy tutaj serwera proxy, jeśli to ważne). Serwer używa IIS.

MGSoto
źródło

Odpowiedzi:

26

Używam (w środowisku domeny Windows):

curl --ntlm -u : ...

cUrl wie, aby podać moje poświadczenia domeny i działa za każdym razem.

BillP3rd
źródło
3
Dzięki @ BillP3rd! Tylko jedna głowa: działa to idealnie, gdy uruchomisz curl w wierszu polecenia systemu Windows, ale nie działa, jeśli pracujesz w emulatorze terminala, takim jak Cygwin, na komputerze z systemem Windows.
ErinsMatthew
5

Użyj, -u :która zapewnia pusty kod użytkownika i hasło, aby uzyskać cURL, aby odebrać je ze magazynu danych logowania.

Używam tego na Uniksie z GSSAPI i curl -u : --negotiate ...

Phil P.
źródło
1

Aby rozwinąć odpowiedź na @Phil P, proszę przeczytać tutaj, jak to zrobiłem z mojego urządzenia Ubuntu.

  1. Znajdź adres IP instrukcji kontrolera domeny, jak to zrobić tutaj
  2. Zainstaluj Kerberos sudo apt-get install krb5-user
  3. Wpisz następujące dane w swoim /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
    
Will Munn
źródło