Just a friendly update: I recently got a prototype merged behind a flag in 
chrome canaries, so developers are welcome to give this a shot and tell us 
what works and what doesn't work!

More info here:

https://groups.google.com/a/chromium.org/g/blink-dev/c/n02b34dFACc?e=48417069

and instructions here:

https://github.com/w3c-fedid/FedCM/issues/677#issuecomment-2557689561

On Tuesday, November 12, 2024 at 8:51:01 AM UTC-8 Rick Byers wrote:

> Thanks for the high-level framing Sam putting this in perspective. I'm 
> excited about this as an additional possible tool in the identity toolbox.
>
> Of course it's ultimately user preference and other market forces well 
> outside our control that will determine which technologies and tradeoffs 
> get used where. At some point before we get too far we should perhaps make 
> a serious attempt to catalog the tradeoffs of the different technologies 
> (passkeys, FedCM, Digital Credentials, SAA, etc.) and make sure we're 
> actually covering the tradeoff space well without needless overlap. 
>
> Rick
>
> On Mon, Nov 11, 2024 at 6:09 PM Sam Goto <go...@chromium.org> wrote:
>
>> Contact emails
>>
>> go...@google.com
>>
>> Explainer
>>
>> https://github.com/w3c-fedid/FedCM/issues/677
>>
>> Specification
>>
>> Not yet available.
>>
>> Summary
>>
>> Early on 
>> <https://github.com/w3c-fedid/FedCM/blob/main/meetings/2020/The%20Web%20Platform%2C%20Privacy%20and%20Federation%20-%20TPAC.pdf>,
>>  
>> we outlined a few important problems we wanted to address in federation: 
>> first and foremost The Classification Problem 
>> <https://github.com/samuelgoto/WebID?tab=readme-ov-file#the-classification-problem>
>>  
>> (the fact that browsers couldn’t tell the difference between federation and 
>> tracking), and then The RP Tracking Problem 
>> <https://github.com/w3c-fedid/FedCM/blob/main/explorations/proposal.md#the-end-state>
>>  
>> (the release of global identifiers, such as emails) and The IdP Tracking 
>> problem 
>> <https://github.com/w3c-fedid/FedCM/blob/main/explorations/proposal.md#the-end-state>
>>  
>> (the bundling of presentation with issuance).
>>
>> It wasn’t clear where we should start, so we looked at three different 
>> variations that had different trade-offs. We called them the 
>> Mediation-oriented 
>> <https://github.com/w3c-fedid/FedCM/blob/main/explorations/proposal.md#the-mediated-oriented-api>
>>  
>> model, the Permission-oriented 
>> <https://github.com/w3c-fedid/FedCM/blob/main/explorations/proposal.md#the-permission-oriented-api>
>>  
>> model and the Delegation-oriented 
>> <https://github.com/w3c-fedid/FedCM/blob/main/explorations/proposal.md#the-delegation-oriented-api>
>>  
>> model. 
>>
>> We learned quickly that it was key to start from the first two 
>> variations, because they were the most backwards compatible. So, the 
>> Mediation-oriented 
>> <https://github.com/w3c-fedid/FedCM/blob/main/explorations/proposal.md#the-mediated-oriented-api>
>>  
>> model and the Permission-oriented 
>> <https://github.com/w3c-fedid/FedCM/blob/main/explorations/proposal.md#the-permission-oriented-api>
>>  
>> model materialized - after many iterations - as FedCM’s mediated account 
>> chooser and the Storage Access API (by itself, or even in conjunction 
>> with <https://github.com/explainers-by-googlers/storage-access-for-fedcm> 
>> FedCM). A series of heuristics 
>> <https://github.com/amaliev/3pcd-exemption-heuristics/blob/main/explainer.md>
>>  
>> were also put in place, which covers a lot of ground too, again optimizing 
>> for backwards compatibility with the Web.
>>
>> The Mediation-oriented API 
>> <https://github.com/w3c-fedid/FedCM/blob/main/explorations/proposal.md#the-mediated-oriented-api>,
>>  
>> notably, was a great starting point because it (a) solved The 
>> Classification Problem 
>> <https://github.com/samuelgoto/WebID?tab=readme-ov-file#the-classification-problem>,
>>  
>> (b) allowed solving the The RP Tracking Problem 
>> <https://github.com/w3c-fedid/FedCM/blob/main/explorations/proposal.md#the-end-state>
>>  
>> (with directed identifiers) and, importantly, (c) didn’t require any user 
>> experience or behavioral change (as opposed to the Permission-oriented 
>> <https://github.com/w3c-fedid/FedCM/blob/main/explorations/proposal.md#the-permission-oriented-api>
>>  
>> variation), allowing it to be deployed at large scales.
>>
>> So, while the first two variations optimized for backwards compatibility 
>> (and, between them, a trade-off between performance, extensibility and 
>> ergonomics), they had an inherent privacy design weakness: The IdP 
>> Tracking problem 
>> <https://github.com/w3c-fedid/FedCM/blob/main/explorations/proposal.md#the-end-state>
>> .
>>
>> That brings us to the Delegation-oriented 
>> <https://github.com/w3c-fedid/FedCM/blob/main/explorations/proposal.md#the-delegation-oriented-api>
>>  
>> model, which has great privacy properties in keeping IdPs blind, but 
>> requires us to redeploy a much larger part of the ecosystem: tens of 
>> thousands of relying parties.
>>
>> We are not sure yet whether the delegation-oriented model is actually 
>> within reach at this point, but a few stars aligned recently. For one, the 
>> introduction of the issuer-holder-verifier 
>> <https://www.w3.org/TR/vc-data-model-2.0/#ecosystem-overview> 
>> architecture, together with the deployment of new token types like 
>> SD-JWT+KB 
>> <https://datatracker.ietf.org/doc/html/draft-ietf-oauth-selective-disclosure-jwt>,
>>  
>> made the unbundling of issuance from presentation a lot more accessible. 
>> Zero knowledge proofs have also advanced much since we started, giving us 
>> some hope that we could solve both the RP Tracking Problem and the IdP 
>> Tracking Problem at the same time.
>>
>> Asides from the new externalities introduced, the development of the 
>> Mediation-oriented variation allowed us to stand on top of a much higher 
>> foundation compared to where we started from. The last 2-3 years of 
>> production experience of FedCM across thousands of websites and millions of 
>> users required us to design a series of features and extensions (e.g. 
>> handling 
>> logged-out users <https://github.com/w3c-fedid/active-mode>, switching 
>> accounts <https://github.com/w3c-fedid/active-mode>, extensibility 
>> <https://github.com/w3c-fedid/custom-requests>, handling multiple idps 
>> at a time <https://github.com/w3c-fedid/multi-idp>, a registration 
>> mechanism <https://github.com/w3c-fedid/idp-registration>, the pull and 
>> push model <https://github.com/fedidcg/LightweightFedCM>, and a 
>> <https://github.com/w3c-fedid/FedCM/issues/553> series 
>> <https://github.com/w3c-fedid/FedCM/issues/552> of 
>> <https://github.com/w3c-fedid/FedCM/pull/498> control 
>> <https://github.com/w3c-fedid/FedCM/pull/523> knobs 
>> <https://github.com/w3c-fedid/FedCM/issues/352>) that we can build the 
>> delegation-oriented variation from.
>>
>> This is still early and ambiguous, so it is very possible it won’t go 
>> anywhere. Nonetheless, it is probably the closest that we have ever been, 
>> and close enough that it feels worth taking a shot.  The explainer 
>> linked above <https://github.com/w3c-fedid/FedCM/issues/677> has some 
>> notes of the overall idea that we’d like to start from.
>>
>> Blink component
>>
>> Blink>Identity>FedCM 
>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EIdentity%3EFedCM>
>>
>> Motivation
>>
>> https://github.com/w3c-fedid/FedCM/issues/677
>>
>> Initial public proposal
>>
>> https://github.com/w3c-fedid/FedCM/issues/677
>>
>> TAG review
>>
>> None
>>
>> TAG review status
>>
>> Pending
>>
>> Risks
>>
>> Interoperability and Compatibility
>>
>> None
>>
>> Gecko: No signal yet. It shows up, however, as one of the desired areas 
>> of exploration in the original standards position 
>> <https://github.com/mozilla/standards-positions/issues/618#issuecomment-1221964677>.
>>  
>> “We ultimately want to be able to offer options where IdPs are not in a 
>> position to track users through their use of identity information. The 
>> current design always involves notifying the IdP of all login attempts. 
>> This has a number of advantages from a security perspective. The IdP is 
>> able to audit logins and present users with information about their 
>> activities. Also, the IdP is in a better position to block access to 
>> identity information for bad RPs. Ultimately, we would like to be able to 
>> offer users at least the option of a more private choice here, but we 
>> recognize the practical security benefits of the current design.” 
>>
>> WebKit: No signal. We also heard informally at TPAC over the years from 
>> Safari engineers that they were hoping we’d explore this variation further 
>> too. 
>>
>> Web developers: No signals. We started gathering some early and informal 
>> guidance from the designers of protocols like OIDC and SAML here 
>> <https://github.com/w3c-fedid/FedCM/issues/677>, but need to do a much 
>> deeper dive into the specifics. We think a few IdPs may choose to use this 
>> (non mutually exclusive) variation on their own (it is likely easier to 
>> operate and raises the privacy bar), but that’s yet to be seen.
>>
>> Other signals:
>>
>> WebView application risks
>>
>> FedCM isn’t supported in WebViews. We don’t expect this specific 
>> variation to change that.
>>
>>
>> Debuggability
>>
>> None
>>
>>
>> Is this feature fully tested by web-platform-tests 
>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>> ?
>>
>> No
>>
>> Flag name on about://flags
>>
>> None
>>
>> Finch feature name
>>
>> None
>>
>> Non-finch justification
>>
>> None
>>
>> Requires code in //chrome?
>>
>> True
>>
>> Estimated milestones
>>
>> No milestones specified
>>
>>
>> Link to entry on the Chrome Platform Status
>>
>> https://chromestatus.com/feature/5151763420938240 
>> <https://chromestatus.com/feature/5151763420938240?gate=5181356416696320>
>>
>> This intent message was generated by Chrome Platform Status 
>> <https://chromestatus.com/>.
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "blink-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to blink-dev+...@chromium.org.
>> To view this discussion visit 
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALdEk-wc%2BSPtWpUy9xrrsZ_Z8x9pJaZZSXeDE4YqygPQOCRVyA%40mail.gmail.com
>>  
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALdEk-wc%2BSPtWpUy9xrrsZ_Z8x9pJaZZSXeDE4YqygPQOCRVyA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/8a0c2b16-7bf4-4f3c-a260-1a97397a043en%40chromium.org.

Reply via email to