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.jsonyang 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:
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_PAYLOADGunakan kunci publik yang ditentukan dalam file
dsrdelete.jsonpenerbit untuk mendekripsi tanda tangan yang didekode.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 202jika permintaan berhasil diterima, diuraikan, dan ditindaklanjuti. - Gagal: Menampilkan
HTTP 400jika 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"
}