Tetapkan cookie yang ditandatangani menggunakan kebijakan khusus - Amazon CloudFront

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

Tetapkan cookie yang ditandatangani menggunakan kebijakan khusus

Untuk mengatur cookie bertanda tangan yang menggunakan kebijakan kustom, selesaikan langkah berikut.

Lihat contoh pasangan Set-Cookie header berikut.

Jika Anda ingin menggunakan nama domain alternatif seperti example.org diURLs, Anda harus menambahkan nama domain alternatif ke distribusi Anda terlepas dari apakah Anda menentukan atribut. Domain Untuk informasi selengkapnya, lihat Nama domain alternatif (CNAMEs) dalam topik Referensi pengaturan distribusi.

contoh Contoh 1

Anda dapat menggunakan Set-Cookie header untuk satu cookie yang ditandatangani saat Anda menggunakan nama domain yang terkait dengan distribusi Anda di URLs untuk file Anda.

Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
contoh Contoh 2

Anda dapat menggunakan Set-Cookie header untuk satu cookie yang ditandatangani saat Anda menggunakan nama domain alternatif (example.org) di file Anda. URLs

Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/; Secure; HttpOnly
contoh Contoh 3

Anda dapat menggunakan pasangan Set-Cookie header untuk permintaan yang ditandatangani saat Anda menggunakan nama domain yang terkait dengan distribusi Anda di URLs untuk file Anda.

Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=dd111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
contoh Contoh 4

Anda dapat menggunakan pasangan Set-Cookie header untuk satu permintaan yang ditandatangani saat Anda menggunakan nama domain alternatif (example.org) yang terkait dengan distribusi Anda di file URLs Anda.

Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/; Secure; HttpOnly

Membuat pernyataan kebijakan untuk cookie yang ditandatangani yang menggunakan kebijakan khusus

Untuk membuat pernyataan kebijakan untuk kebijakan kustom, selesaikan langkah berikut. Untuk beberapa contoh pernyataan kebijakan yang mengendalikan akses ke file dalam berbagai cara, lihat Contoh pernyataan kebijakan untuk cookie bertanda tangan yang menggunakan kebijakan kustom.

Untuk membuat pernyataan kebijakan untuk cookie bertanda tangan yang menggunakan kebijakan khusus
  1. Buat pernyataan kebijakan menggunakan JSON format berikut.

    { "Statement": [ { "Resource": "URL of the file", "Condition": { "DateLessThan": { "AWS:EpochTime":required ending date and time in Unix time format and UTC }, "DateGreaterThan": { "AWS:EpochTime":optional beginning date and time in Unix time format and UTC }, "IpAddress": { "AWS:SourceIp": "optional IP address" } } } ] }

    Perhatikan hal berikut:

  2. Hapus semua spasi kosong (termasuk tab dan karakter baris baru) dari pernyataan kebijakan. Anda mungkin harus memasukkan karakter escape dalam string di kode aplikasi.

  3. Base64-encode pernyataan kebijakan menggunakan MIME pengkodean base64. Untuk informasi selengkapnya, lihat Bagian 6.8, Base64 Content-Transfer-Encoding di RFC2045, MIME (Ekstensi Email Internet Serbaguna) Bagian Satu: Format Badan Pesan Internet.

  4. Ganti karakter yang tidak valid dalam string URL kueri dengan karakter yang valid. Tabel berikut mencantumkan karakter yang tidak valid dan valid.

    Ganti karakter tidak valid ini Dengan karakter valid ini

    +

    - (tanda hubung)

    =

    _ (garis bawah)

    /

    ~ (tilde)

  5. Sertakan nilai yang dihasilkan dalam Set-Cookie setelah CloudFront-Policy=.

  6. Buat tanda tangan untuk Set-Cookie header untuk CloudFront-Signature dengan mengadakan, menandatangani, dan memberikan kode dasar64 pada pernyataan kebijakan. Untuk informasi selengkapnya, lihat Membuat tanda tangan untuk cookie yang ditandatangani yang menggunakan kebijakan kustom.

Nilai yang Anda sebutkan dalam pernyataan kebijakan untuk kebijakan kustom untuk cookie yang ditandatangani

Saat Anda membuat pernyataan kebijakan untuk kebijakan kustom, Anda menentukan nilai berikut.

Sumber Daya

Basis URL termasuk string kueri Anda, jika ada:

https://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes

penting

Jika Anda menghilangkan Resource parameter, pengguna dapat mengakses semua file yang terkait dengan distribusi apa pun yang terkait dengan key pair yang Anda gunakan untuk membuat tanda tanganURL.

Anda hanya dapat menentukan satu nilai untuk Resource.

