Skip to content

Instantly share code, notes, and snippets.

@yoavweiss
Last active September 25, 2024 20:45
Show Gist options
  • Save yoavweiss/800cecf07ab146f18948cf9723dc6d05 to your computer and use it in GitHub Desktop.
Save yoavweiss/800cecf07ab146f18948cf9723dc6d05 to your computer and use it in GitHub Desktop.

Joel: Welcome! Gonna show a live use case for FedCM

Demo to bootstrap the conversation

Shop.app is the buyer-facing identity at Shopify

Reaching checkout when you’re not authenticated can be complicated

Buyers that reach checkout authenticated, they’re more likely to successfully complete checkout

We want to help the buyer and the merchant

So, we’re trying to authenticate the user ahead of checkout

One example is “lead capture” - giving users a discount early in their journey

Traditionally the discount would go to an email. But if the user authenticates, they get the discount in their online wallet

20% uplift so more users are able to achieve their goals

Also gives merchants the ability to customize the user’s journey

Merchants can also customize their customer accounts -to track orders, etc

Without SSO, you have to create an account for each merchants

We saw that 50% are more likely to sign in if they already have a shop.app account

In yesterday’s world with third party cookies we can see one-tap opportunity to authenticate the user (rather than OTP, which is cumbersome)

Today, with FedCM, it allows us to provide the one tap experience

Users can see their information, decide to share that identity with the merchant and only then the info is shared

What about passkeys? We leverage them, but without FedCM the users are forced to sign in again on every merchant site

Question: Is that using Shared Storage?

Joel: Not really. We’ll get into it later

<live demo>

Jina (Google identity): Are you sharing cross-site data?

Joel: One thing of interest is the phone number. We want to allow the buyer to share with the merchant.

We’re exploring FedCM APIs that would allow further sharing of information

Christian: When you sign in on the merchant, does that translate to other merchants?

Joel: Other merchant on a different domain will not be signed

Christian: As a user, I don’t normally go to shop.app

Joel: This happens organically in a few different ways. E.g. Lead capture, reaching checkout

About 150 million users that are eligible for a FedCM prompt, and a fifth of them in a signed in state

Christian: you’re using passive mode. If you’re not logged in there’s no prompt. What do you do?

Joel: Active mode is something we’re looking into. Either prompt of a popup that enables you to sign in

Zach: Talked about signing in before checkout. IIUC, during checkout it’s better to not show the prompt

Any scenario to show that after?

Joel: yeah. E.g. sign in for order tracking

Kushal: Can you sign into any IDP?

Joel: Multi-IDP - we’ll talk about it more

Aaron: without FedCM, if I’m on a shop I never visited before. Without checking in, I get an email an hour later with a coupon

Would FedCM disale that?

Joel: That’s not possible with 3P disabled. With 3P disabled and FedCM, that won’t be possible

Aaron: What about “sign in with shop” can it be done with SSO?

Unless there’s a way to standardize credit card sharing

Joel: Each merchant is a separate origin, so you’d need to sign on on each merchant separately.

Aaron: Can I bring my own IDP into this? Why not let me provide the information from my IDP?

Joel: This is a merchant choice. They can choose whatever IDP or wallet they want

Brian: I’m trying to understand. Federated single sign on has been available for a few years. Is it just a fancy one click UI?

Sam: It is the browser mediated UI that’s the difference. If you dismiss the browser UI you can still use the OpenID UI (that relies on top-level redirects)

Aaron: so mainly a user experience optimization.

Sam: yeah

Gary: Merchant can opt in to multiple IDPs

Sam: That also exists in the form of a nascar flag, where the user chooses the provider

It just fundamentally changes the UX friction

Aaron also brought out a point that you can bring your own IDP

Gary: Merchants would have to make that happen

Practically getting a random website on the web to enable IDP

Sam: I think it can practically happen because Shopify hosts millions of origins and can enable that for those stores

Joel: e.g. if you’re a small IDP that manages a membership, so you can connect multiple stores that respect that IDP membership

Gustavo: Another piece is brand recognition. Shopper see buttons you know (pay buttons)

Gary: concerned by the opposite - want privacy

