Framework für Anfragen zum Löschen von Daten verwenden

In einigen Regionen gibt es Vorschriften zur Datenlöschung, die Publisher dazu verpflichten, Nutzern ihrer Inhalte die Möglichkeit zu geben, die Löschung ihrer Daten zu beantragen. Wenn bei Ihrer Integration für Echtzeitgebote Erstanbieter-IDs verwendet werden und Inventar aus Regionen mit Vorschriften zur Datenlöschung empfangen wird, empfiehlt Google, dass Sie das IAB Data Deletion Request Framework (IAB-Framework für Datenlöschungsanfragen) integrieren.

Wenn ein Nutzer seine Kennungen aus der App oder von der Website eines Publishers löschen möchte, kann der Publisher mithilfe des Frameworks für Anträge auf Löschen von Daten einen solchen Antrag weiterleiten. Der Publisher sendet eine Anfrage zum Löschen von Daten an Exchanges, die diese Anfrage an Sie weiterleiten können. Wenn Sie eine Anfrage zum Löschen von Daten erhalten, müssen Sie diese an alle Rechtssubjekte weiterleiten, mit denen Sie die selbst erhobenen Daten des Publishers geteilt haben. Wenn Sie beispielsweise eine Open Bidding-Integration haben, müssen Sie die Anfrage an Bieter in Ihrer Börse weiterleiten, mit denen die selbst erhobenen Daten geteilt wurden.

In diesem Leitfaden wird die Ersteinrichtung Ihrer Integration des Frameworks für Anträge auf Datenlöschung in die Google-Börse beschrieben. Außerdem wird der Workflow des Frameworks für Anträge auf Datenlöschung im Kontext der Google-Börse erläutert. Weitere Informationen finden Sie unter Framework für Anträge auf Datenlöschung.

Integration einrichten

Damit Sie Anfragen zum Löschen von Daten von Google erhalten können, müssen Sie eine Domain bei Google registrieren, die mit Ihrem Konto verknüpft werden soll, und eine dsrdelete.json-Datei im Stammverzeichnis Ihrer registrierten Domain hosten. Wenden Sie sich an Ihren Account Manager, um Ihre Domain bei Google zu registrieren. Die Datei dsrdelete.json dient mehreren Zwecken, z. B.:

  • Den Endpunkt ermitteln, an den Google Anfragen zum Löschen von Daten sendet.
  • Sie geben die unterstützten Kennungen und deren Formatierung an.
  • Sie geben Ihre öffentlichen Schlüssel gemäß dem JSON Web Key-Standard (JWK) an, die von anderen Parteien verwendet werden, um die Authentizität von weitergegebenen Datenlöschungsanfragen oder Bestätigungen zu überprüfen, die Sie senden.

Weitere Informationen zur drsdelete.json-Datei, z. B. zu den erforderlichen und optionalen Feldern, die Sie ausfüllen können, finden Sie unter Discovery.

Der in der Datei dsrdelete.json angegebene Endpunkt muss eingehende Anfragen zum Löschen von Daten empfangen und darauf reagieren. Google empfiehlt, eine kryptografische Bibliothek für die von Ihnen gewählte Programmiersprache zu verwenden, um die empfangenen Anfragen zu bestätigen und die gesendeten Bestätigungen zu signieren.

Im folgenden Beispiel wird eine dsrdelete.json-Datei mit einem Endpunkt, Kennungen und einem öffentlichen Schlüssel festgelegt:

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

Löschanfrage für Daten erhalten

Google leitet Anfragen von Publishern zum Löschen von Daten an Sie weiter, wenn alle folgenden Bedingungen erfüllt sind:

  • Sie hosten eine gültige dsrdelete.json-Datei in einer bei Google registrierten Domain.
  • Der Publisher sendet eine Anfrage zum Löschen von Daten für eine Kennung an Google.
  • Google stellt fest, dass die im Antrag auf Datenlöschung gesendete Publisher-Kennung mit Ihnen geteilt wurde.

