Comment puis-je passer en-tête d'autorisation en utilisant cURL? (exécutable dans /usr/bin/curl
).
http://curl.haxx.se/docs/httpscripting.html
Voir la partie 6. Authentification HTTP
Authentification HTTP
L'authentification HTTP consiste à indiquer au serveur votre nom d'utilisateur et votre mot de passe afin qu'il puisse vérifier que vous êtes autorisé à effectuer la demande que vous effectuez. L’authentification de base utilisée dans HTTP (le type utilisé par défaut par curl) est plain text based, ce qui signifie qu’il envoie un nom d’utilisateur et un mot de passe légèrement obscurcis, mais toujours parfaitement lisibles par quiconque s’installe sur 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és par le serveur), puis --ntlm, --digest, --negotiate ou même --anyauth peuvent être des options qui vous conviennent.
Parfois, votre accès HTTP est uniquement disponible via l'utilisation d'un proxy HTTP. 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 d'accéder à Internet. Pour spécifier ceux avec curl, exécutez quelque chose comme:
curl --proxy-user proxyuser:proxypassword curl.haxx.se
Si votre proxy requiert que l'authentification soit effectuée à l'aide de la méthode NTLM, utilisez --proxy-ntlm, s'il requiert Digest, utilisez --proxy-digest.
Si vous utilisez l'une de ces options utilisateur + mot de passe mais laissez de côté le mot de passe, curl demandera le mot de passe de manière interactive.
Notez que lorsqu'un programme est exécuté, ses paramètres peuvent être visibles lors de la liste des processus en cours d'exécution du système. Ainsi, d'autres utilisateurs pourront peut-être surveiller vos mots de passe si vous les transmettez en tant qu'options en ligne de commande. Il existe des moyens de contourner cela.
Il convient de noter que si c'est ainsi que fonctionne l'authentification HTTP, de nombreux sites Web n'utilisent pas ce concept lorsqu'ils fournissent des identifiants de connexion, etc. Voir le chapitre Connexion Web ci-dessous pour plus de détails à ce sujet.
Ajoutant simplement pour ne pas avoir à cliquer sur:
curl --user name:password http://www.example.com
ou si vous essayez d'envoyer l'authentification 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/
Pour HTTP Basic Auth:
curl -H "Authorization: Basic <_your_token_>" http://www.example.com
remplacez _your_token_
et l'URL.
Faites attention quand vous utilisez: curl -H "Authorization: token_str" http://www.example.com
token_str
et Authorization
doivent être séparés par un espace, sinon le serveur ne recevra pas l'environnement HTTP_AUTHORIZATION
.
Si vous n'avez pas le jeton au moment de l'appel, vous devrez passer deux appels, un pour obtenir le jeton et l'autre pour extraire le jeton de la réponse, faites attention à
jeton de grep | cut -d, -f1 | cut -d\"-f4
comme c'est la partie qui traite d'extraire le 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 utiliser ce dernier pour passer les appels suivants, comme suit.
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