Hoe de basis HTTP-authenticatie met behulp van cURL correct definiëren?

Ik ben Apigility aan het leren (Apigility docu -> REST Service Tutorial) en probeer om een POST-verzoek te verzenden met basisverificatie via cURL:

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

YXBpdXNlcjphcGlwd2Q=is de basis 64 gecodeerde string met mijn inloggegevens apiuser:apipwd. De inloggegevens worden opgeslagen in de /data/htpasswd(apiuser:$apr1$3J4cyqEw$WKga3rQMkxvnevMuBaekg/).

Het ziet er als volgt uit:

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"

Waar zit de fout hier? Hoe krijg je het werkend?


Antwoord 1, autoriteit 100%

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

Van de documentatiepagina:

-u, –user <user:password>

Geef de gebruikersnaam en het wachtwoord op die moeten worden gebruikt voor serververificatie.
Overschrijft -n, –netrc en –netrc-optioneel.

Als je gewoon de gebruikersnaam opgeeft, zal curl om een wachtwoord vragen.

De gebruikersnaam en wachtwoorden worden opgesplitst op de eerste dubbele punt, die
maakt het bij deze optie onmogelijk om een dubbele punt in de gebruikersnaam te gebruiken.
Het wachtwoord kan nog steeds.

Als u Kerberos V5 gebruikt met een Windows-server, moet u het volgende opnemen:
de Windows-domeinnaam in de gebruikersnaam, zodat de server
succesvol een Kerberos Ticket verkrijgen. Als je dat niet doet, dan is de initiaal
authenticatiehandshake kan mislukken.

Bij gebruik van NTLM kan de gebruikersnaam eenvoudig worden opgegeven als de gebruiker
naam, zonder het domein, als er een enkel domein en forest is in
uw instellingen bijvoorbeeld.

Als u de domeinnaam wilt specificeren, gebruikt u Down-Level Logon Name of UPN
(User Principal Name) formaten. Bijvoorbeeld, VOORBEELD\gebruiker en
respectievelijk [email protected].

Als u een voor Windows SSPI geschikte curl-binary gebruikt en Kerberos V5 uitvoert,
Onderhandelen, NTLM- of Digest-authenticatie, dan kun je curl vertellen aan
selecteer de gebruikersnaam en het wachtwoord uit uw omgeving door op te geven
een enkele dubbele punt met deze optie: “-u :”.

Als deze optie meerdere keren wordt gebruikt, wordt de laatste gebruikt.

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

Houd er rekening mee dat u de vlag --basicniet nodig hebt omdat dit de standaardinstelling is.


Antwoord 2, autoriteit 11%

als kop

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/

Other episodes