डेटा मिटाने के अनुरोध वाले फ़्रेमवर्क का इस्तेमाल करना

कुछ देशों/इलाकों में, डेटा मिटाने से जुड़े कानून हैं. इनके तहत, पब्लिशर को अपने कॉन्टेंट के उपयोगकर्ताओं को ऐसा तरीका उपलब्ध कराना होता है जिसकी मदद से वे अपने डेटा को मिटाने का अनुरोध कर सकें. अगर रीयल-टाइम बिडिंग इंटिग्रेशन में, पहले पक्ष (ग्राहक) के आइडेंटिफ़ायर का इस्तेमाल किया जाता है और ऐसे इलाकों से इन्वेंट्री मिलती है जहां डेटा मिटाने से जुड़े कानून लागू होते हैं, तो 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": "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: पब्लिशर का भेजा गया आईडी (पीपीआईडी).
  • pfpid_domain: वेब के लिए, पब्लिशर के पहले पक्ष के आइडेंटिफ़ायर.
  • idfv: iOS डिवाइसों के लिए, पब्लिशर के बनाए गए पहले पक्ष के आइडेंटिफ़ायर.

Google, डेटा मिटाने का अनुरोध, एचटीटीपी पोस्ट अनुरोध के तौर पर उस एंडपॉइंट को भेजता है जो आपकी 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 वेब टोकन (JWT) लागू करना लेख पढ़ें. Google से मिलने वाला डेटा मिटाने का अनुरोध, Request JWT (rqJWT) होता है. इसमें Identity JWT (idJWT) शामिल होता है. इसे पब्लिशर ने डेटा मिटाने का अनुरोध करते समय भेजा था.

हेडर में पुष्टि से जुड़ी जानकारी ढूंढना

हेडर एक JSON ऑब्जेक्ट होता है. इसमें उस एल्गोरिदम के बारे में बताया जाता है जिसका इस्तेमाल करके, आपको अनुरोध का हैश जनरेट करना होता है. अनुरोध की पुष्टि करने के लिए, यह ज़रूरी है कि अनुरोध असली हो. अगर जारी करने वाले के पास हस्ताक्षर बनाने के लिए कई निजी पासकोड हैं, तो हेडर यह भी पहचानता है कि जारी करने वाले के कौनसे सार्वजनिक पासकोड का इस्तेमाल, हस्ताक्षर की पुष्टि करने के लिए किया जा सकता है.

नीचे दिए गए उदाहरण में, डिकोड किया गया हेडर दिखाया गया है. इससे पता चलता है कि हस्ताक्षर की पुष्टि करने के लिए, RSA256 एल्गोरिदम का इस्तेमाल किया जा सकता है. इसके लिए, कुंजी आईडी abc123 का इस्तेमाल करें:

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

अनुरोध की पुष्टि करना

इस बात की पुष्टि की जा सकती है कि Google ने डेटा मिटाने के अनुरोध, Google dsrdelete.json फ़ाइल में मौजूद सार्वजनिक कुंजी का इस्तेमाल करके भेजे हैं. Google 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 स्ट्रिंग होती है. इससे पता चलता है कि पब्लिशर, crvBtLjLqNUiafwXZiyukLD4Tf6mMUYhBdQaPZ0pjyd वैल्यू वाले पीपीआईडी को मिटाने का अनुरोध कर रहा है. rqJWT टोकन में, कोड में बदला गया idJWT टोकन शामिल होता है. ज़्यादा जानकारी के लिए, idJWT: Issuer “identifier” JWT देखें.

डेटा मिटाने के अनुरोध को आगे बढ़ाना

आपको डेटा मिटाने के अनुरोध को उन सभी डेटा पार्टनर तक पहुंचाना होगा जिनके साथ आपने तय किए गए आइडेंटिफ़ायर शेयर किए हैं. उदाहरण के लिए, अगर आपने ओपन बिडिंग को इंटिग्रेट किया है, तो आपको अपने एक्सचेंज पर बिडर को डेटा मिटाने के अनुरोध के बारे में बताना होगा. साथ ही, यह भी बताना होगा कि पहले पक्ष (ग्राहक) के आइडेंटिफ़ायर को शेयर किया गया है. इस प्रोसेस के लिए, आपको डेटा पार्टनर को rqJWT टोकन भेजना होगा. rqJWT टोकन में, काम के आइडेंटिफ़ायर होने चाहिए. इन्हें डेटा पार्टनर की dsrdelete.json फ़ाइल में दिए गए कॉन्फ़िगरेशन के हिसाब से फ़ॉर्मैट किया जाना चाहिए. इसके अलावा, rqJWT टोकन में आपका हस्ताक्षर शामिल होना चाहिए. यह हस्ताक्षर, आपके निजी पासकोड से जनरेट किया गया हो.

डेटा मिटाने के अनुरोध की पुष्टि करना

डेटा मिटाने का अनुरोध मिलने और उस पर कार्रवाई करने की पुष्टि करने के लिए, Google की ओर से dsrdelete.json फ़ाइल में बताए गए एंडपॉइंट पर, पुष्टि करने वाला JWT भेजें. ज़्यादा जानकारी के लिए, acJWT: Recipient “acknowledgement” JWT देखें.

आपके जवाब का एचटीटीपी स्टेटस कोड, इस नतीजे पर निर्भर करता है:

  • Success: अगर अनुरोध को स्वीकार कर लिया गया है, पार्स कर लिया गया है, और उस पर कार्रवाई की गई है, तो HTTP 202 दिखाएं.
  • अनुरोध पूरा नहीं हुआ: अगर अनुरोध को स्वीकार नहीं किया गया, पार्स नहीं किया गया, और उस पर कार्रवाई नहीं की गई, तो HTTP 400 वैल्यू दिखाएं.

अनुरोध के मुख्य हिस्से में, acJWT टोकन शामिल होना चाहिए. साथ ही, इसमें ऐसा पेलोड होना चाहिए जो raResultCode फ़ील्ड में पूर्णांक वाला नतीजा कोड भरता हो. raResultString फ़ील्ड में, नतीजे के बारे में जानकारी देने वाला टेक्स्ट जोड़ा जा सकता है. हालांकि, यह जानकारी देना ज़रूरी नहीं है. acJWT टोकन में, आपकी निजी कुंजी से जनरेट किया गया हस्ताक्षर शामिल होना चाहिए.

डेटा मिटाने के अनुरोध के फ़्रेमवर्क में इस्तेमाल किए जा सकने वाले नतीजे के कोड के बारे में ज़्यादा जानने के लिए, नतीजे के कोड देखें.

acJWT टोकन हेडर बनाना

हैश फ़ंक्शन और सार्वजनिक कुंजी के आधार पर हेडर भरें. आपको यह तय करना होगा कि हस्ताक्षर की पुष्टि करते समय, ईमेल पाने वाला व्यक्ति किस सार्वजनिक कुंजी का इस्तेमाल करेगा. यहां दिए गए उदाहरण में, बिना कोड में बदले गए हेडर से पता चलता है कि आपको पाने वाले व्यक्ति से, हैश जनरेट करने के लिए ES256 एल्गोरिदम का इस्तेमाल करवाना है. साथ ही, यह भी पता चलता है कि पाने वाले व्यक्ति को आपके dsrdelete.json फ़ाइल से, 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"
}