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
).
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.
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
Les jetons porteurs ressemblent à ceci:
curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com
(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);
Cela a fonctionné pour moi:
curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/
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
.
Pour HTTP Basic Auth:
curl -H "Authorization: Basic <_your_token_>" http://www.example.com
Remplacez _your_token_
et L'URL.
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