LGTM2 On Wed, Nov 27, 2024 at 9:40 AM Vladimir Levin <vmp...@chromium.org> wrote:
> Thank you for the explanation! > > LGTM1 > > On Mon, Nov 25, 2024, 1:53 p.m. Christian Biesinger < > cbiesin...@chromium.org> wrote: > >> >> >> On Mon, Nov 25, 2024 at 12:47 PM Vladimir Levin <vmp...@chromium.org> >> wrote: >> >>> Hey Christian, >>> >>> Thank you for your reply. Additional questions below. >>> >>> On Fri, Nov 22, 2024 at 7:00 PM Christian Biesinger < >>> cbiesin...@chromium.org> wrote: >>> >>>> Hi Vlad, >>>> >>>> The fields are standardized in the linked spec PR at >>>> https://github.com/w3c-fedid/FedCM/pull/668/files#diff-40cc3a1ba233cc3ca7b6d5873260da9676f6ae20bb897b62f7871c80d0bda4e9R1371 >>>> We only want RPs to specify fields that are in this spec or a future >>>> version of it, although I recognize that because of the semantics of this >>>> parameter we can not enforce that. (custom scopes should be sent in >>>> `params`) >>>> >>>> multiple configURLs is needed because our partner needed to use a >>>> different ID assertion endpoint for users requesting additional scopes. >>>> >>>> I am unsure if I can share the exact use case of our partner regarding >>>> labels. But there are certain account types of this partner that they only >>>> support on the "authorization" endpoint and not on the regular >>>> "authentication" endpoint, and so they want that to be reflected in the >>>> account list (instead of failing later on). >>>> >>> >>> That's understandable, I was just hoping for an example of how this flow >>> would work. My understanding is something like the following. Suppose I >>> have two accounts Foo and Bar that are provided by one IdP and the RP will >>> need some additional scope that is only available for Foo. Then the filter >>> API allows the browser to filter out Bar and only display Foo as an >>> available option. What I'm missing is how this is orchestrated. Is it that >>> RP that requests this filtering or IdP and how does the browser orchestrate >>> this. From my reading IdPs return a list of all possible labels for each >>> account and RPs request specific labels, and then the browser does the >>> filtering. Is that correct? I'm guessing there is no optionality here in >>> that if the list, for example, ends up being filtered to nothing, then RPs >>> don't have a chance to say "this scope was nice to have but not required". >>> What is the UX here if there is no match? >>> >> >> Let's say some account types do not support scopes at all and some do. >> Then the IDP will provide two different config files, one with `accounts: >> {include: "supports_scopes"}`, one with `accounts: {include: >> "does_not_support_scopes"}`. The account endpoint will send the correct >> label for each account. If an IDP has a smallish list of possible scopes, >> they can also provide a per-scope config file. We could let an RP specify >> labels directly in the future but have not done so here. (such a feature >> would have overlap with account/domain hints) >> >> It is correct that there is no way to say "an account label would be nice >> but is not required", or indeed "a field would be nice but is not >> required". This could be added in the future. >> >> UI-wise, "no matching accounts" is treated the same as if an account hint >> or domain hint does not match. The UI has gone through a few iterations, I >> believe what we settled on was show a dialog with a "log in to IDP" button >> for passive mode and a list of greyed out accounts for active mode, but I >> may misremember these details. >> >> Christian >> >> >>> Thanks, >>> Vlad >>> >>> >>>> I have summarized the OT feedback in the initial email under "Link to >>>> origin trial feedback summary". >>>> >>>> Thanks, >>>> Christian >>>> >>>> On Fri, Nov 22, 2024 at 3:12 PM Vladimir Levin <vmp...@chromium.org> >>>> wrote: >>>> >>>>> Hey, >>>>> >>>>> Looking over the first three APIs (Continuation API, Parameters API, >>>>> Fields API), I understand how it solves the problem of asking for >>>>> additional data from IdPs. Essentially (and please correct me if I'm >>>>> wrong), RPs specify a list of fields (i.e. scopes), then the browser >>>>> chooses whether to mediate or delegate based on whether it knows how to >>>>> handle these scopes. [Side question: are these fields/scopes standardized >>>>> somewhere: how is collision with what IdPs can provide vs the browser >>>>> thinks it can mediate avoided?]. >>>>> >>>>> What is unclear to me is how the next two features (Multiple >>>>> configURLs, Custom account labels) contribute to the experience. It seems >>>>> that it allows the IdPs to provide different sets of accounts for >>>>> different >>>>> labels. Does that mean when the browser mediates account selection, it >>>>> considers these labels and filters some accounts? Is this used when RPs >>>>> need a particular field and only some accounts provide that? Is there a >>>>> comprehensive "real world" example of this somewhere in the docs? >>>>> >>>>> Separately, these features went through OT: is there a doc summarizing >>>>> the participants' feedback? >>>>> >>>>> Thanks! >>>>> Vlad >>>>> >>>>> On Wed, Nov 13, 2024 at 12:23 PM Christian Biesinger < >>>>> cbiesin...@chromium.org> wrote: >>>>> >>>>>> >>>>>> >>>>>> On Wed, Nov 13, 2024 at 11:29 AM Chris Harrelson < >>>>>> chris...@chromium.org> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Thu, Nov 7, 2024 at 3:46 PM Christian Biesinger < >>>>>>> cbiesin...@chromium.org> wrote: >>>>>>> >>>>>>>> >>>>>>>> Contact emails >>>>>>>> >>>>>>>> cbiesin...@chromium.org >>>>>>>> >>>>>>>> Explainer >>>>>>>> >>>>>>>> Use case we want to support: >>>>>>>> https://github.com/w3c-fedid/FedCM/issues/477 >>>>>>>> >>>>>>>> Derived explainers: >>>>>>>> >>>>>>>> https://github.com/fedidcg/FedCM/issues/555 >>>>>>>> >>>>>>>> https://github.com/fedidcg/FedCM/issues/556 >>>>>>>> >>>>>>>> https://github.com/fedidcg/FedCM/issues/559 >>>>>>>> >>>>>>>> https://github.com/fedidcg/FedCM/issues/552 >>>>>>>> >>>>>>>> https://github.com/fedidcg/FedCM/issues/553 >>>>>>>> >>>>>>>> Specification >>>>>>>> >>>>>>>> https://github.com/w3c-fedid/FedCM/pull/662 (continuation API) >>>>>>>> >>>>>>>> https://github.com/w3c-fedid/FedCM/pull/661 (parameter API, merged) >>>>>>>> >>>>>>>> https://github.com/w3c-fedid/FedCM/pull/668 (fields API) >>>>>>>> >>>>>>>> https://github.com/w3c-fedid/FedCM/pull/667 (multiple configURLs) >>>>>>>> >>>>>>>> https://github.com/w3c-fedid/FedCM/pull/669 (account labels) >>>>>>>> >>>>>>> >>>>>>> Most of these are still open, is something blocking finishing and >>>>>>> landing these spec PRs? >>>>>>> >>>>>>> >>>>>> >>>>>> We are waiting for reviews from outside of the team and WG approval >>>>>> to land them. No real blocker otherwise. A lot of WG calls have been >>>>>> cancelled recently which makes landing these take longer than we had >>>>>> hoped >>>>>> for. >>>>>> >>>>>> Christian >>>>>> >>>>>> >>>>>>> >>>>>>>> Summary >>>>>>>> >>>>>>>> This bundles a few features that we would like to launch at the >>>>>>>> same time. We are bundling them together because they can be used by >>>>>>>> IdPs >>>>>>>> to implement authorization flows such as letting a user grant access >>>>>>>> to a >>>>>>>> user’s calendar to an RP. See also >>>>>>>> https://github.com/w3c-fedid/FedCM/issues/477. Specifically: >>>>>>>> >>>>>>>> - >>>>>>>> >>>>>>>> The IdP needs to be able to show a custom prompt for the >>>>>>>> permission (continuation API) >>>>>>>> - >>>>>>>> >>>>>>>> The RP needs an extensible way to communicate to the IdP what >>>>>>>> it wants access to (parameters API) >>>>>>>> - >>>>>>>> >>>>>>>> The RP needs to be able to customize/suppress the text >>>>>>>> referring to the IdP sharing “name, email address and profile >>>>>>>> picture” >>>>>>>> because in this situation they are asking for different information >>>>>>>> (fields >>>>>>>> API) >>>>>>>> - >>>>>>>> >>>>>>>> The IdP may want to use a different endpoint to implement the >>>>>>>> authorization flow (multiple configURLs) >>>>>>>> - >>>>>>>> >>>>>>>> Certain accounts may only be eligible for one of the >>>>>>>> authentication and authorization flows and so there needs to be a >>>>>>>> way to >>>>>>>> show different accounts in the two flows (account labels API) >>>>>>>> >>>>>>>> >>>>>>>> In addition, the APIs are solving a series of related FPWD blockers >>>>>>>> <https://github.com/w3c-fedid/FedCM/wiki/Status-of-FPWD%E2%80%90identified-Issues> >>>>>>>> identified >>>>>>>> <https://lists.w3.org/Archives/Public/public-fedid-wg/2024Jul/0006.html> >>>>>>>> by the FedID WG. >>>>>>>> >>>>>>>> Continuation API: >>>>>>>> >>>>>>>> https://github.com/fedidcg/FedCM/issues/555 >>>>>>>> >>>>>>>> This lets the IDP open a popup window to finish the sign-in flow >>>>>>>> after potentially collecting additional information. >>>>>>>> >>>>>>>> Parameters API: >>>>>>>> >>>>>>>> https://github.com/fedidcg/FedCM/issues/556 >>>>>>>> >>>>>>>> This lets RPs pass additional data to the ID assertion endpoint >>>>>>>> >>>>>>>> Fields API: >>>>>>>> >>>>>>>> https://github.com/fedidcg/FedCM/issues/559 >>>>>>>> >>>>>>>> This lets RPs bypass the data sharing prompt in favor of the IDP >>>>>>>> prompting >>>>>>>> >>>>>>>> Multiple configURLs: >>>>>>>> >>>>>>>> https://github.com/fedidcg/FedCM/issues/552 >>>>>>>> >>>>>>>> This lets IDPs use different config files in different contexts >>>>>>>> without weakening FedCM privacy properties, by allowing one accounts >>>>>>>> endpoint for the eTLD+1 (instead of one config file, which is more >>>>>>>> limiting >>>>>>>> than necessary) >>>>>>>> >>>>>>>> Account labels: >>>>>>>> >>>>>>>> https://github.com/fedidcg/FedCM/issues/553 >>>>>>>> >>>>>>>> Combined with the previous proposal, this allows filtering the >>>>>>>> account list per config file without providing additional entropy to >>>>>>>> the >>>>>>>> IDP. >>>>>>>> >>>>>>>> >>>>>>>> Blink component >>>>>>>> >>>>>>>> Blink>Identity>FedCM >>>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EIdentity%3EFedCM> >>>>>>>> >>>>>>>> TAG review >>>>>>>> >>>>>>>> https://github.com/w3ctag/design-reviews/issues/945 >>>>>>>> >>>>>>>> TAG review status >>>>>>>> >>>>>>>> Pending >>>>>>>> >>>>>>>> Chromium Trial Name >>>>>>>> >>>>>>>> FedCmContinueOnBundle >>>>>>>> >>>>>>>> Link to origin trial feedback summary >>>>>>>> >>>>>>>> What we learned during the origin trial: >>>>>>>> >>>>>>>> >>>>>>>> - >>>>>>>> >>>>>>>> This bundle works well for implementing an authorization flow >>>>>>>> for an identity provider >>>>>>>> - >>>>>>>> >>>>>>>> The parameter API needed to be refined to be easier to use for >>>>>>>> an IDP (allow nested objects; send the parameters as serialized JSON >>>>>>>> instead of individually prefixed parameters) >>>>>>>> - >>>>>>>> >>>>>>>> The fields API has gone through various iterations during the >>>>>>>> trial and is now easier and more flexible to use >>>>>>>> - >>>>>>>> >>>>>>>> We have identified a possible future extension to the >>>>>>>> continuation API (adding an IdentityProvider.reject function to >>>>>>>> mirror >>>>>>>> .resolve) but are not shipping it as part of this launch. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Origin Trial documentation link >>>>>>>> >>>>>>>> >>>>>>>> https://developers.google.com/privacy-sandbox/blog/fedcm-chrome-126-updates#origin_trial_fedcm_continuation_api_bundle >>>>>>>> >>>>>>>> >>>>>>>> WebFeature UseCounter name >>>>>>>> >>>>>>>> kFedCmContinueOnResponse >>>>>>>> >>>>>>>> Risks >>>>>>>> >>>>>>>> Interoperability and Compatibility >>>>>>>> >>>>>>>> No compatibility risk as this adds new parameters to dictionaries >>>>>>>> in a function argument. >>>>>>>> >>>>>>>> No concern about interoperability because other browser engines >>>>>>>> currently do not ship FedCM. >>>>>>>> >>>>>>>> >>>>>>>> Gecko: No signal. For incremental improvements to FedCM, Firefox >>>>>>>> has asked us not to file standards position, and they will instead >>>>>>>> provide >>>>>>>> feedback in the GitHub PR. They have interacted on the spec PRs (e.g. >>>>>>>> on >>>>>>>> https://github.com/w3c-fedid/FedCM/pull/662) and on the explainers >>>>>>>> (e.g. https://github.com/w3c-fedid/FedCM/issues/477) but have not >>>>>>>> expressed an explicit positive signal. >>>>>>>> >>>>>>>> WebKit: No signal ( >>>>>>>> https://github.com/WebKit/standards-positions/issues/336) >>>>>>>> >>>>>>>> Web developers: Positive ( >>>>>>>> https://github.com/fedidcg/FedCM/issues/488#issuecomment-1749682526) >>>>>>>> Also: >>>>>>>> https://github.com/fedidcg/FedCM/issues/496#issuecomment-1781364610 >>>>>>>> https://github.com/fedidcg/FedCM/issues/533#issuecomment-1878581998 >>>>>>>> >>>>>>>> Other signals: >>>>>>>> >>>>>>>> Ergonomics >>>>>>>> >>>>>>>> This improves ergonomics for passing custom parameters to the IDP >>>>>>>> because it now provides a structured way to do so instead of (ab)using >>>>>>>> the >>>>>>>> "nonce" parameter. >>>>>>>> >>>>>>>> Otherwise no impact on ergonomics either way. >>>>>>>> >>>>>>>> >>>>>>>> Activation >>>>>>>> >>>>>>>> No particular risks. >>>>>>>> >>>>>>>> >>>>>>>> Security >>>>>>>> >>>>>>>> We made sure that the popup from the continuation API is >>>>>>>> same-origin with the IDP, and that it cannot communicate with the RP >>>>>>>> except >>>>>>>> through the narrow IdentityProvider.resolve API. In particular, >>>>>>>> window.opener is null. >>>>>>>> >>>>>>>> The additional parameters from the parameter and fields API are >>>>>>>> only sent to the server after user interaction, and from a privacy >>>>>>>> perspective are equivalent to the existing "nonce" field. However, >>>>>>>> from a >>>>>>>> developer ergonomics perspective the additions are much easier to use. >>>>>>>> >>>>>>>> Account labels were carefully designed not to add entropy and in >>>>>>>> particular not to send additional data to the server. >>>>>>>> >>>>>>>> >>>>>>>> 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 >>>>>>>> >>>>>>>> >>>>>>>> Debuggability >>>>>>>> >>>>>>>> We show console messages to assist debugging where appropriate. >>>>>>>> >>>>>>>> Will this feature be supported on all six Blink platforms (Windows, >>>>>>>> Mac, Linux, ChromeOS, Android, and Android WebView)? >>>>>>>> >>>>>>>> No >>>>>>>> >>>>>>>> FedCM in general is not supported in webview >>>>>>>> >>>>>>>> >>>>>>>> Is this feature fully tested by web-platform-tests >>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>>>>>> ? >>>>>>>> >>>>>>>> Yes >>>>>>>> >>>>>>>> >>>>>>>> https://wpt.fyi/results/fedcm/fedcm-authz?label=experimental&label=master&aligned >>>>>>>> >>>>>>>> We are investing why they are failing on wpt.fyi even though they >>>>>>>> pass in our internal infrastructure (e.g. >>>>>>>> https://ci.chromium.org/ui/test/chromium/ninja%3A%2F%2F%3Ablink_wpt_tests%2Fvirtual%2Ffedcm-authz%2Fexternal%2Fwpt%2Ffedcm%2Ffedcm-authz%2Ffedcm-continue-on-with-account.https.html >>>>>>>> ) >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Flag name on chrome://flags >>>>>>>> >>>>>>>> fedcm-authz >>>>>>>> >>>>>>>> Finch feature name >>>>>>>> >>>>>>>> FedCmAuthz >>>>>>>> >>>>>>>> Requires code in //chrome? >>>>>>>> >>>>>>>> True >>>>>>>> >>>>>>>> Tracking bug >>>>>>>> >>>>>>>> https://crbug.com/40262526 >>>>>>>> >>>>>>>> Launch bug >>>>>>>> >>>>>>>> https://launch.corp.google.com/launch/4348692 >>>>>>>> >>>>>>>> Measurement >>>>>>>> >>>>>>>> https://chromestatus.com/metrics/feature/timeline/popularity/4955 >>>>>>>> In addition, we have several UMA metrics. >>>>>>>> >>>>>>>> Estimated milestones >>>>>>>> >>>>>>>> Shipping on desktop >>>>>>>> >>>>>>>> 132 >>>>>>>> >>>>>>>> Origin trial desktop first >>>>>>>> >>>>>>>> 127 >>>>>>>> >>>>>>>> Origin trial desktop last >>>>>>>> >>>>>>>> 131 >>>>>>>> >>>>>>>> Origin trial extension 1 end milestone >>>>>>>> >>>>>>>> 133 >>>>>>>> >>>>>>>> Shipping on Android >>>>>>>> >>>>>>>> 132 >>>>>>>> >>>>>>>> Origin trial Android first >>>>>>>> >>>>>>>> 128 >>>>>>>> >>>>>>>> Origin trial Android last >>>>>>>> >>>>>>>> 133 >>>>>>>> >>>>>>>> >>>>>>>> Anticipated spec changes >>>>>>>> >>>>>>>> Open questions about a feature may be a source of future web compat >>>>>>>> or interop issues. Please list open issues (e.g. links to known github >>>>>>>> issues in the project for the feature specification) whose resolution >>>>>>>> may >>>>>>>> introduce web compat/interop risk (e.g., changing to naming or >>>>>>>> structure of >>>>>>>> the API in a non-backward-compatible way). >>>>>>>> >>>>>>>> None >>>>>>>> >>>>>>>> Link to entry on the Chrome Platform Status >>>>>>>> >>>>>>>> >>>>>>>> https://chromestatus.com/feature/6495400321351680?gate=4886628616372224 >>>>>>>> >>>>>>>> Links to previous Intent discussions >>>>>>>> >>>>>>>> Intent to Prototype: >>>>>>>> https://groups.google.com/a/chromium.org/g/blink-dev/c/qqrG6yn1u1Q?pli=1 >>>>>>>> >>>>>>>> Intent to Experiment: >>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPTJ0XEedt%2Bu2pS_2NHHfxtEV9JJ7wbuKNEnieeWr6w8FtwKLw%40mail.gmail.com >>>>>>>> >>>>>>>> Intent to Extend Experiment 1: >>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/66ec74bf.2b0a0220.195547.03af.GAE%40google.com >>>>>>>> >>>>>>>> >>>>>>>> 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+unsubscr...@chromium.org. >>>>>>>> To view this discussion visit >>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPTJ0XHfrr2FvW4qP%2BsS3Jn7DoE5oyTZETyuJTgT9wSN46ao4Q%40mail.gmail.com >>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPTJ0XHfrr2FvW4qP%2BsS3Jn7DoE5oyTZETyuJTgT9wSN46ao4Q%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/CAPTJ0XFsZ%3DqJf9GogNxH7Zj_UJU2UMLvMtncetQ6pqUWzZBcJQ%40mail.gmail.com >>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPTJ0XFsZ%3DqJf9GogNxH7Zj_UJU2UMLvMtncetQ6pqUWzZBcJQ%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/CADsXd2Nuwsiq37AK4MCT_TYRi7p1Yxq-Pz%2BGe_jt%3DfX6L%3DayjA%40mail.gmail.com > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADsXd2Nuwsiq37AK4MCT_TYRi7p1Yxq-Pz%2BGe_jt%3DfX6L%3DayjA%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/CAFUtAY8QRk-HgkU%2BEGDNPTcCJgHHF%2Bx6e7LnFWsy%3DVKC1sPd3g%40mail.gmail.com.