2012-08-23 12 views
24

Sto tentando di accedere a un servizio che si trova dietro l'autenticazione di Windows. Pensavo di poter passare le credenziali come vengono passate le credenziali di autenticazione di base HTTP, ma non funziona. Quando faccio quanto segue, ottengo un errore 401 e sono assolutamente sicuro che la password sia corretta.Perché cURL non funziona con l'autenticazione di Windows su IIS7?

curl --user username:password http://example.com 

Perché non funziona?

risposta

39

Se si utilizza l'autenticazione di Windows, è necessario utilizzare NTLM:

curl --ntlm --user username:password http://example.com 
+3

E se non inserisci la password, la riga di comando ti chiederà di farlo. – Neal

+3

Vedere la mia risposta con come utilizzare l'utente attualmente connesso per le vostre richieste –

17

Si può anche lasciare i campi username e password vuota (-u :) e ricciolo utilizzerà le credenziali correnti dal vostro ambiente:

curl --ntlm -u : http://example.com 

Per il docs (sotto -u, --user)

Se si utilizza un binario curl abilitato per SSPI di Windows ed esegue Kerberos V5, autenticazione Negotiate, NTLM o Digest, è possibile dire a arricciato a selezionare il nome utente e la password dal proprio ambiente specificando a due punti singoli con questa opzione: " -u: ".

Kerberos-Enabled Binaries

0

Voglio solo aggiungere che l'autorizzazione potrebbe includere diversi reindirizzamenti e l'autenticazione NTLM potrebbe essere richiesto per la seconda o successive richieste, ma non il primo. In questo caso le risposte qui non funzioneranno.

Il fatto è che CURL invia le credenziali con la prima richiesta solo, mentre potrebbe essere necessario per il secondo, ad esempio. Per trasmettere le credenziali con tutte le richieste, utilizzare l'opzione --location-trusted.

Da documentazione CURL (-L option):

Quando si utilizza l'autenticazione, l'arricciatura invia solo le sue credenziali per l'host iniziale. Se un reindirizzamento si arriccia su un host diverso, non sarà in grado di intercettare l'utente + la password. Vedi anche --location-trusted su come cambiarlo.

Questa nota importante mi ha aiutato ad autorizzare sul sito Web della mia azienda. Spero che aiuti qualcun altro.

Problemi correlati