Menggunakan Framework Permintaan Penghapusan Data

Beberapa wilayah memiliki peraturan penghapusan data yang mewajibkan penayang menyediakan cara bagi pengguna konten mereka untuk meminta penghapusan data mereka. Jika integrasi Bid Real-Time Anda menggunakan ID pihak pertama dan menerima inventaris dari wilayah yang memiliki peraturan penghapusan data, sebaiknya Anda melakukan integrasi dengan Framework Permintaan Penghapusan Data IAB.

Saat pengguna memilih untuk menghapus ID mereka dari aplikasi atau situs penayang, Framework Permintaan Penghapusan Data memungkinkan penayang menyebarkan permintaan penghapusan data. Penayang mengirimkan permintaan penghapusan data ke bursa, yang dapat meneruskan permintaan penghapusan data tersebut kepada Anda. Saat menerima permintaan penghapusan data, Anda harus meneruskan permintaan tersebut ke entitas yang telah Anda beri akses ke data pihak pertama penayang. Misalnya, jika Anda memiliki integrasi Open Bidding, Anda harus menyebarkan permintaan ke bidder di platform iklan bahwa data pihak pertama telah dibagikan.

Panduan ini membahas penyiapan awal integrasi Framework Permintaan Penghapusan Data Anda dengan platform iklan Google, dan memberikan ringkasan alur kerja Framework Permintaan Penghapusan Data dalam konteks platform iklan Google. Untuk panduan tambahan, lihat Framework Permintaan Penghapusan Data.

Menyiapkan integrasi

Untuk mulai menerima permintaan penghapusan data dari Google, Anda harus mendaftarkan domain ke Google yang ingin dikaitkan dengan akun Anda, dan menghosting file dsrdelete.json di root domain terdaftar Anda. Untuk mendaftarkan domain Anda ke Google, hubungi account manager Anda. File dsrdelete.json memiliki beberapa tujuan, misalnya:

  • Mengidentifikasi endpoint tempat Google mengirimkan permintaan penghapusan data.
  • Mencantumkan ID yang didukung dan cara memformatnya.
  • Menentukan kunci publik Anda yang sesuai dengan standar JSON Web Key (JWK), yang digunakan pihak lain untuk memverifikasi keaslian permintaan atau konfirmasi penghapusan data yang disebarkan yang Anda kirim.

Untuk mengetahui detail file drsdelete.json, seperti kolom wajib dan opsional yang dapat Anda isi, lihat Penemuan.

Endpoint yang ditentukan dalam file dsrdelete.json harus menerima dan merespons permintaan penghapusan data yang masuk. Google merekomendasikan penggunaan library kriptografi untuk bahasa pemrograman pilihan Anda guna memverifikasi permintaan yang Anda terima dan menandatangani konfirmasi yang Anda kirim.

Contoh berikut menetapkan file dsrdelete.json dengan endpoint, ID, dan kunci publik:

{
    "endpoint": "https://www.doubleclick.net/iab-ddrf",
    "identifiers": [
        { "id": 1, "type": "ppid", "format": "plaintext" },
        { "id": 2, "type": "idfv", "format": "plaintext" },
        { "id": 3, "type": "pfpid_domain", "format": "plaintext" }
    ],
    "publicKey": [
        {
            "kty": "EC",
            "crv": "P-256",
            "x": "_OPPeKSEdi3_JEHla93vOGTx8VD01ozhyYxwQzYCVLs",
            "y": "_XHufu2A_hbN5Uj4Wm7JPHE7ly0_4cmqntmz93pweys",
            "kid": "yUa3wQ",
            "use": "sig",
            "alg": "ES256"
        }
    ],
    "vendorScriptRequirement": false
}

Menerima permintaan penghapusan data