Perhatikan hal-hal berikut:

  • Protokol – Nilai harus dimulai dengan http:// atau https://.

  • Parameter string kueri – Jika Anda tidak memiliki parameter string pencarian, hapus tanda tanya.

  • Wildcard – Anda dapat menggunakan karakter wildcard yang sesuai dengan nol karakter atau lebih (*) atau karakter wildcard yang persis sesuai dengan satu karakter (?) di mana pun dalam string. Misalnya, nilai:

    https://d111111abcdef8.cloudfront.net/*game_download.zip*

    akan mencakup (misalnya) file berikut:

    • https://d111111abcdef8.cloudfront.net/game_download.zip

    • https://d111111abcdef8.cloudfront.net/example_game_download.zip?license=yes

    • https://d111111abcdef8.cloudfront.net/test_game_download.zip?license=temp

  • Nama domain alternatif — Jika Anda menentukan nama domain alternatif (CNAME) diURL, Anda harus menentukan nama domain alternatif saat mereferensikan file di halaman web atau aplikasi Anda. Jangan tentukan Amazon S3 URL untuk file tersebut.

DateLessThan

Tanggal kedaluwarsa dan waktu untuk URL dalam format waktu Unix (dalam detik) dan Waktu Universal Terkoordinasi (). UTC Jangan melampirkan nilai dalam tanda petik.

Misalnya, 16 Maret 2015 10:00am UTC mengkonversi ke 1426500000 dalam format waktu Unix.

Untuk informasi selengkapnya, lihat Saat CloudFront memeriksa tanggal dan waktu kedaluwarsa dalam cookie yang ditandatangani.

DateGreaterThan (Opsional)

Tanggal dan waktu mulai opsional untuk format waktu URL dalam Unix (dalam detik) dan Waktu Universal Terkoordinasi (UTC). Pengguna tidak diizinkan untuk mengakses file pada atau sebelum tanggal dan waktu yang ditentukan. Jangan melampirkan nilai dalam tanda petik.

IpAddress (Opsional)

Alamat IP klien yang membuat GET permintaan. Perhatikan hal berikut:

  • Untuk mengizinkan alamat IP mengakses file, hapus IpAddress parameter.

  • Anda dapat menentukan salah satu alamat IP atau satu rentang alamat IP. Misalnya, Anda tidak dapat mengatur kebijakan untuk memungkinkan akses jika alamat IP klien berada dalam satu dari dua rentang yang berbeda.

  • Untuk memungkinkan akses dari satu alamat IP, Anda menentukan:

    "IPv4 IP address/32"

  • Anda harus menentukan rentang alamat IP dalam IPv4 CIDR format standar (misalnya,192.0.2.0/24). Untuk informasi lebih lanjut, buka RFC4632, Perutean Antar Domain Tanpa Kelas (CIDR): Rencana Penugasan dan Agregasi Alamat Internet,. https://tools.ietf.org/html/rfc4632

    penting

    Alamat IP dalam IPv6 format, seperti 2001:0 db 8:85 a3: :8a2e: 0370:7334, tidak didukung.

    Jika Anda menggunakan kebijakan khusus yang menyertakanIpAddress, jangan aktifkan IPv6 distribusi. Jika Anda ingin membatasi akses ke beberapa konten berdasarkan alamat IP dan IPv6 permintaan dukungan untuk konten lain, Anda dapat membuat dua distribusi. Untuk informasi lebih lanjut, lihat Aktifkan IPv6 dalam topik Referensi pengaturan distribusi.

Contoh pernyataan kebijakan untuk cookie bertanda tangan yang menggunakan kebijakan kustom

Contoh pernyataan kebijakan berikut menunjukkan cara mengontrol akses ke file tertentu, semua file di direktori, atau semua file yang terkait dengan ID pasangan kunci. Contoh ini juga menunjukkan cara mengontrol akses dari alamat IP individu atau serangkaian alamat IP, dan cara mencegah pengguna menggunakan cookie yang ditandatangani setelah tanggal dan waktu yang ditentukan.

Jika Anda menyalin dan menempelkan salah satu contoh ini, hapus spasi kosong (termasuk tab dan karakter baris baru), ganti nilai dengan nilai Anda sendiri, dan sertakan karakter baris baru setelah tanda kurung kurung penutup (}).

Untuk informasi selengkapnya, lihat Nilai yang Anda sebutkan dalam pernyataan kebijakan untuk kebijakan kustom untuk cookie yang ditandatangani.

Contoh pernyataan kebijakan: Akses satu file dari berbagai alamat IP

Contoh kebijakan kustom berikut dalam cookie yang ditandatangani menetapkan bahwa pengguna dapat mengakses file https://d111111abcdef8.cloudfront.net/game_download.zip dari alamat IP dalam rentang 192.0.2.0/24 hingga 1 Januari 2023 10:00 pagi: UTC

