Wie gebe ich Autorisierungsheader mit cURL weiter? (Nicht die PHP cURL-Erweiterung, die ausführbare Datei in /usr/bin/curl
).So legen Sie den Berechtigungsheader mithilfe von curl fest
Antwort
http://curl.haxx.se/docs/httpscripting.html
Siehe Teil 6. HTTP-Authentifizierung
HTTP-Authentifizierung
HTTP-Authentifizierung ist die Möglichkeit, den Server Ihren Benutzernamen und Passwort zu erklären, damit es überprüfen kann, dass Sie erlaubt, die Anfrage zu tun, du bist tun. Die Basis-Authentifizierung in HTTP verwendet (die den Typ curl wird, verwendet durch default) ist KlarText basiert, das heißt, es Benutzername und Passwort sendet nur wenig verschleiert, aber noch voll lesbar durch jeden, der das Netzwerk auf sniffs zwischen Ihnen und dem Remote-Server.
sagen curl einen Benutzer und ein Passwort für die Authentifizierung zu verwenden:
curl --user name:password http://www.example.com
Die Seite könnte eine andere Authentifizierungsmethode benötigen (überprüfen Sie die Header vom Server zurück) und dann --ntlm, - verdauen, - verhandeln oder sogar --anyauth könnte Optionen sein, die zu Ihnen passen.
Manchmal ist Ihr HTTP-Zugriff nur über den HTTP-Proxy möglich. Dies scheint bei verschiedenen Unternehmen besonders häufig zu sein. Ein HTTP-Proxy erfordert möglicherweise einen eigenen Benutzer und ein eigenes Kennwort, damit der Client das Internet mit erreichen kann. Denen mit Curl, laufen so etwas wie angeben:
curl --proxy-user proxyuser:proxypassword curl.haxx.se
Wenn Ihr Proxy die Authentifizierung erfordert das NTLM-Methode zu tun mit, Verwendung --proxy-NTLM, wenn es erfordert Digest verwenden --proxy-Digest.
Wenn Sie eine dieser Benutzer + Passwortoptionen verwenden, aber das Passwort auslassen, wird curl interaktiv zur Eingabe des Passworts aufgefordert.
Beachten Sie, dass bei der Ausführung eines Programms die Parameter möglicherweise angezeigt werden, wenn die laufenden Prozesse des Systems aufgelistet werden. Daher können andere Benutzer Ihre Kennwörter überwachen können, wenn Sie sie als einfache Befehlszeile Optionen übergeben. Es gibt Möglichkeiten, dies zu umgehen.
Es ist erwähnenswert, dass, während dies ist, wie HTTP-Authentifizierung funktioniert, sehr viele Websites dieses Konzept nicht verwenden, wenn sie Anmeldungen bieten usw. Siehe das Web Login Kapitel weiter unten für weitere Details über das.
Hinzufügen Nur damit Sie müssen nicht Click-through:
curl --user name:password http://www.example.com
oder wenn Sie versuchen, die Authentifizierung 2 für OAuth zu tun senden:
curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
Viele APIs verwenden jetzt Headerautorisierungstoken. Die Option "-H" ist großartig. – eliocs
Wenn Sie -u oder --user verwenden, wird Curl die Anmeldeinformationen in Base64 codieren und einen Header wie folgt erzeugen: '-H Autorisierung: Basic
Darauf achten, dass wenn Sie mit: curl -H "Authorization: token_str" http://www.example.com
token_str
und Authorization
getrennt werden müssen durch Leerraum, ansonsten serverseitig wird die HTTP_AUTHORIZATION
Umgebung nicht erhalten.
Nicht wahr, wenn ein Leerzeichen benötigt wird, ist Ihr HTTP-Server gebrochen. Außerdem benötigen Sie zwei Strings, einen Typ und dann das Token. –
(für diejenigen, die für 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);
Bearer-Token wie folgt aussehen:
curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com
@esqew - Huh? Ich hatte die exakt gleiche Frage und diese Antwort nagelt es für mich. –
Und wenn Sie 'Basic' Autorisierung machen wollen, tauschen Sie einfach 'Bearer' für 'Basic' –
Das ist für mich gearbeitet:
curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/
Für HTTP Basic Auth :
curl -H "Authorization: Basic <_your_token_>" http://www.example.com
ersetzen Sie _your_token_
und die URL.
Wenn Sie oauth verwenden, woher würde das Authorization Token kommen? Ich versuche, curl zu verwenden, um Dateien von einer Seite herunterzuladen, wo ich einen Benutzer und ein Kennwort benutze, aber es scheint zu scheitern, weil oauth2 benutzt wird. – toasteez
@toasteez Sie müssen durch den Oauth2-Fluss gehen, um ein Token zu erhalten. Normalerweise ist dies ein zweistufiger Prozess und sollte in der Dokumentation des Servers detailliert beschrieben werden. – Devaroop
gute Antwort. ein kleiner Helfer 'echo -ne"
ok, aber wie in PHP? – Vixed
@Vixed Diese Frage bezieht sich explizit nicht auf PHP. [Was stimmt nicht mit Googles Ergebnissen] (s)? – Oli