1 of 24

WebID

And the Privacy Sandbox

@goto, @kaustubhag

WICG Workshop 2021

2 of 24

The Privacy Sandbox

The Privacy Sandbox initiative aims to create web technologies that both protect people’s privacy online and give companies and developers the tools to build thriving digital businesses to keep the web open and accessible to everyone.

The Privacy Model [1]

  1. Identity is partitioned by First Party Site
  2. Third Parties can be allowed access to a first-party identity
  3. A per-first-party identity can only be associated with small amounts of cross-site information

[1] https://github.com/michaelkleber/privacy-model

APIs

SaaS Embeds (CHIPS), Spam/Fraud (Trust Tokens), Ads (attribution reporting, etc), First Party Sets, Fenced Frames, …

�… and ...

3 of 24

Federated Identity

What is it?

Users sign-in to a RP (relying party) with an IDP (Identity provider)

Why do we think it’s important?

�Federated identity is safer* than per-site usernames and passwords

* phishing, password reuse, etc

4 of 24

What’s the problem?

By design, Identity federation was built on top of low-level primitives*.

By accident, the same primitives also enable cross-site tracking.��

* iframes, third party cookies, redirects

your@email.com

******

Sign Up

https://example1.com

John Doe�johndoe@email.com

Sign-in to example.com with IDP

Continue as John

forgot password

your@email.com

******

Sign Up

https://example2.com

John Doe�johndoe@email.com

Sign-in to example.com with IDP

Continue as John

forgot password

Browser

RP

IDP

The classification Problem

5 of 24

https://idp.com

Signing-out of RP1

Signing out of your apps

Signing-out of RP2

Signing-out of RPn

...

logging out

******

Sign Up

https://example1.com

Continue as John

forgot password

your@email.com

Or register with usernames and passwords

personalized buttons

******

Sign Up

https://example1.com

John Doe�johndoe@email.com

Sign-in to example1.com with IDP

Continue as John

forgot password

your@email.com

social widgets

3P cookies use in Federation

Browser

RP

IDP

6 of 24

The Classification Problem

Browser

RP

Tracker

https://rings.com

Engagement Rings!

Buy

US$ 1000

User 123 viewed engagement rings

https://tracker.com

Redirecting you ...

https://shoes.com

Engagement Shoes!

Buy

US$ 32

User 123 viewed engagement shoes

https://tracker.com

Redirecting you ...

7 of 24

The IDP and RP Tracking Problems

Yes

Welcome Bob!��Are you trying to create an account with rp1.example?

https://idp.example

IDP’s log

Sign in with IDP1

https://rp1.example

Sign in with IDP2

Sam Goto�samuelgoto@gmail.com

John Doe

johndoe@email.com

∑ RP’s log

John Doe has visited rp1.example

Sign in with IDP1

https://rp2.example

Sign in with IDP2

Sam Goto�samuelgoto@gmail.com

John Doe�johndoe@email.com

global identifiers

...

John Doe has visited rp2.example

...

8 of 24

What’s WebID*?

A high-level, identity-specific, privacy-preserving browser API that enables identity federation to continue thriving on the web.

* Oops. Web Sign-in?�

9 of 24

Useful principles so far

Users first*.

Developers 2nd, browser engines 3rd, technical purity 4th.

* you’d be surprised how often this is used.�

Private by default.

Partitioned by first party site by default, global* by choice [1].

* yes, we expect enterprises and education to pick different defaults.��[1] https://github.com/michaelkleber/privacy-model

Minimize redeployment.

O(B) of users*, O(M) of RPs**, O(K) of IDPs***, O(10) browser engines.

* no, we won’t start with the NASCAR�** yes, customer support is hard too�*** consumer IDPs control JS SDKs!�

10 of 24

Classes of solutions

Permission

Browser is only involved to capture user consent for tracking.

Pros

Backwards compatible. Extensibility.�Cons

Permission-blindness* ineffective at driving change.���* on the way of the job to be done�

Mediation

Browser renders parts of the IDP flow in the browser consent moments.

Pros

Deployable by IDPs. Meaningful permission.

Cons

Ossification*.

* basic auth anyone?

Delegation

IDP delegates much of the responsibility for minting tokens to the browser.

Pros

Frictionless, consequence-free.

Cons

RP backwards incompatible *.

* reminder: O(M) of RPs

11 of 24

The Permission-oriented API

The Mediation-oriented API

Pros: most backwards compatible�Cons: permission-blindness

Pros: meaningful permission�Cons: ossification

12 of 24

Sign in with IDP1

https://rp2.example

Sign in with IDP2

The unbundling of global identification into directed and �The unbundling of issuing and presentation

Welcome John!�

https://idp.example

user-agent://holder

Sign in with IDP1

https://rp1.example

Sign in with IDP2

Sam Goto�samuelgoto@gmail.com

∑ RP’s log

Not viable anymore

J.D..�abc@email.com

Directed

Global

Issues

John Doe�johndoe@email.com

Not observable anymore

IDP’s log

Sam Goto�samuelgoto@gmail.com

J.D..�def@email.com

Presents

13 of 24

20??

2020

2021

2022

Here are 3 options�I2P

I2E?

I2S?

Oops, we have a problem

Hi there!

today

Prototyping

Devtrial

Hello WICG, OIDF

Origin Trial

The End State

Is this even a problem?

Would these even work?

This could work. How can I try?

This should be even better!

Why > What > How > Who > When

Stable

You

14 of 24

Thanks!

Intro

15 of 24

ANNEX

Intro

16 of 24

The progressive disclosure of identification

******

https://rp.example

your@email.com

Sign Up

Sign Up with IDP.example!

or

Self-issued Directed Identity

J. D.�Forward to johndoe@email.com

Sign-in to rp.example with idp.example

Continue as J. D.

Authorization

https://rp.example

Connect your calendar with us to allow us to manage your schedule!

Connect my calendar!

rp.example is asking for access to your calendar:

  • Read access to your calendar

Block

Allow

Welcome J.D!

We need to confirm your real email address to unlock certain features.

Share my email address

https://rp.example

Progressively Identification

rp.example is asking for access to your email address:

johndoe@email.com

Allow

Block

17 of 24

Show me the code

Intro

18 of 24

// Exact API largely TBD. Our best guess so far:

const token = await navigator.credentials.get({

provider: "https://idp.example",

request: {� client_id=”1234”,

nonce: “Ct60bD”,

},

mode: "permission" || “mediation” || “delegation”,

});

19 of 24

Demos

Intro

20 of 24

The Mediation-oriented API

21 of 24

The Permission-oriented API

22 of 24

WebAuthn?

WebOTP?

Forms?

Intro

23 of 24

User

Identity

Account

Session

Registration

Authentication

Session Authentication

Loss

Expiration

Verification

Usernames

Emails

Phone #s

Passwords, JWTs

Recovery

Profile

Names, Age, Social Graph

Personalization

SMS OTP, Magic Links

WebID + Forms

WebOTP

WebAuthn

Cookies

2FA

Biometrics

The Identity Lifecycle

24 of 24

GC

Intro