Comment définir l'en-tête d'autorisation à l'aide de curl

Comment puis-je passer l'en-tête d'autorisation en utilisant cURL? ( exécutable dans /usr/bin/curl).

260
demandé sur Vidya 2010-06-15 14:28:19

8 réponses

Http://curl.haxx.se/docs/httpscripting.html

Voir partie 6. Authentification HTTP

Authentification HTTP

L'authentification HTTP est la capacité de dire au serveur votre nom d'utilisateur et mot de passe afin qu'il puisse vérifier que vous êtes autorisé à faire la demande, vous êtes faire. L'authentification de base utilisée dans HTTP (qui est le type curl utilise par par défaut) est plaine texte, ce qui signifie qu'il envoie le nom d'utilisateur et mot de passe seulement légèrement obscurci, mais toujours entièrement lisible par quiconque renifle le réseau entre vous et le serveur distant.

Pour indiquer à curl d'utiliser un utilisateur et un mot de passe pour l'authentification:

curl --user name:password http://www.example.com

Le site peut nécessiter une méthode d'authentification différente (vérifiez les en-têtes renvoyé par le serveur), et alors, ntlm, --digérer, --négocier ou même -- anyauth pourrait être des options qui vous conviennent.

Parfois, votre accès HTTP n'est disponible que via l'utilisation d'un HTTP proxy. Cela semble être particulièrement courant dans diverses entreprises. Un proxy HTTP peut nécessiter son propre utilisateur et mot de passe pour permettre au client de passer à travers Internet. Pour spécifier ceux avec curl, exécutez quelque chose comme:

curl --proxy-user proxyuser:proxypassword curl.haxx.se

Si votre proxy nécessite que l'authentification soit effectuée à l'aide de la méthode NTLM, utilisez --proxy ntlm, si elle nécessite Digérer utilisation --proxy-digest.

Si vous utilisez l'une de ces options utilisateur + mot de passe, mais omettez le mot de passe partie, curl demander le mot de passe de manière interactive.

Notez que lorsqu'un programme est exécuté, ses paramètres peuvent être lorsque la liste des processus en cours d'exécution du système. Ainsi, d'autres utilisateurs peuvent être capable de regarder vos mots de passe si vous les passez en ligne de commande simple option. Il ya des façons de contourner cela.

Il est à noter que si c'est ainsi que fonctionne L'authentification HTTP, très de nombreux sites web n'utiliseront pas ce concept lorsqu'ils fourniront des connexions, etc. Voir le chapitre de connexion Web ci-dessous pour plus de détails à ce sujet.

289
répondu Oli 2016-11-28 23:37:32

Juste en ajoutant pour ne pas avoir à cliquer:

curl --user name:password http://www.example.com

Ou si vous essayez de faire l'authentification d'envoi pour OAuth 2:

curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
226
répondu Tony 2011-12-31 18:52:30

Les jetons porteurs ressemblent à ceci:

curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com
113
répondu Steve Tauber 2014-07-30 12:14:38

(pour ceux qui recherchent PHP-curl Réponse)

$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);
51
répondu Rao 2014-06-04 19:21:42

Cela a fonctionné pour moi:

 curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/
34
répondu timj98 2017-05-09 09:50:42

Veillez à ce que lorsque vous utilisez: curl -H "Authorization: token_str" http://www.example.com

token_str et Authorization doivent être séparés par des espaces, sinon côté serveur n'obtiendra pas l'environnement HTTP_AUTHORIZATION.

12
répondu jianpx 2016-05-31 23:49:20

Pour HTTP Basic Auth:

curl -H "Authorization: Basic <_your_token_>" http://www.example.com

Remplacez _your_token_ et L'URL.

10
répondu Devaroop 2016-05-28 10:52:22

Si vous n'avez pas le jeton au moment de l'appel, vous devrez faire deux appels, l'un pour obtenir le jeton et l'autre pour extraire le jeton de la réponse, faites attention à

Jeton Grep / cut-d, - f1 / cut-d\ " - f4

Car c'est la partie qui traite de l'extraction du jeton de la réponse.

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()

Après avoir extrait le jeton, vous pouvez l'utiliser pour effectuer les appels suivants.

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 
1
répondu Upul Doluweera 2018-03-22 06:56:42