2010-06-15 6 views

Antwort

259

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.

+1

ok, aber wie in PHP? – Vixed

+11

@Vixed Diese Frage bezieht sich explizit nicht auf PHP. [Was stimmt nicht mit Googles Ergebnissen] (s)? – Oli

198

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 
+14

Viele APIs verwenden jetzt Headerautorisierungstoken. Die Option "-H" ist großartig. – eliocs

+5

Wenn Sie -u oder --user verwenden, wird Curl die Anmeldeinformationen in Base64 codieren und einen Header wie folgt erzeugen: '-H Autorisierung: Basic ' –

12

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.

+0

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. –

46

(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); 
87

Bearer-Token wie folgt aussehen:

curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com 
+0

@esqew - Huh? Ich hatte die exakt gleiche Frage und diese Antwort nagelt es für mich. –

+5

Und wenn Sie 'Basic' Autorisierung machen wollen, tauschen Sie einfach 'Bearer' für 'Basic' –

26

Das ist für mich gearbeitet:

curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/ 
7

Für HTTP Basic Auth :

curl -H "Authorization: Basic <_your_token_>" http://www.example.com

ersetzen Sie _your_token_ und die URL.

+0

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

+0

@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

+6

gute Antwort. ein kleiner Helfer 'echo -ne" : "| base64 --wrap 0' generiert das grundlegende Authentifizierungs-Token. –