Comment puis-je transmettre mes informations d'identification Windows dans cURL?

20

J'écris un script qui utilise cURL pour extraire des données d'un serveur Web interne. Je peux utiliser explicitement --user combiné avec --ntlm et tout fonctionne bien, mais je n'arrive pas à reconnaître qui s'est connecté et à le transmettre de manière transparente. Si je visite le même site dans Chrome / Firefox / IE, il me donne immédiatement des autorisations sans aucune invite (nous utilisons un proxy ici si c'est important). Le serveur utilise IIS.

MGSoto
la source

Réponses:

26

J'utilise (dans un environnement de domaine Windows):

curl --ntlm -u : ...

cUrl sait fournir mes informations d'identification de domaine et cela fonctionne à chaque fois.

BillP3rd
la source
3
Merci @ BillP3rd! Juste un avertissement: cela fonctionne parfaitement lorsque vous exécutez curl dans une invite de commande Windows, mais ne fonctionne pas si vous exécutez dans un émulateur de terminal comme Cygwin sur votre machine Windows.
ErinsMatthew
5

Utilisation -u :qui fournit un code utilisateur et un mot de passe vides, pour que cURL les récupère dans le magasin d'informations d'identification.

Je l'utilise sur Unix avec GSSAPI et curl -u : --negotiate ...

Phil P
la source
1

Pour élaborer sur @Phil P, répondez ici comment je l'ai fait à partir de ma boîte Ubuntu.

  1. Découvrez l'adresse IP de vos instructions de contrôleur de domaine sur la façon de le faire ici
  2. Installer des kerberos sudo apt-get install krb5-user
  3. Entrez ce qui suit dans votre /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
la source