Utilizzare il framework per le richieste di eliminazione dei dati

Alcune regioni hanno normative sull'eliminazione dei dati che richiedono ai publisher di fornire agli utenti dei loro contenuti un mezzo per richiedere l'eliminazione dei propri dati. Se la tua integrazione di Real Time Bidding utilizza identificatori proprietari e riceve inventario da regioni con normative sull'eliminazione dei dati, Google ti consiglia di eseguire l'integrazione con il framework per le richieste di eliminazione dei dati di IAB.

Quando un utente sceglie di eliminare i propri identificatori dall'app o dal sito di un publisher, il framework per le richieste di eliminazione dei dati consente al publisher di propagare una richiesta di eliminazione dei dati. Il publisher invia una richiesta di eliminazione dei dati agli exchange, che possono propagare la richiesta di eliminazione dei dati a te. Quando ricevi una richiesta di eliminazione dei dati, devi propagarla alle entità con cui hai condiviso i dati proprietari del publisher. Ad esempio, se hai un'integrazione Open Bidding, devi propagare la richiesta agli offerenti sul tuo exchange con cui sono stati condivisi i dati proprietari.

Questa guida illustra la configurazione iniziale dell'integrazione del framework per le richieste di eliminazione dei dati con Google Exchange e fornisce una panoramica del flusso di lavoro del framework per le richieste di eliminazione dei dati nel contesto di Google Exchange. Per ulteriori indicazioni, consulta il framework per le richieste di eliminazione dei dati.

Configura l'integrazione

Per iniziare a ricevere le richieste di eliminazione dei dati da Google, devi registrare un dominio con Google che vuoi associare al tuo account e ospitare un file dsrdelete.json nella directory principale del dominio registrato. Per registrare il tuo dominio con Google, contatta il tuo account manager. Il file dsrdelete.json ha diversi scopi, ad esempio:

  • Identificazione dell'endpoint a cui Google invia le richieste di eliminazione dei dati.
  • Elenco degli identificatori supportati e del relativo formato.
  • Specificando le chiavi pubbliche conformi allo standard JSON Web Key (JWK), che altre parti utilizzano per verificare l'autenticità delle richieste di eliminazione o delle conferme di dati propagati che invii.

Per informazioni dettagliate sul file drsdelete.json, ad esempio i campi obbligatori e facoltativi che puoi compilare, consulta Discovery.

L'endpoint specificato nel file dsrdelete.json deve ricevere e rispondere alle richieste di eliminazione dei dati in arrivo. Google consiglia di utilizzare una libreria crittografica per il linguaggio di programmazione scelto per verificare le richieste che ricevi e firmare le conferme che invii.

L'esempio seguente imposta un file dsrdelete.json con un endpoint, identificatori e chiave pubblica:

{
    "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
}

Ricevere una richiesta di eliminazione dati

Google propaga le richieste di eliminazione dei dati dai publisher quando sono soddisfatte tutte le seguenti condizioni:

  • Ospiti un file dsrdelete.json valido su un dominio registrato con Google.
  • Il publisher invia a Google una richiesta di eliminazione dei dati per un identificatore.
  • Google determina che l'identificatore publisher inviato nella richiesta di eliminazione dei dati è stato condiviso con te.

Quando ricevi una richiesta di eliminazione dei dati, sei responsabile dell'eliminazione dei dati specificati. Devi inoltre continuare a propagare la richiesta di eliminazione dei dati ad altri partner di dati con cui hai condiviso i dati proprietari del publisher. Google supporta le richieste di eliminazione dei dati per i seguenti identificatori:

  • ppid: identificatori forniti dal publisher (PPID).
  • pfpid_domain: identificatori proprietari del publisher per il web.
  • idfv: identificatori proprietari del publisher per i dispositivi iOS.

Google invia la richiesta di eliminazione dei dati come richiesta HTTP POST all'endpoint specificato nel file dsrdelete.json. Il corpo della richiesta di eliminazione dei dati contiene un token web JSON (JWT) composto da le seguenti parti:

  • Un'intestazione JOSE che descrive l'algoritmo di crittografia.
  • Un payload JWS contenente la richiesta di eliminazione.
  • Una firma JWS per verificare l'autenticità della richiesta.

Google codifica l'intestazione, il payload e la firma in base64 e formatta questi elementi nel seguente modo:

WEB_SAFE_BASE64_ENCODED_HEADER.WEB_SAFE_BASE64_ENCODED_PAYLOAD.WEB_SAFE_BASE64_ENCODED_SIGNATURE

Per saperne di più sui JWT distinti utilizzati nel framework di eliminazione dei dati, consulta Implementazione del token web JSON (JWT). La richiesta di eliminazione dei dati che ricevi da Google è un JWT di richiesta (rqJWT), che include l'Identity JWT (idJWT) che l'editore ha inviato quando ha richiesto l'eliminazione.

