Использовать фреймворк запросов на удаление данных

В некоторых регионах действуют правила удаления данных, которые обязывают издателей предоставлять пользователям своего контента возможность запросить удаление своих данных. Если ваша интеграция с системой торгов в реальном времени использует собственные идентификаторы и получает рекламные места из регионов, где действуют правила удаления данных, Google рекомендует интегрироваться с фреймворком запросов на удаление данных IAB .

Когда пользователь решает удалить свои идентификаторы из приложения или сайта издателя, платформа запросов на удаление данных позволяет издателю распространить запрос на удаление данных. Издатель отправляет запрос на удаление данных биржам, которые могут распространить этот запрос вам. Получив запрос на удаление данных, вы должны распространить его организациям, с которыми вы поделились собственными данными издателя. Например, если у вас есть интеграция с Open Bidding, вы должны распространить запрос участникам торгов на вашей бирже, с которыми были переданы собственные данные.

В этом руководстве описана первоначальная настройка интеграции вашей системы запросов на удаление данных с биржей Google, а также представлен обзор рабочего процесса системы запросов на удаление данных в контексте биржи Google. Дополнительные рекомендации см. в разделе «Система запросов на удаление данных» .

Настройте интеграцию

Чтобы начать получать запросы на удаление данных от Google, необходимо зарегистрировать домен в Google, который вы хотите связать со своей учетной записью, и разместить файл dsrdelete.json в корневом каталоге зарегистрированного домена. Для регистрации домена в Google обратитесь к своему менеджеру по работе с клиентами. Файл dsrdelete.json выполняет несколько функций, например:

  • Определение конечной точки, куда Google отправляет запросы на удаление данных.
  • Перечислите поддерживаемые вами идентификаторы и укажите их формат.
  • Укажите ваши открытые ключи, соответствующие стандарту JSON Web Key (JWK), которые другие стороны используют для проверки подлинности передаваемых запросов на удаление данных или подтверждений, которые вы отправляете.

Подробную информацию о файле drsdelete.json , включая обязательные и необязательные поля, которые можно заполнить, см. в разделе «Обнаружение» .

Указанная в файле dsrdelete.json конечная точка должна получать входящие запросы на удаление данных и отвечать на них. Google рекомендует использовать криптографическую библиотеку для выбранного вами языка программирования, чтобы проверять получаемые запросы и подписывать отправляемые подтверждения.

В следующем примере создается файл dsrdelete.json , содержащий конечную точку, идентификаторы и открытый ключ:

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

Получен запрос на удаление данных

Google пересылает вам запросы на удаление данных от издателей, если выполняются все следующие условия:

  • Вы разместили действительный файл dsrdelete.json на домене, зарегистрированном в Google.
  • Издатель отправляет в Google запрос на удаление идентификатора.
  • Компания Google определила, что идентификатор издателя, отправленный в запросе на удаление данных, был передан вам.

Получив запрос на удаление данных, вы несете ответственность за удаление указанных данных. Вы также должны продолжать распространять запрос на удаление данных другим партнерам, с которыми вы поделились данными издателя. Google поддерживает запросы на удаление данных для следующих идентификаторов:

  • ppuid : Идентификаторы, предоставленные издателем.
  • sco : Собственные идентификаторы издателя для веб-сайтов.
  • ifv : Собственные идентификаторы издателя для устройств iOS.

Google отправляет запрос на удаление данных в виде HTTP POST-запроса на конечную точку, указанную в файле dsrdelete.json . Тело запроса на удаление данных содержит JSON Web Token (JWT), состоящий из следующих частей:

  • Заголовочный файл JOSE, описывающий алгоритм шифрования.
  • JWS-пакет данных, содержащий запрос на удаление.
  • Подпись JWS для подтверждения подлинности запроса.

Google кодирует заголовок, полезную нагрузку и подпись в формате base64 и форматирует эти элементы следующим образом:

WEB_SAFE_BASE64_ENCODED_HEADER.WEB_SAFE_BASE64_ENCODED_PAYLOAD.WEB_SAFE_BASE64_ENCODED_SIGNATURE

Чтобы узнать больше о различных JWT, используемых в системе удаления данных, см. раздел «Реализация JSON Web Token (JWT)» . Запрос на удаление данных, который вы получаете от Google, представляет собой Request JWT (rqJWT), который включает в себя Identity JWT (idJWT), отправленный издателем при запросе на удаление.

Подробную информацию о проверке можно найти в заголовке.