Google akan meneruskan permintaan penghapusan data dari penayang kepada Anda jika semua kondisi berikut terpenuhi:

  • Anda menghosting file dsrdelete.json yang valid di domain yang terdaftar dengan Google.
  • Penayang mengirimkan permintaan penghapusan data untuk ID ke Google.
  • Google menentukan bahwa ID penayang yang dikirim dalam permintaan penghapusan data dibagikan kepada Anda.

Saat Anda menerima permintaan penghapusan data, Anda bertanggung jawab untuk menghapus data yang ditentukan. Anda juga harus terus menyebarkan permintaan penghapusan data ke partner data lain yang telah Anda beri akses ke data penayang pihak pertama. Google mendukung permintaan penghapusan data untuk ID berikut:

  • ppid: ID yang diberikan penayang (PPID).
  • pfpid_domain: ID pihak pertama penayang untuk web.
  • idfv: ID pihak pertama penayang untuk perangkat iOS.

Google mengirim permintaan penghapusan data sebagai permintaan HTTP POST ke endpoint yang ditentukan dalam file dsrdelete.json Anda. Isi permintaan penghapusan data berisi JSON Web Token (JWT) yang terdiri dari bagian berikut:

  • Header JOSE yang menjelaskan algoritma enkripsi.
  • Payload JWS yang berisi permintaan penghapusan.
  • Tanda Tangan JWS untuk memverifikasi keaslian permintaan.

Google mengenkode header, payload, dan tanda tangan dalam base64, serta memformat item ini sebagai berikut:

WEB_SAFE_BASE64_ENCODED_HEADER.WEB_SAFE_BASE64_ENCODED_PAYLOAD.WEB_SAFE_BASE64_ENCODED_SIGNATURE

Untuk mempelajari lebih lanjut JWT berbeda yang digunakan dalam framework penghapusan data, lihat Implementasi Token Web JSON (JWT). Permintaan penghapusan data yang Anda terima dari Google adalah JWT Permintaan (rqJWT), yang mencakup JWT Identitas (idJWT) yang dikirim penayang saat meminta penghapusan.

Menemukan detail validasi di header

Header adalah objek JSON yang menjelaskan algoritma yang harus Anda gunakan untuk membuat hash permintaan, yang diperlukan untuk memverifikasi keaslian permintaan. Jika penerbit memiliki beberapa kunci pribadi yang dapat digunakan untuk membuat tanda tangan, header juga mengidentifikasi kunci publik penerbit mana yang dapat Anda gunakan untuk memvalidasi tanda tangan.

Contoh berikut adalah header yang didekodekan yang menunjukkan bahwa Anda dapat menggunakan algoritma RSA256 dengan ID kunci abc123 untuk memvalidasi tanda tangan:

{
    "typ": "JWT",
    "alg": "RS256",
    "kid": "abc123"
}

Mengautentikasi permintaan

Anda dapat memverifikasi bahwa Google mengirimkan permintaan penghapusan data dengan kunci publik dalam file dsrdelete.json Google. File dsrdelete.json Google dihosting di https://static.doubleclick.net/dsrdelete.json

Untuk memverifikasi keaslian permintaan penghapusan data, ikuti langkah-langkah berikut:

  1. Hitung hash header dan payload menggunakan algoritma yang diidentifikasi di header. Data yang diteruskan ke fungsi hashing Anda harus menggunakan struktur berikut:

    WEB_SAFE_BASE64_ENCODED_HEADER.WEB_SAFE_BASE64_ENCODED_PAYLOAD
    
  2. Gunakan kunci publik yang ditentukan dalam file dsrdelete.json penerbit untuk mendekripsi tanda tangan yang didekode.

  3. Bandingkan hash yang Anda buat di langkah pertama dengan nilai yang didekripsi dari tanda tangan. Jika item ini cocok, permintaan penghapusan data tersebut autentik.

Mengurai payload permintaan penghapusan

Setelah memverifikasi keaslian permintaan penghapusan data, Anda harus mengurai payload untuk memverifikasi ID mana yang akan dihapus. Payload yang didekode adalah token rqJWT. Untuk mengetahui detailnya, lihat rqJWT: JWT “permintaan” pemohon.