Trovare i dettagli di convalida nell'intestazione

L'intestazione è un oggetto JSON che descrive l'algoritmo da utilizzare per produrre un hash della richiesta, necessario per verificarne l'autenticità. Se l'emittente dispone di più chiavi private che può utilizzare per produrre una firma, l'intestazione identifica anche quale delle chiavi pubbliche dell'emittente puoi utilizzare per convalidare la firma.

Il seguente esempio è un'intestazione decodificata che mostra che puoi utilizzare l'algoritmo RSA256 con l'ID chiave abc123 per convalidare la firma:

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

Autentica la richiesta

Puoi verificare che Google abbia inviato le richieste di eliminazione dei dati con la chiave pubblica nel file dsrdelete.json di Google. Il file dsrdelete.json di Google è ospitato all'indirizzo https://static.doubleclick.net/dsrdelete.json

Per verificare l'autenticità della richiesta di eliminazione dei dati, segui questi passaggi:

  1. Calcola l'hash dell'intestazione e del payload utilizzando l'algoritmo identificato nell'intestazione. I dati passati alla funzione hash devono utilizzare la seguente struttura:

    WEB_SAFE_BASE64_ENCODED_HEADER.WEB_SAFE_BASE64_ENCODED_PAYLOAD
    
  2. Utilizza la chiave pubblica specificata nel file dsrdelete.json dell'emittente per decriptare la firma decodificata.

  3. Confronta l'hash generato nel passaggio 1 con il valore decriptato della firma. Se questi elementi corrispondono, la richiesta di eliminazione dei dati è autentica.

Analizzare il payload della richiesta di eliminazione

Dopo aver verificato l'autenticità della richiesta di eliminazione dei dati, devi analizzare il payload per verificare quale identificatore eliminare. Il payload decodificato è un token rqJWT. Per maggiori dettagli, vedi rqJWT: JWT "request" del richiedente.

Il seguente esempio mostra un payload decodificato come token rqJWT e include parametri facoltativi:

{
    "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"
}

La richiesta di eliminazione dei dati include il campo sub, che contiene una stringa JSON che indica che il publisher sta richiedendo l'eliminazione di un PPID con il valore crvBtLjLqNUiafwXZiyukLD4Tf6mMUYhBdQaPZ0pjyd. Il token rqJWT include il token idJWT codificato. Per i dettagli, vedi idJWT: JWT "identifier" dell'emittente .

Propagare la richiesta di eliminazione dati

Devi propagare la richiesta di eliminazione dei dati a tutti i partner di dati con cui hai condiviso gli identificatori specificati. Ad esempio, se hai eseguito l'integrazione con Open Bidding, devi propagare la richiesta di eliminazione dei dati agli offerenti sul tuo exchange con cui è stato condiviso l'identificatore proprietario. Questa procedura richiede l'invio di un token rqJWT ai partner di dati. Il token rqJWT deve contenere gli identificatori pertinenti, formattati in base alle configurazioni nel file dsrdelete.json del partner di dati. Inoltre, il token rqJWT deve includere la tua firma generata con la tua chiave privata.

Accettare la richiesta di eliminazione dei dati

Per confermare di aver ricevuto la richiesta di eliminazione dei dati e di averla eseguita, invia un JWT di conferma all'endpoint specificato da Google nel file dsrdelete.json. Per maggiori dettagli, vedi acJWT: JWT di "riconoscimento" del destinatario.

Il codice di stato HTTP della risposta dipende dal seguente risultato:

  • Successo: restituisce HTTP 202 se la richiesta è stata ricevuta, analizzata e gestita correttamente.
  • Errore: restituisci HTTP 400 se la richiesta non è stata ricevuta, analizzata e gestita correttamente.

Il corpo della richiesta deve includere un token acJWT con un payload che compila il campo raResultCode con un codice risultato intero. Se vuoi, puoi fornire un testo descrittivo sul risultato nel campo raResultString. Il token acJWT deve includere la tua firma generata con la tua chiave privata.

Per scoprire di più sui codici di risultato supportati nel framework per le richieste di eliminazione dei dati, consulta Codici di risultato.

Creare l'intestazione del token acJWT

Compila l'intestazione in base alla funzione hash e alla chiave pubblica che vuoi che il destinatario utilizzi per verificare la tua firma. L'intestazione non codificata nell'esempio seguente indica che intendi che il destinatario utilizzi l'algoritmo ES256 per generare l'hash e che deve utilizzare la chiave pubblica con l'ID chiave EhuduQ dal tuo file dsrdelete.json durante la decriptazione della firma.

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

Crea il payload del token acJWT

Compila il payload in base al risultato della richiesta di eliminazione e compila il campo rqJWT con la forma codificata del token rqJWT che stai confermando. L'esempio seguente specifica un campo raResultCode con il valore 0 per indicare che l'operazione è riuscita:

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