Antworten:
http://curl.haxx.se/docs/httpscripting.html
Siehe Teil 6. HTTP-Authentifizierung
HTTP-Authentifizierung
Die HTTP-Authentifizierung ist die Möglichkeit, dem Server Ihren Benutzernamen und Ihr Kennwort mitzuteilen, damit überprüft werden kann, ob Sie die von Ihnen ausgeführte Anforderung ausführen dürfen. Die in HTTP verwendete Standardauthentifizierung (die standardmäßig vom Typ Curl verwendet wird) basiert auf einfachem Text. Dies bedeutet, dass Benutzername und Kennwort nur geringfügig verschleiert gesendet werden, aber dennoch vollständig von jedem gelesen werden können, der im Netzwerk zwischen Ihnen und dem Remoteserver schnüffelt.
So weisen Sie curl an, einen Benutzer und ein Kennwort für die Authentifizierung zu verwenden:
curl --user name:password http://www.example.com
Die Site erfordert möglicherweise eine andere Authentifizierungsmethode (überprüfen Sie die vom Server zurückgegebenen Header), und dann sind --ntlm, --digest, --negotiate oder sogar --anyauth möglicherweise Optionen, die zu Ihnen passen.
Manchmal ist Ihr HTTP-Zugriff nur über einen HTTP-Proxy verfügbar. Dies scheint bei verschiedenen Unternehmen besonders häufig zu sein. Ein HTTP-Proxy benötigt möglicherweise einen eigenen Benutzer und ein eigenes Kennwort, damit der Client ins Internet gelangen kann. Führen Sie Folgendes aus, um diejenigen mit Locken anzugeben:
curl --proxy-user proxyuser:proxypassword curl.haxx.se
Wenn Ihr Proxy die Authentifizierung mithilfe der NTLM-Methode erfordert, verwenden Sie --proxy-ntlm. Wenn Digest erforderlich ist, verwenden Sie --proxy-Digest.
Wenn Sie eine dieser Benutzer- + Kennwortoptionen verwenden, aber den Kennwortteil weglassen, fordert curl interaktiv zur Eingabe des Kennworts auf.
Beachten Sie, dass beim Ausführen eines Programms möglicherweise dessen Parameter angezeigt werden, wenn die laufenden Prozesse des Systems aufgelistet werden. Daher können andere Benutzer Ihre Kennwörter möglicherweise überwachen, wenn Sie sie als einfache Befehlszeilenoptionen übergeben. Es gibt Möglichkeiten, dies zu umgehen.
Es ist erwähnenswert, dass die HTTP-Authentifizierung zwar so funktioniert, aber sehr viele Websites dieses Konzept nicht verwenden, wenn sie Anmeldungen usw. bereitstellen. Weitere Informationen hierzu finden Sie im Kapitel Web-Anmeldung weiter unten.
Fügen Sie einfach hinzu, damit Sie nicht durchklicken müssen:
curl --user name:password http://www.example.com
oder wenn Sie versuchen, eine Authentifizierung für OAuth 2 zu senden:
curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
-H
Option ist großartig.
-H Authorization: Basic <Base64EncodedCredentials>
HMAC-SHA256
immer ein Fehler des fehlenden Autorisierungsheaders angezeigt wird
<Base64EncodedCredentials>
von @ timothy-kansaki erwähnte benötigen, können Sie den codierten Berechtigungsnachweis außerdem mit dem folgenden Befehl abrufen : cred="$( echo $NAME:$PASSWORD | base64 )"; curl -H "Authorization: Basic $cred" https://example.com
. Referenz finden Sie unter stackoverflow.com/questions/16918602/…
Inhaber-Token sehen folgendermaßen aus:
curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com
(für diejenigen, die nach einer PHP-Curl- Antwort suchen )
$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);
Das hat bei mir funktioniert:
curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/
Authorization: bearer xxxxxxxxx
?
Bearer
Bearer
.
Für HTTP Basic Auth:
curl -H "Authorization: Basic <_your_token_>" http://www.example.com
ersetzen _your_token_
und die URL.
echo -ne "<your-user>:<your-pass>" | base64 --wrap 0
generiert das grundlegende Authentifizierungstoken.
-H "Authorization: Basic <_your_token_>"
macht den gleichen Effekt wie --user login:password
. Sie können es überprüfen mitcurl -v
Seien Sie vorsichtig, wenn Sie:
curl -H "Authorization: token_str" http://www.example.com
token_str
und Authorization
muss durch Leerzeichen getrennt werden, sonst erhält die Server-Seite die HTTP_AUTHORIZATION
Umgebung nicht.
Wenn Sie das Token zum Zeitpunkt des Anrufs nicht haben, müssen Sie zwei Anrufe tätigen, einen, um das Token zu erhalten, und einen, um das Token aus der Antwort zu extrahieren
grep token | cut -d, -f1 | schneide -d "-f4
da es der Teil ist, der sich mit dem Extrahieren des Tokens aus der Antwort befasst.
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()
Nach dem Extrahieren des Tokens können Sie das Token verwenden, um nachfolgende Aufrufe wie folgt durchzuführen.
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