Frage Wie definiert man die grundlegende HTTP-Authentifizierung mit cURL korrekt?


Ich lerne Apililität (Apigility Dokumentation -> REST Service Tutorial) und versuchen, eine POST-Anfrage mit Basis-Authentifizierung über cURL zu senden:

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

YXBpdXNlcjphcGlwd2Q= ist die Basis 64 codierte Zeichenfolge mit meinen Anmeldeinformationen apiuser:apipwd. Die Anmeldeinformationen werden in der. Gespeichert /data/htpasswd (apiuser:$apr1$3J4cyqEw$WKga3rQMkxvnevMuBaekg/).

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 funktioniert es?


75
2017-09-22 07:58


Ursprung


Antworten:


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

Auf der Dokumentationsseite:

-u, --user <Benutzer: Passwort>

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

Wenn Sie einfach den Benutzernamen angeben, fragt curl nach einem Passwort.

Der Benutzername und die Passwörter sind auf den ersten Doppelpunkt aufgeteilt   macht es unmöglich, einen Doppelpunkt im Benutzernamen mit dieser Option zu verwenden.   Das Passwort kann, immer noch.

Wenn Sie Kerberos V5 mit einem Windows-basierten Server verwenden, sollten Sie Folgendes hinzufügen   Der Windows-Domänenname im Benutzernamen, damit der Server   Erhalte erfolgreich ein Kerberos-Ticket. Wenn Sie nicht die Initiale   Authentifizierungshandshake kann fehlschlagen.

Bei Verwendung von NTLM kann der Benutzername einfach als Benutzer angegeben werden   Name, ohne die Domäne, wenn es eine einzige Domäne und Gesamtstruktur gibt   Ihre Einrichtung zum Beispiel.

Um den Domänennamen anzugeben, verwenden Sie entweder den Down-Level Logon Name oder UPN   (Benutzerprinzipalname) Formate. Zum Beispiel, BEISPIEL \ Benutzer und   user@example.com jeweils.

Wenn Sie eine Windows SSPI-fähige curl-Binärdatei verwenden und Kerberos V5 ausführen,   Negotiate, NTLM oder Digest-Authentifizierung, dann können Sie locken zu sagen   Wählen Sie den Benutzernamen und das Passwort aus Ihrer Umgebung, indem Sie angeben   ein einzelner Doppelpunkt mit dieser Option: "-u:".

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

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

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


145
2017-12-12 11:03



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

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

6
2017-10-27 08:45