某些地区有数据删除法规,要求发布商向其内容的用户提供请求删除其数据的方式。如果您的实时出价集成使用第一方标识符,并且从有数据删除法规的地区接收广告资源,Google 建议您与 IAB 的数据删除请求框架集成。
当用户选择从发布商的应用或网站中删除其标识符时,数据删除请求框架可让发布商传播数据删除请求。发布商会向广告交易平台发送数据删除请求, 广告交易平台可能会将数据删除请求传播给您。当您收到数据删除请求时,必须将该请求传递给您与之分享了发布商第一方数据的实体。例如,如果您已集成公开出价,则必须向已与您共享第一方数据的广告交易平台上的出价方传播请求。
本指南介绍了如何初步设置数据删除请求框架与 Google 广告交易平台的集成,并概述了 Google 广告交易平台中的数据删除请求框架工作流程。如需获取更多指导信息,请参阅数据删除请求框架。
设置集成
若要开始接收来自 Google 的数据删除请求,您必须向 Google 注册一个要与您的账号相关联的网域,并在注册网域的根目录下托管一个 dsrdelete.json 文件。如需向 Google 注册网域,请与您的客户经理联系。dsrdelete.json 文件有多种用途,例如:
- 确定 Google 发送数据删除请求的端点。
- 列出您支持的标识符及其格式。
- 指定符合 JSON Web 密钥 (JWK) 标准的公钥,其他方可以使用这些公钥来验证您发送的传播数据删除请求或确认的真实性。
如需详细了解 drsdelete.json 文件(例如您可以填充的必填字段和可选字段),请参阅发现。
dsrdelete.json 文件中指定的端点必须接收并响应传入的数据删除请求。Google 建议您使用所选编程语言的加密库来验证收到的请求,并对发送的确认进行签名。
以下示例设置了包含端点、标识符和公钥的 dsrdelete.json 文件:
{
"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
}
收到数据删除请求
当满足以下所有条件时,Google 会将发布商的数据删除请求传播给您:
- 您在通过 Google 注册的网域中托管有效的
dsrdelete.json文件。 - 发布商向 Google 发送针对某个标识符的数据删除请求。
- Google 确定数据删除请求中发送的发布商标识符曾与您共享。
收到数据删除要求后,您有责任删除指定的数据。您还必须继续将数据删除请求传播给您曾与之分享第一方发布商数据的其他数据合作伙伴。Google 支持针对以下标识符提出的数据删除请求:
ppid:发布商提供的标识符 (PPID)。pfpid_domain:发布商第一方标识符(适用于网站)。idfv:iOS 设备的发布商第一方标识符。
Google 会将数据删除请求作为 HTTP POST 请求发送到 dsrdelete.json 文件中指定的端点。数据删除请求的正文包含一个 JSON Web 令牌 (JWT),该令牌由以下部分组成:
- 描述加密算法的 JOSE 标头。
- 包含删除请求的 JWS 载荷。
- 用于验证请求真实性的 JWS 签名。
Google 会对标头、载荷和签名进行 base64 编码,并按以下格式设置这些项:
WEB_SAFE_BASE64_ENCODED_HEADER.WEB_SAFE_BASE64_ENCODED_PAYLOAD.WEB_SAFE_BASE64_ENCODED_SIGNATURE
如需详细了解数据删除框架中使用的不同 JWT,请参阅 JSON Web 令牌 (JWT) 实现。您从 Google 收到的数据删除请求是一个请求 JWT (rqJWT),其中包含发布商在请求删除时发送的身份 JWT (idJWT)。
在标头中查找验证详细信息
标头是一个 JSON 对象,用于描述您必须使用的算法,以生成请求的哈希值,这对于验证请求的真实性是必要的。如果签发者有多个可用于生成签名的私钥,则该标头还会指明您可以使用签发者的哪个公钥来验证签名。
以下示例是一个解码后的标头,显示了您可以使用密钥 ID 为 abc123 的 RSA256 算法来验证签名:
{
"typ": "JWT",
"alg": "RS256",
"kid": "abc123"
}
对请求进行身份验证
您可以验证 Google 是否已使用 Google dsrdelete.json 文件中的公钥发送数据删除请求。Google dsrdelete.json 文件托管在 https://static.doubleclick.net/dsrdelete.json
如需验证数据删除请求的真实性,请按以下步骤操作:
使用标头中标识的算法计算标头和载荷的哈希值。传递给哈希函数的数据必须使用以下结构:
WEB_SAFE_BASE64_ENCODED_HEADER.WEB_SAFE_BASE64_ENCODED_PAYLOAD使用签发者的
dsrdelete.json文件中指定的公钥解密解码后的签名。将您在第 1 步中生成的哈希与签名中的解密值进行比较。如果这些项匹配,则数据删除请求是真实的。
解析删除请求载荷
验证数据删除请求的真实性后,您必须解析载荷,以验证要删除的标识符。解码后的载荷是 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 字符串,用于指明发布商正在请求删除值为 crvBtLjLqNUiafwXZiyukLD4Tf6mMUYhBdQaPZ0pjyd 的 PPID。rqJWT 令牌包含已编码的 idJWT 令牌。如需了解详情,请参阅 idJWT:签发者“标识符”JWT 。
传播数据删除请求
您必须将数据删除请求传播给您已与之分享指定标识符的所有数据合作伙伴。例如,如果您已与公开出价集成,则必须将数据删除请求传播给您的广告交易平台中已共享第一方标识符的出价方。此流程需要您向数据合作伙伴发送 rqJWT 令牌。rqJWT 令牌必须包含相关标识符,这些标识符的格式应根据数据合作伙伴的 dsrdelete.json 文件中的配置来设置。此外,rqJWT 令牌必须包含使用您的私钥生成的签名。
确认数据删除请求
如需确认您已收到数据删除请求并已采取相应行动,请向 Google 在 dsrdelete.json 文件中指定的端点发送确认 JWT。如需了解详情,请参阅 acJWT:接收方“确认”JWT。
响应的 HTTP 状态代码取决于以下结果:
- 成功:如果请求已成功接收、解析并处理,则返回
HTTP 202。 - 失败:如果请求未成功接收、解析和处理,则返回
HTTP 400。
请求正文必须包含一个 acJWT 令牌,其载荷使用整数结果代码填充 raResultCode 字段。您可以选择在 raResultString 字段中提供有关结果的描述性文字。acJWT 令牌必须包含使用您的私钥生成的签名。
如需详细了解数据删除请求框架中支持的结果代码,请参阅结果代码。
构建 acJWT 令牌标头
根据您希望收件人在验证您的签名时使用的哈希函数和公钥填充标头。以下示例中的未编码标头表明,您希望收件人使用 ES256 算法生成哈希,并且收件人在解密签名时必须使用 dsrdelete.json 文件中密钥 ID 为 EhuduQ 的公钥。
{
"alg": "ES256",
"typ": "JWT",
"kid": "EhuduQ"
}
构建 acJWT 令牌载荷
根据删除请求的结果填充载荷,并使用您确认的 rqJWT 令牌的编码形式填充 rqJWT 字段。以下示例指定了一个值为 0 的 raResultCode 字段,以表明操作成功:
{
"version": "1.0",
"jti": "965492b2-74e5-409a-90f4-f041902db05f",
"raResultString": "",
"iat": 1756408212,
"iss": "doubleclick.net",
"raResultCode": 0,
"rqJWT": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IkVodWR1USJ9.eyJvcHRpb25hbFBhcmFtZXRlcnMiOiJ7XCJnYW1OZXR3b3JrQ29kZVwiOlwiMzExMDU3XCJ9Iiwic3ViIjoie1xuICAgIFwiaWRlbnRpZmllclZhbHVlXCI6IFwiY3J2QnRMakxxTlVpYWZ3WFppeXVrTEQ0VGY2bU1VWWhCZFFhUFowcGp5ZFwiLFxuICAgIFwiaWRlbnRpZmllclR5cGVcIjogXCJwcGlkXCIsXG4gICAgXCJpZGVudGlmaWVyRm9ybWF0XCI6IFwicGxhaW50ZXh0XCJcbiAgfSIsImlhdCI6MTc1NjI1Nzk1MSwidmVyc2lvbiI6IjEuMCIsImlzcyI6InRlc3RfcHVibGlzaGVyIiwiaWRKV1QiOiJleUpoYkdjaU9pSkZVekkxTmlJc0ltdHBaQ0k2SWtWb2RXUjFVU0lzSW5SNWNDSTZJa3BYVkNKOS5leUpwYzNNaU9pSjBaWE4wWDNCMVlteHBjMmhsY2lJc0luTjFZaUk2SW50Y2JpQWdJQ0JjSW1sa1pXNTBhV1pwWlhKV1lXeDFaVndpT2lCY0ltTnlka0owVEdwTWNVNVZhV0ZtZDFoYWFYbDFhMHhFTkZSbU5tMU5WVmxvUW1SUllWQmFNSEJxZVdSY0lpeGNiaUFnSUNCY0ltbGtaVzUwYVdacFpYSlVlWEJsWENJNklGd2ljSEJwWkZ3aUxGeHVJQ0FnSUZ3aWFXUmxiblJwWm1sbGNrWnZjbTFoZEZ3aU9pQmNJbkJzWVdsdWRHVjRkRndpWEc0Z0lIMGlMQ0pwWVhRaU9qRTNOVFl5TlRjNU5URXNJblpsY25OcGIyNGlPaUl4TGpBaWZRLkRoMTdmdjFzeEtNbmtPYTdIT1dmVmRzSVlvOEJCeTJwOVNrRFRTZlpvVzZ5cE1kbF81d0RZdFVJWUVmdVgzbjZVYndNb0gwV1ZnR1FuRlFyYU1INlhRIn0.zZnuUsUDzkARg31RzkhLOJCSXD5jPca8qff5IqyYrrRITgRgm29T__6gC3oOOK5RAcd_AFFYWzE8onx6Kj1w8A"
}