Заголовок представляет собой JSON-объект, описывающий алгоритм, который необходимо использовать для получения хеша запроса, что необходимо для проверки подлинности запроса. Если у эмитента есть несколько закрытых ключей, которые он может использовать для создания подписи, заголовок также указывает, какой из открытых ключей эмитента можно использовать для проверки подписи.

В следующем примере представлен декодированный заголовок, демонстрирующий возможность использования алгоритма RSA256 с идентификатором ключа abc123 для проверки подписи:

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

Аутентифицировать запрос

Вы можете убедиться, что Google отправлял запросы на удаление данных, используя открытый ключ, указанный в файле dsrdelete.json . Файл dsrdelete.json размещен по адресу https://static.doubleclick.net/dsrdelete.json

Для проверки подлинности запроса на удаление данных выполните следующие действия:

  1. Вычислите хеш заголовка и полезной нагрузки, используя алгоритм, указанный в заголовке. Данные, передаваемые в вашу хеш-функцию, должны иметь следующую структуру:

    WEB_SAFE_BASE64_ENCODED_HEADER.WEB_SAFE_BASE64_ENCODED_PAYLOAD
    
  2. Для расшифровки полученной подписи используйте открытый ключ, указанный в файле dsrdelete.json эмитента.

  3. Сравните хеш, сгенерированный на первом шаге, с расшифрованным значением из подписи. Если эти элементы совпадают, запрос на удаление данных является подлинным.

Проанализируйте полезную нагрузку запроса на удаление.

После проверки подлинности запроса на удаление данных необходимо проанализировать полезную нагрузку, чтобы определить, какой идентификатор следует удалить. Декодированная полезная нагрузка представляет собой токен rqJWT. Подробнее см. rqJWT: JWT запроса отправителя .

В следующем примере показана декодированная полезная нагрузка в виде токена rqJWT, включая необязательные параметры:

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

Запрос на удаление данных включает в себя sub , содержащее строку JSON, указывающую на то, что издатель запрашивает удаление PPID со значением crvBtLjLqNUiafwXZiyukLD4Tf6mMUYhBdQaPZ0pjyd . Токен rqJWT включает закодированный токен idJWT. Подробности см. в разделе idJWT: JWT-токен «идентификатора» издателя .

Передайте запрос на удаление данных.

Необходимо распространить запрос на удаление данных всем партнерам по данным, с которыми вы поделились указанными идентификаторами. Например, если вы интегрированы с Open Bidding, необходимо распространить запрос на удаление данных участникам торгов на вашей бирже, с которыми был передан идентификатор первого лица. Для этого необходимо отправить партнерам по данным токен rqJWT. Токен rqJWT должен содержать соответствующие идентификаторы, отформатированные в соответствии с конфигурациями в файле dsrdelete.json партнера по данным. Кроме того, токен rqJWT должен включать вашу подпись, сгенерированную с помощью вашего закрытого ключа.

Подтвердите запрос на удаление данных.

Чтобы подтвердить получение запроса на удаление данных и выполнение соответствующих действий, отправьте JWT-токен подтверждения (Acknowledgement JWT) на конечную точку, указанную Google в файле dsrdelete.json . Подробности см. в разделе acJWT: JWT-токен подтверждения получателя (Recipient “acknowledgement” JWT) .

Код состояния HTTP вашего ответа зависит от следующего результата:

  • Успех : возвращает HTTP 202 если запрос был успешно получен, обработан и выполнен.
  • Ошибка : Если запрос не был успешно получен, обработан и выполнен, возвращается HTTP 400 .

В теле запроса должен содержаться токен acJWT с полезной нагрузкой, которая заполняет поле raResultCode целочисленным кодом результата. При желании вы можете указать описательный текст о результате в поле raResultString . Токен acJWT должен содержать вашу подпись, сгенерированную с помощью вашего закрытого ключа.

Чтобы узнать больше о кодах результатов, поддерживаемых в рамках системы запросов на удаление данных, см. раздел «Коды результатов» .

Формирование заголовка токена acJWT

Заполните заголовок, указав хеш-функцию и открытый ключ, которые получатель должен использовать при проверке вашей подписи. В приведенном ниже примере незакодированный заголовок указывает, что получатель должен использовать алгоритм ES256 для генерации хеша и что при расшифровке подписи получатель должен использовать открытый ключ с идентификатором EhuduQ из файла dsrdelete.json .

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

Создайте полезную нагрузку для токена acJWT.

Заполните полезную нагрузку в зависимости от результата запроса на удаление и заполните поле rqJWT закодированной формой подтверждаемого токена rqJWT. В следующем примере поле raResultCode задано значением 0 , указывающим на успешное выполнение операции:

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