Réponses:
http://curl.haxx.se/docs/httpscripting.html
Voir partie 6. Authentification HTTP
Authentification HTTP
L'authentification HTTP est la possibilité de dire au serveur votre nom d'utilisateur et votre mot de passe afin qu'il puisse vérifier que vous êtes autorisé à faire la demande que vous faites. L'authentification de base utilisée dans HTTP (qui est le type utilisé par défaut par curl) est basée sur du texte brut , ce qui signifie qu'elle envoie le nom d'utilisateur et le mot de passe seulement légèrement obscurcis, mais toujours entièrement lisibles par quiconque renifle sur le réseau entre vous et le serveur distant.
Pour dire à 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 nécessite Digest, utilisez --proxy-digest.
Si vous utilisez l'une de ces options utilisateur + mot de passe mais en omettant la partie mot de passe, curl vous 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 peuvent être en mesure de surveiller vos mots de passe si vous les transmettez en tant qu'options de ligne de commande simples. Il existe des moyens de contourner cela.
Il convient de noter que bien que cela fonctionne comme l'authentification HTTP, de nombreux sites Web n'utiliseront pas ce concept lorsqu'ils fournissent des connexions, etc. Voir le chapitre Connexion Web plus loin pour plus de détails à ce sujet.
Ajoutez simplement pour ne pas avoir à cliquer:
curl --user name:password http://www.example.com
ou si vous essayez de faire une authentification d'envoi pour OAuth 2:
curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
-H
option est excellente.
-H Authorization: Basic <Base64EncodedCredentials>
HMAC-SHA256
toujours une erreur d'en-tête d'autorisation manquant
<Base64EncodedCredentials>
comme mentionné par @ fléole-Kansaki, vous pouvez obtenir les informations d' identification encodée en utilisant la commande: cred="$( echo $NAME:$PASSWORD | base64 )"; curl -H "Authorization: Basic $cred" https://example.com
. Pour référence, voir stackoverflow.com/questions/16918602/…
Les jetons au porteur ressemblent à ceci:
curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com
(pour ceux qui recherchent une réponse 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);
Cela a fonctionné pour moi:
curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/
Authorization: bearer xxxxxxxxx
?
Bearer
Bearer
.
Pour l'authentification HTTP de base:
curl -H "Authorization: Basic <_your_token_>" http://www.example.com
remplacer _your_token_
et l'URL.
echo -ne "<your-user>:<your-pass>" | base64 --wrap 0
générera le jeton d'authentification de base.
-H "Authorization: Basic <_your_token_>"
fait le même effet que --user login:password
. Vous pouvez le vérifier aveccurl -v
Veillez à ce que lorsque vous utilisez:
curl -H "Authorization: token_str" http://www.example.com
token_str
et Authorization
doit être séparé par un espace blanc, sinon le côté serveur n'obtiendra pas l' HTTP_AUTHORIZATION
environnement.
Si vous ne disposez pas du jeton au moment de l'appel, vous devrez effectuer deux appels, l'un pour obtenir le jeton et l'autre pour extraire le jeton de la réponse, faites attention à
jeton grep | coupe -d, -f1 | couper -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 utiliser le jeton pour effectuer des appels ultérieurs 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