Bagaimana saya bisa meneruskan kredensial Windows saya di cURL?

20

Saya sedang menulis skrip yang menggunakan cURL untuk menarik data dari server web internal. Saya dapat secara eksplisit menggunakan --user yang dikombinasikan dengan --ntlm dan semuanya berfungsi dengan baik, tetapi saya tidak bisa membuatnya mengenali siapa saja yang masuk dan mengirimkannya secara transparan. Jika saya mengunjungi situs yang sama di Chrome / Firefox / IE itu langsung memberi saya izin tanpa ada permintaan (Kami menggunakan proxy di sini jika itu penting). Server menggunakan IIS.

MGSoto
sumber

Jawaban:

26

Saya menggunakan (dalam lingkungan domain Windows):

curl --ntlm -u : ...

cUrl tahu untuk memasok kredensial domain saya dan berfungsi setiap saat.

BillP3rd
sumber
3
Terima kasih @ BillP3rd! Hanya kepala: ini berfungsi dengan baik ketika menjalankan curl di dalam command prompt Windows, tetapi tidak berfungsi jika Anda menjalankan di dalam emulator terminal seperti Cygwin pada mesin Windows Anda.
ErinsMatthew
5

Gunakan -u :yang menyediakan kode pengguna dan kata sandi kosong, untuk mendapatkan CURL untuk mengambilnya dari toko kredensial.

Saya menggunakan ini di Unix dengan GSSAPI dan curl -u : --negotiate ...

Phil P
sumber
1

Untuk menguraikan @Phil P, jawab dia bagaimana saya melakukannya dari kotak ubuntu saya.

  1. Cari tahu alamat IP dari instruksi pengontrol domain Anda tentang cara melakukannya di sini
  2. Instal kerberos sudo apt-get install krb5-user
  3. Masukkan yang berikut di /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
sumber