Wenn Sie eine Anfrage zum Löschen von Daten erhalten, sind Sie dafür verantwortlich, die angegebenen Daten zu löschen. Sie müssen die Anfrage zum Löschen von Daten auch weiterhin an andere Datenpartner weiterleiten, mit denen Sie die selbst erhobenen Publisher-Daten geteilt haben. Google unterstützt Anträge auf Datenlöschung für die folgenden Kennzeichnungen:

  • ppid: Vom Publisher bereitgestellte Kennungen (Publisher Provided Identifier, PPID).
  • pfpid_domain: Eigene Publisher-Kennungen für das Web.
  • idfv: Eigene Kennungen des Publishers für iOS-Geräte.

Google sendet die Anfrage zum Löschen von Daten als HTTP-POST-Anfrage an den in Ihrer dsrdelete.json-Datei angegebenen Endpunkt. Der Text der Anfrage zum Löschen von Daten enthält ein JSON-Webtoken (JWT), das aus den folgenden Teilen besteht:

  • Ein JOSE-Header, der den Verschlüsselungsalgorithmus beschreibt.
  • Eine JWS-Nutzlast mit dem Löschantrag.
  • Eine JWS-Signatur zur Überprüfung der Authentizität der Anfrage.

Google codiert den Header, die Nutzlast und die Signatur mit Base64 und formatiert diese Elemente so:

WEB_SAFE_BASE64_ENCODED_HEADER.WEB_SAFE_BASE64_ENCODED_PAYLOAD.WEB_SAFE_BASE64_ENCODED_SIGNATURE

Weitere Informationen zu den verschiedenen JWTs, die im Framework zum Löschen von Daten verwendet werden, finden Sie unter Implementierung von JSON Web Tokens (JWT). Die von Google erhaltene Anfrage zum Löschen von Daten ist ein Request JWT (rqJWT), das das Identity JWT (idJWT) enthält, das der Publisher beim Anfordern des Löschens gesendet hat.

Validierungsdetails im Header ansehen

Der Header ist ein JSON-Objekt, das den Algorithmus beschreibt, den Sie zum Erstellen eines Hash der Anfrage verwenden müssen. Dieser ist erforderlich, um die Authentizität der Anfrage zu überprüfen. Wenn der Aussteller mehrere private Schlüssel hat, mit denen er eine Signatur erstellen kann, wird im Header auch angegeben, mit welchem öffentlichen Schlüssel des Ausstellers Sie die Signatur validieren können.

Das folgende Beispiel zeigt einen decodierten Header, aus dem hervorgeht, dass Sie den RSA256-Algorithmus mit der Schlüssel-ID abc123 verwenden können, um die Signatur zu validieren:

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

Anfrage authentifizieren

Sie können überprüfen, ob Google die Anträge auf Datenlöschung mit dem öffentlichen Schlüssel in der dsrdelete.json-Datei von Google gesendet hat. Die dsrdelete.json-Datei von Google wird unter https://static.doubleclick.net/dsrdelete.json gehostet.

So prüfen Sie die Authentizität des Antrags auf Datenlöschung:

  1. Berechnen Sie den Hash des Headers und der Nutzlast mit dem im Header angegebenen Algorithmus. Die Daten, die an Ihre Hash-Funktion übergeben werden, müssen die folgende Struktur haben:

    WEB_SAFE_BASE64_ENCODED_HEADER.WEB_SAFE_BASE64_ENCODED_PAYLOAD
    
  2. Verwenden Sie den öffentlichen Schlüssel, der in der dsrdelete.json-Datei des Ausstellers angegeben ist, um die decodierte Signatur zu entschlüsseln.

  3. Vergleichen Sie den Hash, den Sie in Schritt 1 generiert haben, mit dem entschlüsselten Wert aus der Signatur. Wenn diese Elemente übereinstimmen, ist die Anfrage zum Löschen von Daten authentisch.

Löschanfrage-Payload parsen

