Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prebid Server and CCPA - phase 1 #1107

Closed
bretg opened this issue Nov 6, 2019 · 6 comments
Closed

Prebid Server and CCPA - phase 1 #1107

bretg opened this issue Nov 6, 2019 · 6 comments
Labels
Intent to implement An issue describing a plan for a major feature. These are intended for community feedback

Comments

@bretg
Copy link
Contributor

bretg commented Nov 6, 2019

The proposal for Prebid.js support for CCPA has been posted at prebid/Prebid.js#4425

The interface to Prebid Server is straightforward: a single value is placed on regs.exp.us_privacy

{  
    "regs": {
        "ext": {
            "us_privacy": "1YN"
        }
    }
}

We propose this two-phase support plan for Prebid Server:

  • Phase 1 - Simple pass-through: Prebid Server just passes regs.exp.us_privacy through to each bidder adapter, each of which is responsible for passing the signal through to their endpoints. The value may also be passed through cookie-sync/setuid calls. No validation is done on the value. This phase will be done in time for the early January deadline. It's assumed that each SSP/DSP will be implementing CCPA enforcement according to their interpretation of the guidelines.
  • Phase 2 - Enforcement support: similar to the way that Prebid Server allows host companies to turn on GDPR enforcement, we will design and build CCPA/US-Privacy enforcement capability. This phase would not be done until the end of 1Q2020.

Phase 1 Changes

  1. Passing regs.exp.us_privacy through the system untouched likely requires no work other than testing.

  2. AMP requests can pass a us_privacy parameter through the GET URI, which is added to the OpenRTB as regs.ext.us_privacy

  3. The /cookie_sync endpoint will accept an additional us_privacy parameter

{
    "bidders": ["appnexus", "rubicon"],
    "gdpr": 1,
    "gdpr_consent": "BONV8oqONXwgmADACHENAO7pqzAAppY",
    "us_privacy": "1YN",
    "limit": 2
}
  1. Every bidder's sync URL will be modified to pass the URL-encoded privacy value through to the sync endpoints. e.g.
usersync:
   url: https://pixel.rubiconproject.com/exchange/sync.php?p=prebid&gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&us_privacy={{us_privacy}}

usersync:
      url: //ib.adnxs.com/getuid?
      redirect-url: /setuid?bidder=adnxs&gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&us_privacy={{us_privacy}}&uid=$UID
  1. The {{us_privacy}} macro will get resolved to the value passed through /cookie_sync or empty.

Phase 2 Design

A separate issue will be opened to propose and discuss the more difficult enforcement feature.

@bretg bretg added the Intent to implement An issue describing a plan for a major feature. These are intended for community feedback label Nov 6, 2019
@hhhjort
Copy link
Collaborator

hhhjort commented Nov 7, 2019

Should we even usersync if we get the privacy signal?

@bretg
Copy link
Contributor Author

bretg commented Nov 7, 2019

doing any kind of enforcement (e.g. suppressing usersync) is what I'm thinking of as the second phase.

stepping back, CCPA is about "selling data". Prebid Server itself is a kind of a smart proxy that can be run in a mode where the host company isn't selling data. So as an open source project, we need to consult with Prebid's lawyers and build in the right controls so different host companies can determine (with their own lawyers) how they want to configure the system to enforce various facets.

DGarbar added a commit to prebid/prebid-server-java that referenced this issue Nov 15, 2019
`request.regs.ext.us-privacy` pass-through to each bidder.
```
{
    "regs": {
        "ext": {
            "us_privacy": "1YN"
        }
    }
}
```

`/cookie_sync` accepts "us_privacy" field which used for {{us_privacy}} macro
redirect-url: /setuid?bidder=adnxs&gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&us_privacy={{us_privacy}}&uid=$UID

For more information
prebid/prebid-server#1107
@bretg
Copy link
Contributor Author

bretg commented Nov 15, 2019

Discussed in the Prebid Server meeting today.

  • Hans noted that some adapters translate OpenRTB to a GET. We will reach out to those adapters.
  • Bryan confirmed that SDK support is in progress.
  • @hhhjort will post a proposal for support within the long form video endpoint.
  • AMP support will depend on the AMP project. We'll define AMP param us_privacy and if it exists, then PBS will create the necessary OpenRTB regs.ext.us_privacy. (added to description above)

rpanchyk pushed a commit to prebid/prebid-server-java that referenced this issue Nov 27, 2019
* CCPA Phase 1

`request.regs.ext.us-privacy` pass-through to each bidder.
```
{
    "regs": {
        "ext": {
            "us_privacy": "1YN"
        }
    }
}
```

`/cookie_sync` accepts "us_privacy" field which used for {{us_privacy}} macro
redirect-url: /setuid?bidder=adnxs&gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&us_privacy={{us_privacy}}&uid=$UID

For more information
prebid/prebid-server#1107

* improve doc

* Add Amp ccpa processing

* refactor model business logic.
@SyntaxNode
Copy link
Contributor

Do we have an idea of which bidders support accepting the us privacy signal through their sync endpoint? I see you enabled a few in: prebid/prebid-server-java@f6c4bc9

For PBS-Go, we would prefer to avoid appending the value to the redirect url until we figure out if it's needed for enforcement.

@bretg
Copy link
Contributor Author

bretg commented Dec 6, 2019

We're passing us_privacy through all of the sync endpoints indiscriminately. Our assumption is that extra unused params shouldnt break anything

@bretg
Copy link
Contributor Author

bretg commented Dec 13, 2019

Closing out CCPA Phase 1.

@bretg bretg closed this as completed Dec 13, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Intent to implement An issue describing a plan for a major feature. These are intended for community feedback
Projects
None yet
Development

No branches or pull requests

3 participants