Contoh berikut menunjukkan payload yang didekode sebagai token rqJWT dan menyertakan parameter opsional:

{
    "optionalParameters": "{\"gamNetworkCode\":\"311057\"}",
    "sub": "{\n    \"identifierValue\": \"crvBtLjLqNUiafwXZiyukLD4Tf6mMUYhBdQaPZ0pjyd\",\n    \"identifierType\": \"ppid\",\n    \"identifierFormat\": \"plaintext\"\n  }",
    "iat": 1756257951,
    "version": "1.0",
    "iss": "test_publisher",
    "idJWT": "eyJhbGciOiJFUzI1NiIsImtpZCI6IkVodWR1USIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ0ZXN0X3B1Ymxpc2hlciIsInN1YiI6IntcbiAgICBcImlkZW50aWZpZXJWYWx1ZVwiOiBcImNydkJ0TGpMcU5VaWFmd1haaXl1a0xENFRmNm1NVVloQmRRYVBaMHBqeWRcIixcbiAgICBcImlkZW50aWZpZXJUeXBlXCI6IFwicHBpZFwiLFxuICAgIFwiaWRlbnRpZmllckZvcm1hdFwiOiBcInBsYWludGV4dFwiXG4gIH0iLCJpYXQiOjE3NTYyNTc5NTEsInZlcnNpb24iOiIxLjAifQ.Dh17fv1sxKMnkOa7HOWfVdsIYo8BBy2p9SkDTSfZoW6ypMdl_5wDYtUIYEfuX3n6UbwMoH0WVgGQnFQraMH6XQ"
}

Permintaan penghapusan data mencakup kolom sub, yang berisi string JSON yang menunjukkan bahwa penayang meminta penghapusan PPID dengan nilai crvBtLjLqNUiafwXZiyukLD4Tf6mMUYhBdQaPZ0pjyd. Token rqJWT mencakup token idJWT yang dienkode. Untuk mengetahui detailnya, lihat idJWT: JWT “identifier” Penerbit .

Menyebarkan permintaan penghapusan data

Anda harus meneruskan permintaan penghapusan data ke partner data mana pun yang telah Anda ajak berbagi ID tertentu. Misalnya, jika Anda terintegrasi dengan Bidding Terbuka, Anda harus menyebarkan permintaan penghapusan data ke bidder di exchange Anda yang telah menerima ID pihak pertama. Proses ini mengharuskan Anda mengirim token rqJWT kepada partner data. Token rqJWT harus berisi ID yang relevan, yang diformat berdasarkan konfigurasi dalam file dsrdelete.json partner data. Selain itu, token rqJWT harus menyertakan tanda tangan Anda yang dibuat dengan kunci pribadi Anda.

Mengonfirmasi permintaan penghapusan data

Untuk mengonfirmasi bahwa Anda telah menerima dan menindaklanjuti permintaan penghapusan data, kirim JWT Konfirmasi ke endpoint yang ditentukan Google dalam file dsrdelete.json. Untuk mengetahui detailnya, lihat acJWT: JWT “konfirmasi” penerima.

Kode status HTTP respons Anda bergantung pada hasil berikut:

  • Berhasil: Menampilkan HTTP 202 jika permintaan berhasil diterima, diuraikan, dan ditindaklanjuti.
  • Gagal: Menampilkan HTTP 400 jika permintaan tidak berhasil diterima, diuraikan, dan ditindaklanjuti.

Isi permintaan harus menyertakan token acJWT dengan payload yang mengisi kolom raResultCode dengan kode hasil bilangan bulat. Anda dapat memberikan teks deskriptif tentang hasil di kolom raResultString secara opsional. Token acJWT harus menyertakan tanda tangan Anda yang dibuat dengan kunci pribadi Anda.

