View a markdown version of this page

Permintaan Otentikasi: Menggunakan Header Otorisasi (AWS Versi Tanda Tangan 4) - Amazon Simple Storage Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Permintaan Otentikasi: Menggunakan Header Otorisasi (AWS Versi Tanda Tangan 4)

Gambaran umum

Menggunakan Authorization header HTTP adalah metode yang paling umum untuk memberikan informasi otentikasi. Kecu ali permintaan POST dan permintaan yang ditandatangani menggunakan parameter kueri, semua operasi Amazon S3 menggunakan header Authorization permintaan untuk memberikan informasi otentikasi.

Berikut ini adalah contoh dari nilai Authorization header. Istirahat baris ditambahkan ke contoh ini untuk keterbacaan:

Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request, SignedHeaders=host;range;x-amz-date, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024

Tabel berikut menjelaskan berbagai komponen dari nilai Authorization header dalam contoh sebelumnya:

Komponen Deskripsi
AWS4-HMAC-SHA256

Algoritma yang digunakan untuk menghitung tanda tangan. Anda harus memberikan nilai ini saat menggunakan Tanda T AWS angan Versi 4 untuk otentikasi.

String menentukan AWS Signature Version 4 (AWS4) dan algoritma penandatanganan (HMAC-SHA256).

Credential

ID kunci akses Anda dan informasi cakupan, yang mencakup tanggal, Wilayah, dan layanan yang digunakan untuk menghitung tanda tangan.

String ini memiliki bentuk berikut:

<your-access-key-id>/<date>/<aws-region>/<aws-service>/aws4_request

Di mana:

  • <date>nilai ditentukan menggunakan YYYYMMDD format.

  • <aws-service>nilai adalah s3 saat mengirim permintaan ke Amazon S3.

SignedHeaders

Daftar header permintaan yang dipisahkan titik koma yang Anda gunakan untuk menghitung. Signature Daftar ini hanya mencakup nama header, dan nama header harus dalam huruf kecil. Contoh:

host;range;x-amz-date
Signature Tanda tangan 256-bit dinyatakan sebagai 64 karakter heksadesimal huruf kecil. Contoh:
fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
Perhatikan bahwa perhitungan tanda tangan bervariasi tergantung pada opsi yang Anda pilih untuk mentransfer payload.

Perhitungan tanda tangan bervariasi tergantung pada metode yang Anda pilih untuk mentransfer payload permintaan. S3 mendukung opsi berikut:

  • Transfer payload dalam satu potongan — Dalam hal ini, Anda memiliki opsi perhitungan tanda tangan berikut:

    • Opsi payload yang ditandatangani — Anda dapat secara opsional menghitung seluruh checksum payload dan memasukkannya ke dalam perhitungan tanda tangan. Ini memberikan keamanan tambahan tetapi Anda perlu membaca payload Anda dua kali atau menyimpannya dalam memori.

      Misalnya, untuk mengunggah file, Anda perlu membaca file terlebih dahulu untuk menghitung hash payload untuk perhitungan tanda tangan dan sekali lagi untuk transmisi saat Anda membuat permintaan. Untuk muatan yang lebih kecil, pendekatan ini mungkin lebih disukai. Namun, untuk file besar, membaca file dua kali bisa tidak efisien, jadi Anda mungkin ingin mengunggah data dalam potongan sebagai gantinya.

      Kami sarankan Anda menyertakan payload checksum untuk keamanan tambahan.

    • Opsi payload yang tidak ditandatangani — Jangan sertakan checksum payload dalam perhitungan tanda tangan.

    Untuk petunjuk langkah demi langkah untuk menghitung tanda tangan dan membangun nilai header Otorisasi, lihatPerhitungan Tanda Tangan untuk Header Otorisasi: Mentransfer Payload dalam Satu Potongan (AWS Versi Tanda Tangan 4).

  • Transfer payload dalam beberapa potongan (unggahan potongan) — Dalam hal ini Anda mentransfer payload dalam potongan. Anda dapat mentransfer muatan dalam potongan terlepas dari ukuran payloadnya.

    Anda dapat memecah muatan Anda menjadi potongan-potongan. Ini bisa berupa potongan tetap atau ukuran variabel. Dengan mengunggah data dalam potongan, Anda menghindari membaca seluruh payload untuk menghitung tanda tangan. Sebagai gantinya, untuk potongan pertama, Anda menghitung tanda tangan benih yang hanya menggunakan header permintaan. Potongan kedua berisi tanda tangan untuk potongan pertama, dan setiap potongan berikutnya berisi tanda tangan untuk potongan yang mendahuluinya. Di akhir unggahan, Anda mengirim potongan terakhir dengan 0 byte data yang berisi tanda tangan dari potongan terakhir muatan. Untuk informasi selengkapnya, lihat Perhitungan Tanda Tangan untuk Header Otorisasi: Mentransfer Payload dalam Beberapa Potongan (Unggahan Terpotong) (AWS Versi Tanda Tangan 4).

