W niektórych regionach obowiązują przepisy dotyczące usuwania danych, które wymagają od wydawców udostępniania użytkownikom ich treści możliwości przesłania prośby o usunięcie ich danych. Jeśli integracja z licytacją w czasie rzeczywistym korzysta z identyfikatorów własnych i otrzymuje zasoby reklamowe z regionów, w których obowiązują przepisy dotyczące usuwania danych, zalecamy integrację z ramami IAB do obsługi żądań usunięcia danych.
Gdy użytkownik zdecyduje się usunąć swoje identyfikatory z aplikacji lub witryny wydawcy, platforma żądań usunięcia danych umożliwia wydawcy rozpowszechnianie żądania usunięcia danych. Wydawca wysyła do giełd prośbę o usunięcie danych, która może zostać przekazana do Ciebie. Gdy otrzymasz prośbę o usunięcie danych, musisz przekazać ją podmiotom, którym udostępniasz dane własne wydawcy. Jeśli na przykład masz integrację z licytacją otwartą, musisz przekazać do licytujących na Twojej platformie wymiany informację, że dane własne zostały udostępnione.
Ten przewodnik zawiera informacje o początkowej konfiguracji integracji platformy żądań usunięcia danych z giełdą Google oraz omówienie przepływu pracy platformy żądań usunięcia danych w kontekście giełdy Google. Dodatkowe wskazówki znajdziesz w zasadach dotyczących próśb o usunięcie danych.
Konfigurowanie integracji
Aby zacząć otrzymywać od Google prośby o usunięcie danych, musisz zarejestrować w Google domenę, którą chcesz powiązać ze swoim kontem, i umieścić plik dsrdelete.json w katalogu głównym zarejestrowanej domeny. Aby zarejestrować domenę w Google, skontaktuj się z menedżerem konta. Plik dsrdelete.json ma kilka zastosowań, np.:
- określenie punktu końcowego, do którego Google wysyła prośby o usunięcie danych;
- Wymień obsługiwane identyfikatory i określ ich format.
- Określanie kluczy publicznych zgodnych ze standardem JSON Web Key (JWK), których inne podmioty używają do weryfikowania autentyczności wysyłanych przez Ciebie żądań usunięcia rozpowszechnionych danych lub potwierdzeń.
Szczegółowe informacje o pliku drsdelete.json, np. wymagane i opcjonalne pola, które możesz wypełnić, znajdziesz w sekcji Odkrywanie.
Punkt końcowy określony w pliku dsrdelete.json musi odbierać przychodzące prośby o usunięcie danych i na nie odpowiadać. Google zaleca używanie biblioteki kryptograficznej w wybranym języku programowania do weryfikowania otrzymywanych żądań i podpisywania wysyłanych potwierdzeń.
W tym przykładzie ustawiamy plik dsrdelete.json z punktem końcowym, identyfikatorami i kluczem publicznym:
{
"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
}
Otrzymywanie prośby o usunięcie danych
Google przekazuje Ci prośby wydawców o usunięcie danych, gdy spełnione są wszystkie te warunki:
- Hostujesz prawidłowy plik
dsrdelete.jsonw domenie zarejestrowanej w Google. - Wydawca wysyła do Google prośbę o usunięcie danych dotyczących identyfikatora.
- Google stwierdza, że identyfikator wydawcy przesłany w żądaniu usunięcia danych został Ci udostępniony.
Gdy otrzymasz prośbę o usunięcie danych, musisz usunąć wskazane dane. Musisz też nadal przekazywać prośbę o usunięcie danych innym partnerom, którym zostały udostępnione dane własne wydawcy. Google obsługuje prośby o usunięcie danych w przypadku tych identyfikatorów:
ppid: Identyfikatory podawane przez wydawcę (PPID).pfpid_domain: własne identyfikatory wydawcy w internecie.idfv: własne identyfikatory wydawcy na urządzeniach z iOS.
Google wysyła żądanie usunięcia danych jako żądanie HTTP POST do punktu końcowego określonego w pliku dsrdelete.json. Treść żądania usunięcia danych zawiera token internetowy JSON (JWT) składający się z tych części:
- Nagłówek JOSE opisujący algorytm szyfrowania.
- Ładunek JWS zawierający prośbę o usunięcie.
- Podpis JWS do weryfikacji autentyczności żądania.
Google koduje nagłówek, ładunek i podpis w formacie Base64 i formatuje te elementy w ten sposób:
WEB_SAFE_BASE64_ENCODED_HEADER.WEB_SAFE_BASE64_ENCODED_PAYLOAD.WEB_SAFE_BASE64_ENCODED_SIGNATURE
Więcej informacji o różnych tokenach JWT używanych w ramach usuwania danych znajdziesz w artykule Implementacja tokena internetowego JSON (JWT). Żądanie usunięcia danych, które otrzymujesz od Google, to token JWT żądania (rqJWT), który zawiera token JWT tożsamości (idJWT) wysłany przez wydawcę podczas przesyłania żądania usunięcia.
Szczegóły weryfikacji znajdziesz w nagłówku
Nagłówek to obiekt JSON, który opisuje algorytm, którego musisz użyć do wygenerowania skrótu żądania. Jest to niezbędne do weryfikacji autentyczności żądania. Jeśli wystawca ma kilka kluczy prywatnych, których może użyć do utworzenia podpisu, nagłówek zawiera też informację o tym, którego klucza publicznego wystawcy możesz użyć do zweryfikowania podpisu.
Poniżej znajduje się zdekodowany nagłówek, który pokazuje, że do weryfikacji podpisu możesz użyć algorytmu RSA256
z identyfikatorem klucza abc123:
{
"typ": "JWT",
"alg": "RS256",
"kid": "abc123"
}
Uwierzytelnianie żądania
Możesz sprawdzić, czy prośby o usunięcie danych zostały wysłane przez Google, korzystając z klucza publicznego w pliku dsrdelete.json Google. Plik dsrdelete.json Google jest hostowany pod adresem https://static.doubleclick.net/dsrdelete.json.
Aby potwierdzić autentyczność prośby o usunięcie danych:
Oblicz skrót nagłówka i ładunku za pomocą algorytmu określonego w nagłówku. Dane przekazywane do funkcji skrótu muszą mieć tę strukturę:
WEB_SAFE_BASE64_ENCODED_HEADER.WEB_SAFE_BASE64_ENCODED_PAYLOADUżyj klucza publicznego określonego w pliku
dsrdelete.jsonwystawcy, aby odszyfrować zdekodowany podpis.Porównaj skrót wygenerowany w kroku 1 z odszyfrowaną wartością z podpisu. Jeśli te elementy są zgodne, prośba o usunięcie danych jest autentyczna.
Analizowanie ładunku żądania usunięcia
Po sprawdzeniu autentyczności prośby o usunięcie danych musisz przeanalizować ładunek, aby sprawdzić, który identyfikator należy usunąć. Odszyfrowany ładunek to token rqJWT. Więcej informacji znajdziesz w artykule rqJWT: Requester „request” JWT.
W przykładzie poniżej pokazujemy zdekodowany ładunek w postaci tokena rqJWT, który zawiera parametry opcjonalne:
{
"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"
}
Żądanie usunięcia danych zawiera pole sub, które zawiera ciąg znaków JSON wskazujący, że wydawca prosi o usunięcie identyfikatora PPID o wartości crvBtLjLqNUiafwXZiyukLD4Tf6mMUYhBdQaPZ0pjyd. Token rqJWT zawiera zakodowany token idJWT. Szczegółowe informacje znajdziesz w sekcji idJWT: Issuer „identifier” JWT .
Przekazywanie prośby o usunięcie danych
Musisz przekazać prośbę o usunięcie danych wszystkim partnerom, którym udostępniasz określone identyfikatory. Jeśli na przykład korzystasz z integracji z Otwartym ustalaniem stawek, musisz przekazać żądanie usunięcia danych licytującym na Twojej platformie wymiany, którym udostępniono własny identyfikator. Ten proces wymaga wysłania do dostawców danych tokena rqJWT. Token rqJWT musi zawierać odpowiednie identyfikatory sformatowane na podstawie konfiguracji w pliku dsrdelete.json partnera danych. Dodatkowo token rqJWT musi zawierać Twój podpis wygenerowany za pomocą klucza prywatnego.
Potwierdzenie prośby o usunięcie danych
Aby potwierdzić, że żądanie usunięcia danych zostało przez Ciebie odebrane i zrealizowane, wyślij token JWT potwierdzenia do punktu końcowego podanego przez Google w pliku dsrdelete.json. Więcej informacji znajdziesz w artykule acJWT: token JWT „potwierdzenia” odbiorcy.
Kod stanu HTTP odpowiedzi zależy od tych wyników:
- Sukces: zwróć
HTTP 202, jeśli żądanie zostało odebrane, przeanalizowane i zrealizowane. - Błąd: zwróć
HTTP 400, jeśli żądanie nie zostało odebrane, przeanalizowane i zrealizowane.
Treść żądania musi zawierać token acJWT z ładunkiem, który wypełnia pole raResultCode kodem wyniku w postaci liczby całkowitej. Opcjonalnie możesz podać tekst opisujący wynik w polu raResultString. Token acJWT musi zawierać Twój podpis wygenerowany za pomocą klucza prywatnego.
Więcej informacji o kodach wyników obsługiwanych w ramach żądania usunięcia danych znajdziesz w sekcji Kody wyników.
Tworzenie nagłówka tokena acJWT
Wypełnij nagłówek na podstawie funkcji skrótu i klucza publicznego, których odbiorca ma użyć do weryfikacji Twojego podpisu. Niezakodowany nagłówek w przykładzie poniżej wskazuje, że odbiorca ma użyć algorytmu ES256 do wygenerowania skrótu oraz że podczas odszyfrowywania podpisu musi użyć klucza publicznego z identyfikatorem EhuduQ z pliku dsrdelete.json.
{
"alg": "ES256",
"typ": "JWT",
"kid": "EhuduQ"
}
Tworzenie ładunku tokena acJWT
Wypełnij ładunek na podstawie wyniku żądania usunięcia i wypełnij pole rqJWT zakodowaną formą tokena rqJWT, którego dotyczy potwierdzenie. W tym przykładzie określono pole raResultCode z wartością 0, aby wskazać, że operacja zakończyła się powodzeniem:
{
"version": "1.0",
"jti": "965492b2-74e5-409a-90f4-f041902db05f",
"raResultString": "",
"iat": 1756408212,
"iss": "doubleclick.net",
"raResultCode": 0,
"rqJWT": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IkVodWR1USJ9.eyJvcHRpb25hbFBhcmFtZXRlcnMiOiJ7XCJnYW1OZXR3b3JrQ29kZVwiOlwiMzExMDU3XCJ9Iiwic3ViIjoie1xuICAgIFwiaWRlbnRpZmllclZhbHVlXCI6IFwiY3J2QnRMakxxTlVpYWZ3WFppeXVrTEQ0VGY2bU1VWWhCZFFhUFowcGp5ZFwiLFxuICAgIFwiaWRlbnRpZmllclR5cGVcIjogXCJwcGlkXCIsXG4gICAgXCJpZGVudGlmaWVyRm9ybWF0XCI6IFwicGxhaW50ZXh0XCJcbiAgfSIsImlhdCI6MTc1NjI1Nzk1MSwidmVyc2lvbiI6IjEuMCIsImlzcyI6InRlc3RfcHVibGlzaGVyIiwiaWRKV1QiOiJleUpoYkdjaU9pSkZVekkxTmlJc0ltdHBaQ0k2SWtWb2RXUjFVU0lzSW5SNWNDSTZJa3BYVkNKOS5leUpwYzNNaU9pSjBaWE4wWDNCMVlteHBjMmhsY2lJc0luTjFZaUk2SW50Y2JpQWdJQ0JjSW1sa1pXNTBhV1pwWlhKV1lXeDFaVndpT2lCY0ltTnlka0owVEdwTWNVNVZhV0ZtZDFoYWFYbDFhMHhFTkZSbU5tMU5WVmxvUW1SUllWQmFNSEJxZVdSY0lpeGNiaUFnSUNCY0ltbGtaVzUwYVdacFpYSlVlWEJsWENJNklGd2ljSEJwWkZ3aUxGeHVJQ0FnSUZ3aWFXUmxiblJwWm1sbGNrWnZjbTFoZEZ3aU9pQmNJbkJzWVdsdWRHVjRkRndpWEc0Z0lIMGlMQ0pwWVhRaU9qRTNOVFl5TlRjNU5URXNJblpsY25OcGIyNGlPaUl4TGpBaWZRLkRoMTdmdjFzeEtNbmtPYTdIT1dmVmRzSVlvOEJCeTJwOVNrRFRTZlpvVzZ5cE1kbF81d0RZdFVJWUVmdVgzbjZVYndNb0gwV1ZnR1FuRlFyYU1INlhRIn0.zZnuUsUDzkARg31RzkhLOJCSXD5jPca8qff5IqyYrrRITgRgm29T__6gC3oOOK5RAcd_AFFYWzE8onx6Kj1w8A"
}