Risposte:
http://curl.haxx.se/docs/httpscripting.html
Vedi parte 6. Autenticazione HTTP
Autenticazione HTTP
L'autenticazione HTTP è la capacità di dire al server il tuo nome utente e password in modo che possa verificare che ti è permesso fare la richiesta che stai facendo. L'autenticazione di base utilizzata in HTTP (che è il tipo di curl utilizzato per impostazione predefinita) è basata su testo semplice , il che significa che invia nome utente e password solo leggermente offuscati, ma ancora completamente leggibili da chiunque annusi sulla rete tra te e il server remoto.
Per dire a curl di usare un utente e una password per l'autenticazione:
curl --user name:password http://www.example.com
Il sito potrebbe richiedere un diverso metodo di autenticazione (controlla le intestazioni restituite dal server), e quindi --ntlm, --digest, --negotiate o persino --anyauth potrebbero essere le opzioni adatte a te.
A volte l'accesso HTTP è disponibile solo tramite l'uso di un proxy HTTP. Questo sembra essere particolarmente comune in varie aziende. Un proxy HTTP può richiedere il proprio utente e password per consentire al client di accedere a Internet. Per specificare quelli con arricciatura, esegui qualcosa del tipo:
curl --proxy-user proxyuser:proxypassword curl.haxx.se
Se il tuo proxy richiede che l'autenticazione venga eseguita usando il metodo NTLM, usa --proxy-ntlm, se richiede Digest usa --proxy-digest.
Se si utilizza una di queste opzioni utente + password ma si esclude la parte password, curl richiederà la password in modo interattivo.
Si noti che quando si esegue un programma, i suoi parametri potrebbero essere visibili quando si elencano i processi in esecuzione del sistema. Pertanto, altri utenti potrebbero essere in grado di guardare le tue password se le passi come semplici opzioni da riga di comando. Ci sono modi per aggirare questo.
Vale la pena notare che mentre questo è il modo in cui funziona l'autenticazione HTTP, molti siti Web non useranno questo concetto quando forniscono accessi ecc. Vedi il capitolo Accesso Web più avanti per maggiori dettagli.
Basta aggiungere in modo da non dover fare clic:
curl --user name:password http://www.example.com
o se stai provando a inviare l'autenticazione per OAuth 2:
curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
-H
opzione è fantastica.
-H Authorization: Basic <Base64EncodedCredentials>
HMAC-SHA256
sempre un errore di intestazione di autorizzazione mancante
<Base64EncodedCredentials>
come detto da @ Timothy-kansaki, è possibile ottenere la credenziale codificato utilizzando il comando: cred="$( echo $NAME:$PASSWORD | base64 )"; curl -H "Authorization: Basic $cred" https://example.com
. Per riferimento, consultare stackoverflow.com/questions/16918602/…
I token al portatore si presentano così:
curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com
(per coloro che cercano una risposta php-curl )
$service_url = 'https://example.com/something/something.json';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password"); //Your credentials goes here
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //IMP if the url has https and you don't want to verify source certificate
$curl_response = curl_exec($curl);
$response = json_decode($curl_response);
curl_close($curl);
var_dump($response);
Questo ha funzionato per me:
curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/
Authorization: bearer xxxxxxxxx
?
Bearer
Bearer
.
Per HTTP Basic Auth:
curl -H "Authorization: Basic <_your_token_>" http://www.example.com
sostituire _your_token_
e l'URL.
echo -ne "<your-user>:<your-pass>" | base64 --wrap 0
genererà il token di autenticazione di base.
-H "Authorization: Basic <_your_token_>"
ha lo stesso effetto di --user login:password
. Puoi verificarlo concurl -v
Fai attenzione quando usi:
curl -H "Authorization: token_str" http://www.example.com
token_str
e Authorization
deve essere separato da uno spazio bianco, altrimenti il lato server non otterrà l' HTTP_AUTHORIZATION
ambiente.
Se non si dispone del token al momento della chiamata, è necessario effettuare due chiamate, una per ottenere il token e l'altra per estrarre il token dalla risposta, prestare attenzione a
token grep | cut -d, -f1 | taglia -d \ "-f4
poiché è la parte che si occupa dell'estrazione del token dalla risposta.
echo "Getting token response and extracting token"
def token = sh (returnStdout: true, script: """
curl -S -i -k -X POST https://www.example.com/getToken -H \"Content-Type: application/json\" -H \"Accept: application/json\" -d @requestFile.json | grep token | cut -d, -f1 | cut -d\\" -f4
""").split()
Dopo aver estratto il token è possibile utilizzare il token per effettuare chiamate successive come segue.
echo "Token : ${token[-1]}"
echo "Making calls using token..."
curl -S -i -k -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer ${token[-1]}" https://www.example.com/api/resources