{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/game_download.zip", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1357034400 } } } ] }

Contoh pernyataan kebijakan: Akses semua file dalam direktori dari berbagai alamat IP

Contoh kebijakan khusus berikut memungkinkan Anda membuat cookie yang ditandatangani untuk setiap file dalam training direktori, sebagaimana ditunjukkan oleh * karakter wildcard di Resource parameter. Pengguna dapat mengakses file dari alamat IP dalam kisaran 192.0.2.0/24 hingga 1 Januari 2013 10:00UTC:

{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/training/*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1357034400 } } } ] }

Setiap cookie yang ditandatangani di mana Anda menggunakan kebijakan ini mencakup basis URL yang mengidentifikasi file tertentu, misalnya:

https://d111111abcdef8.cloudfront.net/training/orientation.pdf

Contoh pernyataan kebijakan: Akses semua file yang terkait dengan ID key pair dari satu alamat IP

Kebijakan khusus sampel berikut memungkinkan Anda untuk mengatur cookie yang ditandatangani untuk setiap file yang terkait dengan distribusi apa pun, sebagaimana ditunjukkan oleh * karakter wildcard di Resource parameter. Pengguna harus menggunakan alamat IP 192.0.2.10/32. (Nilai 192.0.2.10/32 dalam CIDR notasi mengacu pada satu alamat IP,192.0.2.10.) File-file yang tersedia hanya dari 1 Januari 2013 10:00am UTC sampai Januari 2, 2013 10:00am: UTC

{ "Statement": [ { "Resource": "https://*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.10/32" }, "DateGreaterThan": { "AWS:EpochTime": 1357034400 }, "DateLessThan": { "AWS:EpochTime": 1357120800 } } } ] }

Setiap cookie yang ditandatangani di mana Anda menggunakan kebijakan ini mencakup basis URL yang mengidentifikasi file tertentu dalam CloudFront distribusi tertentu, misalnya:

https://d111111abcdef8.cloudfront.net/training/orientation.pdf

Cookie yang ditandatangani juga menyertakan ID key pair, yang harus dikaitkan dengan grup kunci tepercaya dalam distribusi (d111111abcdef8.cloudfront.net) yang Anda tentukan di pangkalan. URL

Membuat tanda tangan untuk cookie yang ditandatangani yang menggunakan kebijakan kustom

Tanda tangan untuk cookie bertanda tangan yang menggunakan kebijakan kustom merupakan versi pernyataan kebijakan yang di-hash, ditandatangani, dan dikodekan base64.

Untuk informasi tambahan dan contoh cara membuat, menandatangani, dan mengkode pernyataan kebijakan, lihat:

Untuk membuat tanda tangan untuk cookie yang ditandatangani dengan menggunakan kebijakan kustom
  1. Gunakan fungsi hash SHA -1 dan RSA hash dan tandatangani pernyataan JSON kebijakan yang Anda buat dalam prosedur. Untuk membuat pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom Gunakan versi pernyataan kebijakan yang tidak lagi menyertakan spasi kosong tetapi belum dikodekan base64.

    Untuk kunci privat yang diperlukan oleh fungsi hash, gunakan kunci pribadi yang kunci publiknya berada dalam grup kunci yang dipercaya aktif untuk distribusi.

    catatan

    Metode yang Anda gunakan untuk men-emuk dan menandatangani pernyataan kebijakan tergantung pada bahasa pemrograman dan platform Anda. Untuk kode sampel, lihat Contoh kode untuk membuat tanda tangan untuk ditandatangani URL.

  2. Hapus spasi kosong (termasuk tab dan karakter baris baru) dari string hash dan ditandatangani.

  3. Base64-encode string menggunakan MIME base64 encoding. Untuk informasi selengkapnya, lihat Bagian 6.8, Base64 Content-Transfer-Encoding di RFC2045, MIME (Ekstensi Email Internet Serbaguna) Bagian Satu: Format Badan Pesan Internet.

  4. Ganti karakter yang tidak valid dalam string URL kueri dengan karakter yang valid. Tabel berikut mencantumkan karakter yang tidak valid dan valid.

    Ganti karakter tidak valid ini Dengan karakter valid ini

    +

    - (tanda hubung)

    =

    _ (garis bawah)

    /

    ~ (tilde)

  5. Sertakan nilai yang dihasilkan dalam Set-Cookie header untuk CloudFront-Signature= nama-nilai, dan kembali ke Untuk mengatur cookie bertanda tangan menggunakan kebijakan kustom untuk menambahkan Set-Cookie header untuk CloudFront-Key-Pair-Id.