部分地區的資料刪除法規規定,發布商必須提供管道,讓內容使用者要求刪除自己的資料。如果您的即時出價整合功能使用第一方 ID,並從有資料刪除法規的區域接收廣告空間,建議您整合 IAB 的資料刪除要求架構。
當使用者選擇從發布商的應用程式或網站刪除 ID 時,資料刪除要求架構可讓發布商傳播資料刪除要求。發布商會將資料刪除要求傳送給交易平台, 交易平台則可能會將資料刪除要求傳送給您。收到資料刪除要求時,您必須將要求傳送給與您共用發布商第一方資料的實體。舉例來說,如果您已整合公開出價,就必須將要求傳送至交易所的出價方,告知對方已分享第一方資料。
本指南涵蓋與 Google 交易平台整合的資料刪除要求架構初始設定,並概述 Google 交易平台中的資料刪除要求架構工作流程。如需更多指引,請參閱資料刪除要求架構。
設定整合
如要開始接收 Google 傳送的資料刪除要求,請向 Google 註冊要與帳戶建立關聯的網域,並在註冊網域的根目錄中代管 dsrdelete.json 檔案。如要向 Google 註冊網域,請與客戶經理聯絡。dsrdelete.json 檔案有幾種用途,例如:
- 找出 Google 傳送資料刪除要求的端點。
- 列出支援的 ID 及其格式。
- 指定符合 JSON Web Key (JWK) 標準的公開金鑰,其他當事人會使用這些金鑰,驗證您傳送的已傳播資料刪除要求或確認訊息是否真實。
如要進一步瞭解 drsdelete.json 檔案,例如可填寫的必填和選填欄位,請參閱「探索」。
dsrdelete.json 檔案中指定的端點必須接收並回應傳入的資料刪除要求。Google 建議您使用所選程式設計語言的密碼編譯程式庫,驗證收到的要求並簽署傳送的確認訊息。
以下範例會設定 dsrdelete.json 檔案,其中包含端點、ID 和公開金鑰:
{
"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檔案。 - 發布商傳送 ID 的資料刪除要求給 Google。
- Google 判斷資料刪除要求中傳送的發布商 ID 已與您共用。
收到資料刪除要求後,您有責任刪除指定資料。您也必須繼續向其他資料合作夥伴傳播資料刪除要求,這些合作夥伴必須與您共用第一方發布商資料。Google 支援下列 ID 的資料刪除要求:
ppid:發布商提供的 ID (PPID)。pfpid_domain:網站適用的發布商第一方 ID。idfv:iOS 裝置的發布商第一方 ID。
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 收到的資料刪除要求是要求 JWT (rqJWT),其中包含發布商在要求刪除時傳送的身分 JWT (idJWT)。
在標頭中查看驗證詳細資料
標頭是 JSON 物件,說明您必須用來產生要求雜湊的演算法,這是驗證要求真實性時的必要步驟。如果發行者有多個私密金鑰可用於產生簽章,標頭也會識別出可用於驗證簽章的發行者公開金鑰。
以下範例是經過解碼的標頭,顯示您可以使用 RSA256 演算法和金鑰 ID abc123 驗證簽章:
{
"typ": "JWT",
"alg": "RS256",
"kid": "abc123"
}
驗證要求
您可以透過 Google dsrdelete.json 檔案中的公開金鑰,驗證資料刪除要求是否由 Google 傳送。Google dsrdelete.json 檔案代管於 https://static.doubleclick.net/dsrdelete.json
如要驗證資料刪除要求的真實性,請按照下列步驟操作:
使用標頭中識別的演算法,計算標頭和酬載的雜湊。傳遞至雜湊函式的資料必須使用下列結構:
WEB_SAFE_BASE64_ENCODED_HEADER.WEB_SAFE_BASE64_ENCODED_PAYLOAD使用簽發者
dsrdelete.json檔案中指定的公開金鑰,解密已解碼的簽章。比較您在步驟 1 中產生的雜湊與簽章的解密值。如果這些項目相符,表示資料刪除要求確實來自該使用者。
剖析刪除要求酬載
確認資料刪除要求的真實性後,您必須剖析酬載,驗證要刪除的 ID。解碼後的酬載是 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 」。
傳播資料刪除要求
您必須將資料刪除要求傳送給所有與您共用指定 ID 的資料合作夥伴。舉例來說,如果您已整合公開出價,就必須將資料刪除要求傳送給交易所中與您共用第一方 ID 的出價方。這個程序需要您將 rqJWT 權杖傳送給資料合作夥伴。rqJWT 權杖必須包含相關 ID,並根據資料合作夥伴 dsrdelete.json 檔案中的設定格式化。此外,rqJWT 權杖必須包含使用私密金鑰產生的簽章。
確認資料刪除要求
如要確認您已收到並處理資料刪除要求,請將確認 JWT 傳送至 Google 在 dsrdelete.json 檔案中指定的端點。詳情請參閱「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 欄位。以下範例指定 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"
}