Untuk mempelajari lebih lanjut kode hasil yang didukung di Framework Permintaan Penghapusan Data, lihat Kode Hasil.

Membangun header token acJWT

Isi header berdasarkan fungsi hash dan kunci publik yang Anda maksudkan untuk digunakan penerima saat memverifikasi tanda tangan Anda. Header yang tidak dienkode dalam contoh berikut menunjukkan bahwa Anda ingin penerima menggunakan algoritma ES256 untuk membuat hash, dan bahwa penerima harus menggunakan kunci publik dengan ID kunci EhuduQ dari file dsrdelete.json Anda saat mendekripsi tanda tangan Anda.

{
    "alg": "ES256",
    "typ": "JWT",
    "kid": "EhuduQ"
}

Buat payload token acJWT

Isi payload berdasarkan hasil permintaan penghapusan, dan isi kolom rqJWT dengan bentuk token rqJWT yang dienkode yang Anda konfirmasi. Contoh berikut menentukan kolom raResultCode dengan nilai 0 untuk menunjukkan bahwa operasi berhasil:

{
    "version": "1.0",
    "jti": "965492b2-74e5-409a-90f4-f041902db05f",
    "raResultString": "",
    "iat": 1756408212,
    "iss": "doubleclick.net",
    "raResultCode": 0,
    "rqJWT": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IkVodWR1USJ9.eyJvcHRpb25hbFBhcmFtZXRlcnMiOiJ7XCJnYW1OZXR3b3JrQ29kZVwiOlwiMzExMDU3XCJ9Iiwic3ViIjoie1xuICAgIFwiaWRlbnRpZmllclZhbHVlXCI6IFwiY3J2QnRMakxxTlVpYWZ3WFppeXVrTEQ0VGY2bU1VWWhCZFFhUFowcGp5ZFwiLFxuICAgIFwiaWRlbnRpZmllclR5cGVcIjogXCJwcGlkXCIsXG4gICAgXCJpZGVudGlmaWVyRm9ybWF0XCI6IFwicGxhaW50ZXh0XCJcbiAgfSIsImlhdCI6MTc1NjI1Nzk1MSwidmVyc2lvbiI6IjEuMCIsImlzcyI6InRlc3RfcHVibGlzaGVyIiwiaWRKV1QiOiJleUpoYkdjaU9pSkZVekkxTmlJc0ltdHBaQ0k2SWtWb2RXUjFVU0lzSW5SNWNDSTZJa3BYVkNKOS5leUpwYzNNaU9pSjBaWE4wWDNCMVlteHBjMmhsY2lJc0luTjFZaUk2SW50Y2JpQWdJQ0JjSW1sa1pXNTBhV1pwWlhKV1lXeDFaVndpT2lCY0ltTnlka0owVEdwTWNVNVZhV0ZtZDFoYWFYbDFhMHhFTkZSbU5tMU5WVmxvUW1SUllWQmFNSEJxZVdSY0lpeGNiaUFnSUNCY0ltbGtaVzUwYVdacFpYSlVlWEJsWENJNklGd2ljSEJwWkZ3aUxGeHVJQ0FnSUZ3aWFXUmxiblJwWm1sbGNrWnZjbTFoZEZ3aU9pQmNJbkJzWVdsdWRHVjRkRndpWEc0Z0lIMGlMQ0pwWVhRaU9qRTNOVFl5TlRjNU5URXNJblpsY25OcGIyNGlPaUl4TGpBaWZRLkRoMTdmdjFzeEtNbmtPYTdIT1dmVmRzSVlvOEJCeTJwOVNrRFRTZlpvVzZ5cE1kbF81d0RZdFVJWUVmdVgzbjZVYndNb0gwV1ZnR1FuRlFyYU1INlhRIn0.zZnuUsUDzkARg31RzkhLOJCSXD5jPca8qff5IqyYrrRITgRgm29T__6gC3oOOK5RAcd_AFFYWzE8onx6Kj1w8A"
}