it-swarm.com.de

Wie definiere ich die grundlegende HTTP-Authentifizierung mit cURL richtig?

Ich lerne Apigility ( Apigility docu -> REST Service Tutorial ) und versuche, eine POST Anfrage mit einfacher Authentifizierung über zu senden cURL:

$ curl -X POST -i -H "Content-Type: application/hal+json" -H "Authorization: Basic YXBpdXNlcjphcGlwd2Q=" http://apigilityhw.sandbox.loc/status

YXBpdXNlcjphcGlwd2Q= Ist die 64er-Zeichenfolge mit meinen Anmeldeinformationen apiuser:apipwd. Die Anmeldeinformationen werden in /data/htpasswd (apiuser:$apr1$3J4cyqEw$WKga3rQMkxvnevMuBaekg/) Gespeichert.

Das sieht so aus:

HTTP/1.1 401 Unauthorized
Server: nginx/1.4.7
Date: Mon, 22 Sep 2014 07:48:47 GMT
Content-Type: application/problem+json
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.5.12-1~dotdeb.1
WWW-Authenticate: Basic realm="api"

Wo ist der Fehler hier? Wie bekomme ich es zum Laufen?

100
automatix
curl -u username:password http://
curl -u username http://

Von der Dokumentationsseite:

- u, --user <user: password>

Geben Sie den Benutzernamen und das Kennwort an, die für die Serverauthentifizierung verwendet werden sollen. Überschreibt -n, --netrc und --netrc-optional.

Wenn Sie einfach den Benutzernamen angeben, fordert curl Sie zur Eingabe eines Kennworts auf.

Der Benutzername und die Kennwörter werden im ersten Doppelpunkt aufgeteilt, sodass bei dieser Option kein Doppelpunkt im Benutzernamen verwendet werden kann. Das Passwort kann man noch.

Wenn Sie Kerberos V5 mit einem Windows-basierten Server verwenden, sollten Sie den Windows-Domänennamen in den Benutzernamen aufnehmen, damit der Server erfolgreich ein Kerberos-Ticket erhält. Andernfalls schlägt der anfängliche Authentifizierungs-Handshake möglicherweise fehl.

Bei Verwendung von NTLM kann der Benutzername einfach als Benutzername ohne Domäne angegeben werden, wenn in Ihrem Setup beispielsweise eine einzelne Domäne und Gesamtstruktur vorhanden ist.

Verwenden Sie zum Angeben des Domänennamens die Formate Down-Level-Anmeldename oder UPN (User Principal Name). Zum Beispiel BEISPIEL\benutzer und [email protected]

Wenn Sie eine Windows SSPI-fähige Curl-Binärdatei verwenden und Kerberos V5-, Negotiate-, NTLM- oder Digest-Authentifizierung ausführen, können Sie Curl anweisen, den Benutzernamen und das Kennwort aus Ihrer Umgebung auszuwählen, indem Sie einen einzelnen Doppelpunkt mit dieser Option angeben: "-u:" .

Wenn diese Option mehrmals verwendet wird, wird die letzte verwendet.

http://curl.haxx.se/docs/manpage.html#-

Beachten Sie, dass Sie nicht brauchen --basic Flagge als Standard.

192
Gajus

als Überschrift

AUTH=$(echo -ne "$BASIC_AUTH_USER:$BASIC_AUTH_PASSWORD" | base64 --wrap 0)

curl \
  --header "Content-Type: application/json" \
  --header "Authorization: Basic $AUTH" \
  --request POST \
  --data  '{"key1":"value1", "key2":"value2"}' \
  https://example.com/
9
srghma

Wenn Sie OAuth oder andere Authentifizierungsdienste verwenden, können Sie Ihr Zugriffstoken häufig auch in einer Abfragezeichenfolge statt in einem Autorisierungsheader senden. Beispiel:

GET https://www.example.com/v1/users/1?access_token=abcdefghijklmnopqrstuvwxyz1234567890ABCD
7
Wilt