Nachdem Sie die Authentizität der Anfrage zum Löschen von Daten bestätigt haben, müssen Sie die Nutzlast parsen, um zu prüfen, welche Kennung gelöscht werden soll. Die decodierte Nutzlast ist ein rqJWT-Token. Weitere Informationen finden Sie unter rqJWT: Requester “request” JWT.

Das folgende Beispiel zeigt eine decodierte Nutzlast als rqJWT-Token mit optionalen Parametern:

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

Die Anfrage zum Löschen von Daten enthält das Feld sub, das einen JSON-String enthält, der angibt, dass der Publisher das Löschen einer PPID mit dem Wert crvBtLjLqNUiafwXZiyukLD4Tf6mMUYhBdQaPZ0pjyd anfordert. Das rqJWT-Token enthält das codierte idJWT-Token. Weitere Informationen finden Sie unter idJWT: Issuer “identifier” JWT .

Anfrage zum Löschen von Daten weiterleiten

Sie müssen die Anfrage zum Löschen von Daten an alle Datenpartner weiterleiten, mit denen Sie die angegebenen Kennungen geteilt haben. Wenn Sie beispielsweise in Open Bidding eingebunden sind, müssen Sie die Anfrage zum Löschen von Daten an Bieter in Ihrer Exchange weiterleiten, mit denen die eigene Kennung geteilt wurde. Bei diesem Prozess müssen Sie Datenpartnern ein rqJWT-Token senden. Das rqJWT-Token muss die relevanten Kennungen enthalten, die entsprechend den Konfigurationen in der dsrdelete.json-Datei des Datenpartners formatiert sind. Außerdem muss das rqJWT-Token Ihre mit Ihrem privaten Schlüssel generierte Signatur enthalten.

Anfrage zum Löschen von Daten bestätigen

Um zu bestätigen, dass Sie die Anfrage zum Löschen von Daten erhalten und darauf reagiert haben, senden Sie ein Bestätigungs-JWT an den Endpunkt, den Google in der Datei dsrdelete.json angibt. Weitere Informationen finden Sie unter acJWT: JWT zur Bestätigung des Empfängers.

Der HTTP-Statuscode Ihrer Antwort hängt vom folgenden Ergebnis ab:

  • Erfolg: Gib HTTP 202 zurück, wenn die Anfrage erfolgreich empfangen, geparst und bearbeitet wurde.
  • Fehler: Gib HTTP 400 zurück, wenn die Anfrage nicht erfolgreich empfangen, geparst und verarbeitet wurde.

Der Anfragetext muss ein acJWT-Token mit einer Nutzlast enthalten, die das Feld raResultCode mit einem ganzzahligen Ergebniscode füllt. Optional können Sie im Feld raResultString beschreibenden Text zum Ergebnis angeben. Das acJWT-Token muss Ihre mit Ihrem privaten Schlüssel generierte Signatur enthalten.

Weitere Informationen zu den im Framework für Anträge auf Datenlöschung unterstützten Ergebniscodes finden Sie unter Ergebniscodes.

acJWT-Token-Header erstellen

Füllen Sie den Header basierend auf der Hash-Funktion und dem öffentlichen Schlüssel aus, die der Empfänger zum Überprüfen Ihrer Signatur verwenden soll. Der nicht codierte Header im folgenden Beispiel gibt an, dass der Empfänger den ES256-Algorithmus zum Generieren des Hash verwenden soll und dass der Empfänger den öffentlichen Schlüssel mit der Schlüssel-ID EhuduQ aus Ihrer dsrdelete.json-Datei zum Entschlüsseln Ihrer Signatur verwenden muss.

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

acJWT-Token-Nutzlast erstellen

Füllen Sie die Nutzlast basierend auf dem Ergebnis der Löschanfrage aus und füllen Sie das Feld rqJWT mit der codierten Form des rqJWT-Tokens aus, das Sie bestätigen. Im folgenden Beispiel wird ein raResultCode-Feld mit dem Wert 0 angegeben, um anzugeben, dass der Vorgang erfolgreich war:

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