Pertanyaan Bagaimana cara mendefinisikan otentikasi HTTP dasar menggunakan cURL dengan benar?


Saya belajar Apigility (Apigility docu -> REST Service Tutorial) dan mencoba mengirim permintaan POST dengan otentikasi dasar melalui cURL:

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

YXBpdXNlcjphcGlwd2Q= adalah string 64 encoded dasar dengan kredensial saya apiuser:apipwd. Kredensial disimpan dalam /data/htpasswd (apiuser:$apr1$3J4cyqEw$WKga3rQMkxvnevMuBaekg/).

Terlihat seperti ini:

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"

Di mana kesalahannya di sini? Bagaimana cara kerjanya?


75
2017-09-22 07:58


asal


Jawaban:


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

Dari halaman dokumentasi:

-u, --user <user: kata sandi>

Tentukan nama pengguna dan kata sandi yang akan digunakan untuk otentikasi server.   Override -n, --netrc dan --netrc-optional.

Jika Anda hanya menentukan nama pengguna, curl akan meminta kata sandi.

Nama pengguna dan kata sandi dipisah pada titik dua pertama, yang   membuat tidak mungkin menggunakan tanda titik dua pada nama pengguna dengan opsi ini.   Sandi bisa, masih.

Saat menggunakan Kerberos V5 dengan server berbasis Windows, Anda harus menyertakannya   nama domain Windows di nama pengguna, agar server dapat   Berhasil mendapatkan Tiket Kerberos. Jika Anda tidak maka awal   handshake otentikasi mungkin gagal.

Saat menggunakan NTLM, nama pengguna dapat ditentukan hanya sebagai pengguna   nama, tanpa domain, jika ada satu domain dan hutan di dalamnya   setup Anda misalnya.

Untuk menentukan nama domain, gunakan Nama Log Tingkat Bawah atau UPN   (Nama Pengguna Utama) format. Misalnya, EXAMPLE \ pengguna dan   user@example.com masing-masing.

Jika Anda menggunakan biner kurung Windows SSPI-enabled dan melakukan Kerberos V5,   Negosiasikan, otentikasi NTLM atau Digest maka Anda dapat memberitahu curl untuk   pilih nama pengguna dan kata sandi dari lingkungan Anda dengan menentukan   satu titik dua dengan opsi ini: "-u:".

Jika opsi ini digunakan beberapa kali, yang terakhir akan digunakan.

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

Perhatikan bahwa Anda tidak perlu --basic bendera karena ini adalah default.


145
2017-12-12 11:03



Saat menggunakan OAuth atau layanan autentikasi lainnya, Anda sering juga dapat mengirim token akses dalam string kueri, bukan di header otorisasi, sehingga sesuatu seperti:

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

6
2017-10-27 08:45