Gustavo: The value proposition of paypal was that - but over time many of those processors started including shopper information that gets relayed to the merchant

Gary: If e.g. I don’t trust Shopify to not sell my data in the future

Gustavo: If you shopped on a Shopify powered store, they already have your data

Joel: The long term interest of the buyer is important to shopify. If the buyer has less friction, that’s a flywheel that helps merchant.

Gustavo: valid concern, but doesn’t change the risk

Fernando: Once you accept the sharing, the point around 3P cookies disappear. Is this equivalent to sharing storage that allows 3P cookies?

Joel: The user can continue to share their data with the site. FedCM enables lower friction

Fernando: From a technical perspective, this is same as 3P cookies

Sam: Short answer is “yes”. We allow shared storage if you accepted the prompt

But the devil is in the defaults. Information is shared only when the user accepts

Fernando: do you see this happening with other things? We can keep adding semantic sharing while it doesn’t really matter

Sam: that’s storage access API

Vitalii: It gives users better context for the user. This is way more understandable. Maybe the language can be improved, but it’s a better UX

Sam: Conceptually this is embedded to prompt “sign in to website with IDP”

Nick: two things happening at once

Phil: Thinking that UX is the main driver for this. What is the protocol that you’re using to sent request and response through FedCM

Joel: This is on the IdP, not a FedCM concern.

Phil: Wondered what that looked like

Joel: Aaron has a great blog post on that

Aaron: Should we standardize that layer above FedCM?

Joel: The initial build is a signed JWT and we’re using the nonce parameter. Not released yet

Concern in the WG that after the user have consented, the IDP can share more

Sam: We want the OAuth profile

Aaron: So we should get you involved

Phil: It’s not OAuth, but SSO

Aaron: doesn’t exist just yet

Sam: We would want to reuse our common experience to create a secure protocol

Christian: wanted to respond to Gary about “bring your own IDP”. We’re working on a IDP registry, so the IDP just need to opt-in to an IDP registry

Gary: Is there a vetting process?

Sam: working on it

Steve: If I’m a shopper and get the login, does that mean that the merchant has all my data before I need to checkout?

Joel: Depends on the phase in which you’re logging in. Nothing is shared in the moment. If you complete a purchase, then e.g. address is shared

Steve: need user agency regarding what’s shared

Sam: Multiple IDP API would enable the same with several IDPs in a single account chooser and offer that to the user

As opposed to the nascar flag, a logged out user doesn’t see IDP they are not logged in

That gives opportunities when it comes to “bring your own IDP”

Regarding progressive disclosure, it anchors things in a different way.

E.g. we can expose the information in browser surfaces that are not available to the rendered content

image1

Autocomplete UI

image2

Button flows a lot less controversial as they require user activation, but would also work with multiple IDP APIs

Joel: They also give the user an opportunity to sign in in case they are not

Sam: These things are in different stages of maturity

Yoav: button flow can mix well with fenced frame unpartitioned data

Sam: it would help users escape the fence

Shivani: Not even. The goal is just to show something to the user

Joel: Any other browser implementers that want to share they opinions?

<no>

Sam: How much is blocked on other browser support?

Joel: Not blocked. Just want to know when non-Chromium users can take advantage of this

Sam: how does it look for mercado libre?

Gustavo: Looks appealing

Pablo (Mercado Libre): Does the UI change over time? If I delete data from the RP, when would I need to consent ?

Sam: If the browser seen the user before and the IDP agrees, auto auth enables automatic sign in without a user prompt

It’s optional so you can ask to get a prompt every time

Pablo: how does that work for multipl IDPs?

Nicolás: Only for a returning user on the RP. If the user clears their cookies, that can also affect the browser’s knowledge. It’s a signal from the user that they want to clear it

Pablo (mercado libre): Considered cases where the merchant initiates that process in a webview

Sam: Are you referring to the fact that webviews don’t share the cookie jar?

Working actively with Edge to support. Interested in getting accounts from the OS rather than the cookie jar

Christian: Is your problem that you can’t use FedCM inside of WebViews? It’s not working right now

Ben: We’d definitely like to hear more input from people interested in this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment