¿Cómo puedo pasar mis credenciales de Windows en cURL?

20

Estoy escribiendo un script que usa cURL para extraer datos de un servidor web interno. Puedo usar explícitamente --user combinado con --ntlm y todo funciona bien, pero no puedo hacer que reconozca a quien haya iniciado sesión y lo pase de manera transparente. Si visito el mismo sitio en Chrome / Firefox / IE, inmediatamente me da permisos sin ningún aviso (estamos usando un proxy aquí si eso es importante). El servidor está usando IIS.

MGSoto
fuente

Respuestas:

26

Yo uso (en un entorno de dominio de Windows):

curl --ntlm -u : ...

cUrl sabe que debe proporcionar mis credenciales de dominio y funciona todo el tiempo.

BillP3rd
fuente
3
Gracias @ BillP3rd! Solo un aviso: esto funciona perfectamente cuando se ejecuta curl dentro de un símbolo del sistema de Windows, pero no funciona si está ejecutando dentro de un emulador de terminal como Cygwin en su máquina Windows.
ErinsMatthew
5

Use el -u :cual proporciona un código de usuario y contraseña vacíos, para que cURL los recoja del almacén de credenciales.

Lo uso en Unix con GSSAPI y curl -u : --negotiate ...

Phil P
fuente
1

Para elaborar sobre @Phil P, la respuesta aquí es cómo lo hice desde mi cuadro de ubuntu.

  1. Encuentre la dirección IP de las instrucciones de su controlador de dominio sobre cómo hacerlo aquí
  2. Instalar kerberos sudo apt-get install krb5-user
  3. Ingrese lo siguiente en su /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
fuente