Como posso passar minhas credenciais do Windows em cURL?

19

Estou escrevendo um script que usa cURL para extrair dados de um servidor web interno. Posso usar explicitamente --user combinado com --ntlm e tudo funciona bem, mas não consigo reconhecer quem está conectado e passá-lo de forma transparente. Se eu visitar o mesmo site no Chrome / Firefox / IE, ele imediatamente me dará permissões sem nenhum aviso (estamos usando um proxy aqui, se isso for importante). O servidor está usando o IIS.

MGSoto
fonte

Respostas:

26

Eu uso (em um ambiente de domínio do Windows):

curl --ntlm -u : ...

O cUrl sabe fornecer minhas credenciais de domínio e funciona sempre.

BillP3rd
fonte
3
Obrigado @ BillP3rd! Apenas um alerta: isso funciona perfeitamente ao executar o curl em um prompt de comando do Windows, mas não funciona se você estiver executando em um emulador de terminal como o Cygwin em sua máquina Windows.
ErinsMatthew
5

Use o -u :que fornece um código de usuário e uma senha vazios, para obter o cURL para buscá-los no armazenamento de credenciais.

Eu uso isso no Unix com GSSAPI e curl -u : --negotiate ...

Phil P
fonte
1

Para elaborar o @Phil P, responda a seguir como eu fiz isso na minha caixa do Ubuntu.

  1. Descubra o endereço IP das instruções do seu controlador de domínio sobre como fazer isso aqui
  2. Instalar o kerberos sudo apt-get install krb5-user
  3. Digite o seguinte em seu /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
fonte