Saat menandatangani permintaan Anda, Anda dapat menggunakan Tanda Tangan AWS Versi 4 atau Tanda T AWS angan Versi 4A. Perbedaan utama antara keduanya ditentukan oleh bagaimana tanda tangan dihitung. Dengan AWS Tanda Tangan Versi 4A, tanda tangan tidak Region-specific menyertakan informasi dan dihitung menggunakan AWS4-ECDSA-P256-SHA256 algoritma.

Selain opsi ini, Anda memiliki opsi untuk menyertakan trailer dengan permintaan Anda. Untuk menyertakan trailer dengan permintaan Anda, Anda perlu menentukannya di header dengan mengatur nilai yang x-amz-content-sha256 sesuai. Jika Anda menggunakan header trailing, Anda harus menyertakan x-amz-trailer dalam header dan menentukan nama header trailing sebagai string dalam daftar yang dipisahkan koma. Semua header trailing ditulis setelah potongan terakhir. Jika Anda mengunggah data dalam beberapa potongan, Anda harus mengirim potongan terakhir dengan 0 byte data sebelum mengirim header trailing.

Saat Anda mengirim permintaan, Anda harus memberi tahu Amazon S3 mana dari opsi sebelumnya yang telah Anda pilih dalam perhitungan tanda tangan Anda, dengan menambahkan x-amz-content-sha256 header dengan salah satu nilai berikut:

Nilai header Deskripsi

Nilai checksum muatan aktual

Nilai ini adalah checksum aktual dari objek Anda dan hanya mungkin ketika Anda mengunggah data dalam satu potongan.

UNSIGNED-PAYLOAD

Gunakan ini saat Anda mengunggah objek sebagai potongan tunggal yang tidak ditandatangani.

STREAMING-UNSIGNED-PAYLOAD-TRAILER

Gunakan ini saat mengirim muatan yang tidak ditandatangani melalui beberapa potongan. Dalam hal ini Anda juga memiliki header trailing setelah potongan diunggah.

STREAMING-AWS4-HMAC-SHA256-PAYLOAD

Gunakan ini saat mengirim muatan melalui beberapa potongan, dan potongan ditandatangani menggunakan. AWS4-HMAC-SHA256 Ini menghasilkan tanda tangan SIGv4.

STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER

Gunakan ini saat mengirim muatan melalui beberapa potongan, dan potongan ditandatangani menggunakan. AWS4-HMAC-SHA256 Ini menghasilkan tanda tangan SIGv4. Selain itu, intisari untuk potongan disertakan sebagai header trailing.

STREAMING-AWS4-ECDSA-P256-SHA256-PAYLOAD

Gunakan ini saat mengirim muatan melalui beberapa potongan, dan potongan ditandatangani menggunakan. AWS4-ECDSA-P256-SHA256 Ini menghasilkan tanda tangan Sigv4a.

STREAMING-AWS4-ECDSA-P256-SHA256-PAYLOAD-TRAILER

Gunakan ini saat mengirim muatan melalui beberapa potongan, dan potongan ditandatangani menggunakan. AWS4-ECDSA-P256-SHA256 Ini menghasilkan tanda tangan Sigv4a. Selain itu, intisari untuk potongan disertakan sebagai header trailing.

Setelah menerima permintaan, Amazon S3 membuat ulang string untuk ditandatangani menggunakan informasi di Authorization header dan date header. Kemudian memverifikasi dengan layanan otentikasi tanda tangan cocok. Tanggal permintaan dapat ditentukan dengan menggunakan HTTP Date atau x-amz-date header. Jika kedua header hadir, diutam x-amz-date akan.

Jika tanda tangan cocok, Amazon S3 memproses permintaan Anda; jika tidak, permintaan Anda akan gagal.

Untuk informasi selengkapnya, lihat topik berikut:

Perhitungan Tanda Tangan untuk Header Otorisasi: Mentransfer Payload dalam Satu Potongan (AWS Versi Tanda Tangan 4)

Perhitungan Tanda Tangan untuk Header Otorisasi: Mentransfer Payload dalam Beberapa Potongan (Unggahan Terpotong) (AWS Versi Tanda Tangan 4)

Perhitungan tanda tangan untuk header trailing (unggahan berpotongan) (AWS Versi Tanda Tangan 4)