Intent to Experiment: FedCM multi IDP in single get() call

691 views
Skip to first unread message

Nicolás Peña

unread,
Feb 21, 2024, 3:21:03 PMFeb 21
to blink-dev
Contact emails

n...@chromium.org


Explainer

The Federated Credential Management (FedCM) API currently only allows one identity provider (IDP) to be used when performing federated login in a website. We would like to experiment with allowing multiple providers to be specified in a single JavaScript get() call, which allows FedCM to be used in cases for which the website supports multiple IDPs for federation. See also additional context in https://github.com/fedidcg/FedCM/issues/319.


Specification

https://fedidcg.github.io/FedCM


Summary

Allows FedCM to show multiple IDPs in the same dialog. This provides developers with a convenient way to present all supported identity providers to users. In this I2E, we are tackling the simple case of having all providers in the same get() call, while building much of the UX infratructure that will allow us to tackle more sophisticated production structures later.



Blink component

Blink>Identity>FedCM


TAG review

https://github.com/w3ctag/design-reviews/issues/803


TAG review status

Pending


Risks

Interoperability and Compatibility

This should not have additional interop risks on top of the existing FedCM API which is generally supported but not yet implemented by Firefox and Safari. In order to determine whether multiple IDPs are supported in a browser which supports FedCM, the developer can attempt to first call get() with multiple IDPs. It will be rejected immediately if not supported and the RP can retry with a single IDP.



Gecko: No signal (https://github.com/mozilla/standards-positions/issues/730)


WebKit: No signal (https://github.com/WebKit/standards-positions/issues/120)


Web developers: Positive (https://github.com/fedidcg/FedCM/issues/319)


Other signals:


Ergonomics

Using this API will just require expanding the get() to use more providers, so it will benefit from the ergonomics of the initial FedCM API.



Activation

The main activation issue is having to include all IDPs in the same get() call, which may be challenging in some cases because IDPs generally are independent from each other. That said, we do have developers who can use the single get() call, so we wish to start with the simpler version of multi IDP support.



Security

The security considerations are similar to those of the single IDP case. We do not require users to input usernames and passwords due to spoofing concerns, and we also have input protection to prevent accidental click right after the UI is shown.



WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?

n/a, FedCM is not supported on WebView



Goals for experimentation

We want to ensure that the single get() call is sufficient for the use cases we are targeting, where the multiple IDPs are owned by a single entity, as well as gather developer feedback before fully shipping. The multiple independent IDPs scenario is out of scope for experimentation, as we anticipate that it will be hard to impossible to use FedCM in a single get() call in such a scenario.


A successful trial would result in our partner requesting us to ship this feature to allow using FedCM with their multiple IDPs.


Ongoing technical constraints

None



Debuggability

The debug tools are similar to that of original FedCM: console messages and DevTools issues. Seeing FedCM network requests is not supported in DevTools but can be achieved via chrome://net-export.



Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?

No

As with the initial FedCM, we do not support Android WebView.



Is this feature fully tested by web-platform-tests?

Yes

https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/external/wpt/credential-management/fedcm-multi-idp/ Some of these tests are not relevant as they are related to the multi-get() approach.



Flag name on chrome://flags

FedCmMultiIdp


Finch feature name

FedCmMultipleIdentityProviders


Requires code in //chrome?

True


Tracking bug

https://bugs.chromium.org/p/chromium/issues/detail?id=1348262


Launch bug

https://launch.corp.google.com/launch/4229762


Estimated milestones

DevTrial on desktop


122

  OT desktop 124 - 128

  OT Android 125 - 128


Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5067784766095360


This intent message was generated by Chrome Platform Status.


Mike Taylor

unread,
Feb 26, 2024, 7:55:09 PMFeb 26
to Nicolás Peña, blink-dev

Could you please request reviews for the privacy/security/debuggability review gates in your chromestatus entry?

--
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 on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/9c4ae5a9-5f36-4421-82c6-07b676ef768cn%40chromium.org.

Nicolás Peña

unread,
Feb 27, 2024, 10:16:18 AMFeb 27
to blink-dev, Mike Taylor, Nicolás Peña
Done

To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.

Yoav Weiss (@Shopify)

unread,
Feb 27, 2024, 3:04:38 PMFeb 27
to Nicolás Peña, blink-dev, Mike Taylor
LGTM to experiment M124-M128 inclusive

Done

To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.

--
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 on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/e11bb292-708d-4f11-a26e-62530880e763n%40chromium.org.

Nicolás Peña Moreno

unread,
Apr 23, 2024, 4:01:15 PMApr 23
to blink-dev, Yoav Weiss, blink-dev, mike...@chromium.org, n...@chromium.org
I sent this intent before the feature was ready, and this required a lot of UX work, so trial has not started. Our plan is to start on Chrome M126 so I will assume the approvals are shifted to 126 - 130. If there are concerns let me know, thanks!

Nicolás Peña Moreno

unread,
May 16, 2024, 11:53:56 AMMay 16
to blink-dev, Nicolás Peña Moreno, Yoav Weiss, blink-dev, mike...@chromium.org, n...@chromium.org
We decided to further delay the start of the OT since our partner needs more time before they can put it in front of real users, so the current plan it to do the experiment on milestones 128 - 132. 

Mike Taylor

unread,
May 16, 2024, 11:55:10 AMMay 16
to Nicolás Peña Moreno, blink-dev, Yoav Weiss, n...@chromium.org

Sounds good - no concerns with shifting the milestones.

Reply all
Reply to author
Forward
0 new messages