2014-09-22 12 views
63

uczę Apigility (Apigility docu -> REST Service Tutorial) i próbuje wysłać żądanie POST z uwierzytelniania podstawowego poprzez cURL:Jak poprawnie zdefiniować podstawowe uwierzytelnianie HTTP przy użyciu cURL?

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

YXBpdXNlcjphcGlwd2Q= jest podstawa 64 zakodowany ciąg z moich mandatów apiuser:apipwd. Dane uwierzytelniające są zapisywane w pliku /data/htpasswd (apiuser:$apr1$3J4cyqEw$WKga3rQMkxvnevMuBaekg/).

wygląda tak:

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" 

Gdzie jest pomyłka? Jak to działa?

+0

Zaktualizowałem moją odpowiedź. Myślę, że powinieneś przekazać token dostępu w ciągu zapytania. – Wilt

Odpowiedz

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

Od strony dokumentacji:

-u < użytkownik: hasło >

Podaj nazwę użytkownika i hasło używane do uwierzytelniania serwera. Zastępuje -n, --netrc i --netrc-opcjonalne.

Jeśli po prostu określisz nazwę użytkownika, curl poprosi o podanie hasła.

Nazwa użytkownika i hasła są rozdzielone na pierwszym dwukropku, co uniemożliwia użycie dwukropka w nazwie użytkownika za pomocą tej opcji. Hasło może nadal.

Podczas korzystania z protokołu Kerberos V5 z serwerem działającym w systemie Windows należy podać nazwę domeny Windows w nazwie użytkownika, aby serwer mógł uzyskać z powodzeniem uzyskać bilet Kerberos. Jeśli nie, początkowe uzgadnianie uwierzytelniania może się nie powieść.

Podczas korzystania z NTLM nazwa użytkownika może być podana po prostu jako nazwa użytkownika, bez domeny, jeśli istnieje jedna domena i las, na przykład w konfiguracji.

Aby określić nazwę domeny, należy użyć opcji Nazwa logowania na niższym poziomie lub UPN (Nazwa głównego użytkownika). Na przykład: PRZYKŁAD \ użytkownik i uż[email protected]

W przypadku korzystania z systemu Windows SSPI obsługującej curl binarny i wykonać Kerberos V5, Negocjuj, NTLM lub Digest uwierzytelniania wtedy można powiedzieć, zwijają się wybrać nazwę użytkownika i hasło z danego środowiska, określając pojedynczy dwukropek, to opcja: "-u:".

Jeśli ta opcja jest używana kilka razy, zostanie użyta ostatnia.

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

Należy pamiętać, że nie trzeba --basic flagę, ponieważ jest to domyślna.

+4

Jeśli twoje hasło zawiera jakieś znaki specjalne, takie jak? lub @, musisz umieścić go w jednym tiku. curl -u "nazwa użytkownika:? H @ słowo" http: // – tfb785

+0

, ale jak wygląda to rzeczywiste żądanie? Czuję, jak wielu ludzi testuje curl, ale potem piszę kod w jakimkolwiek języku, którego używają. czy informacje --user są wysyłane jako nagłówek? Jeśli tak, to jak powinien wyglądać ten nagłówek – Verty00

6

Podczas korzystania OAuth lub innych usług uwierzytelniania często można również wysłać swój żeton dostępu w ciągu kwerendy zamiast w nagłówku autoryzacji, więc coś takiego:

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