On 3/12/24 11:33 AM, Nicolás Peña Moreno wrote:

Thanks for the suggestion, Yoav! It seems something fetch experts have some concerns about, so we do not plan to proceed with that suggestion at the moment.

I'd like to append a small addition to this I2S (mainly to avoid having an additional PSA since it is very related to this one): we would also like approval to only send Same-Site=None cookies in the accounts endpoint, instead of all cookies (so not Same-Site=Lax or Same-Site=Strict). This is also a breaking change but we do not anticipate IDPs to break, and also plan to work with them to ensure that they are aware of this change and are not caught by surprise.
To my non-FedCM expert brain, this doesn't feel like a small addition (happy to be wrong!), beyond not understanding the scale of the risk, the normal process questions come to mind i.e., is it specced, do we have tests, what do other vendors think about it?

On Monday, March 11, 2024 at 6:39:14 AM UTC-4 Yoav Weiss wrote:

    <owner hat off>
    I left a comment
    <https://github.com/fedidcg/FedCM/issues/428#issuecomment-1980469172> around
    potentially adding a CORS mode that would help IDP servers
    statically protect themselves from destination-change attacks. I
    don't *think* it's a blocker, but it's worth considering something
    along those lines to increase the solution's robustness to
    configuration errors, and ensure it fails closed. (and ask IDPs'
    security teams about their thoughts)

    On Wed, Mar 6, 2024 at 5:51 PM Nicolás Peña <n...@chromium.org> wrote:

        No, Sec-Fetch-Dest
        
<https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-Fetch-Dest>
        is not changing. Sec-Fetch-Mode
        
<https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-Fetch-Mode>
        is.

        On Wednesday, March 6, 2024 at 11:31:35 AM UTC-5 Chris
        Harrelson wrote:

            On Wed, Mar 6, 2024 at 8:28 AM Nicolás Peña
            <n...@chromium.org> wrote:



                On Wednesday, March 6, 2024 at 5:11:09 AM UTC-5 Yoav
                Weiss wrote:

                    On Wed, Mar 6, 2024 at 10:21 AM Yoav Weiss
                    (@Shopify) <yoav...@chromium.org> wrote:



                        On Mon, Mar 4, 2024 at 9:36 PM Mike Taylor
                        <mike...@chromium.org> wrote:

                            LGTM1

                            On 3/4/24 1:33 PM, Nicolás Peña wrote:
                            Contact emails

                            n...@chromium.org


                            Explainer

                            https://github.com/fedidcg/FedCM/issues/428
                            <https://github.com/fedidcg/FedCM/issues/428>


                        A few lines summarizing this issue would be
                        most useful when evaluating this and
                        understanding what y'all want to ship.
                        In particular, it'd be useful to understand
                        the request flow, what is the request's origin
                        (as IIUC, we're talking about requests issued
                        from the browser), and what is the request
                        destination that we may want IDPs to check.

                        Examples of the checks IDPs would have to make
                        would also be helpful.


                Sure! From the spec
                
<https://fedidcg.github.io/FedCM/#idp-api-id-assertion-endpoint>,
                here is a sample request:

                POST /fedcm_assertion_endpoint HTTP/1.1
                Host: idp.example
                Origin: https://rp.example/
                Content-Type: application/x-www-form-urlencoded
                Cookie: 0x23223
                Sec-Fetch-Dest: webidentity
                
account_id=123&client_id=client1234&nonce=Ct60bD&disclosure_text_shown=true
                With this change, Sec-Fetch-Mode will now be cors in
                this request and the IDP is expected to return the
                following in the response (no preflight is performed):


            Do you mean Sec-Fetch-Dest?


                Access-Control-Allow-Origin: https://rp.example/
                Access-Control-Allow-Credentials: true


                    Also, is the "identity assertion" endpoint the
                    same as the token endpoint
                    
<https://github.com/fedidcg/FedCM/blob/main/explainer.md#token_endpoint>?


                Yea. I think that explainer doc is not super up to date.


                            Specification

                            https://github.com/fedidcg/FedCM/pull/547
                            <https://github.com/fedidcg/FedCM/pull/547>


                            Summary

                            The fetches in the FedCM API are hard to
                            reason about because of the properties
                            required of them. While there is ongoing
                            discussion regarding the accounts
                            endpoint, there is broad consensus that
                            the ID assertion endpoint should use
                            CORS. This aligns security properties of
                            this fetch more closely to other fetches
                            in the web platform.


                            Blink component

                            Blink>Identity>FedCM
                            
<https://g-issues.chromium.org/issues?q=status:open%20componentid:1456331&pli=1&authuser=0>


                            TAG review

                            Not requesting a TAG review. We have
                            already had extensive discussions with
                            Fetch experts.


                            TAG review status

                            N/A


                            Risks

                            Interoperability and Compatibility

                            This is a backwards incompatible feature,
                            but one that is warranted due to
                            consensus reached by our security
                            reviewers as well as other browser vendor
                            engineers. We have a manageable list of
                            IDPs that we know are using the FedCM API
                            and we have reached out to all IDPs that
                            are currently deploying FedCM to make
                            sure that they won’t break with this change.



                            Gecko: Positive based on TPAC discussions
                            and
                            https://github.com/fedidcg/FedCM/issues/428
                            <https://github.com/fedidcg/FedCM/issues/428>.
                            Not filing a standards position request
                            for small additions at the explicit
                            request from Firefox (they prefer PRs).


                            WebKit: Positive based on TPAC
                            discussions and
                            https://github.com/fedidcg/FedCM/issues/428
                            <https://github.com/fedidcg/FedCM/issues/428>.
                            Recently, standards position requests for
                            smaller FedCM features have been closed,
                            pointing to the (unresolved) main FedCM
                            one in
                            
https://github.com/WebKit/standards-positions/issues/309
                            
<https://github.com/WebKit/standards-positions/issues/309>so
                            not filing one for this.


                            Web developers: No signals


                            Other signals:


                            Ergonomics

                            N/A



                            Activation

                            N/A



                            Security

                            By adding CORS, we add a check that the
                            IDP explicitly agrees for the browser to
                            share the ID assertion response to the
                            RP. In addition, having this fetch align
                            with most other credentialed fetches in
                            the browser means that any future
                            protections are received by default, and
                            we do not have to special case this fetch.



                            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?

                            None



                            Debuggability

                            We surface errors when there is a network
                            problem with the ID assertion fetch. This
                            will help developers understand when this
                            feature introduces a problem in their
                            FedCM calls.



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

                            No. FedCM is not supported on Android
                            WebView.


                            Is this feature fully tested by
                            web-platform-tests
                            
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?


                            
https://wpt.fyi/results/credential-management/fedcm-identity-assertion-nocors.https.html?label=experimental&label=master&aligned
                            
<https://wpt.fyi/results/credential-management/fedcm-identity-assertion-nocors.https.html?label=experimental&label=master&aligned>(will
                            pass on Chrome once we ship)


                            Flag name on chrome://flags

                            None


                            Finch feature name

                            FedCmIdAssertionCORS


                            Requires code in //chrome?

                            True (because FedCM API does)


                            Tracking bug

                            https://issues.chromium.org/issues/40284123
                            <https://issues.chromium.org/issues/40284123>


                            Estimated milestones

                            DevTrial on desktop


                            120



                            DevTrial on Android


                            120


                            We want to ship on M124


                            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).

                            https://github.com/whatwg/fetch/issues/1637
                            <https://github.com/whatwg/fetch/issues/1637>


                            Link to entry on the Chrome Platform Status

                            https://chromestatus.com/feature/5094763339710464
                            <https://chromestatus.com/feature/5094763339710464>


                            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 on the web visit
                            
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/1814484e-4a0c-4210-b936-29ead46f32c5n%40chromium.org
                            
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/1814484e-4a0c-4210-b936-29ead46f32c5n%40chromium.org?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 on the web visit
                            
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/91c26d40-ccc9-4abe-bf97-38cd9e48f684%40chromium.org
                            
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/91c26d40-ccc9-4abe-bf97-38cd9e48f684%40chromium.org?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+...@chromium.org.

                To view this discussion on the web visit
                
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/a349c863-9904-491f-9e9d-31227683d4ffn%40chromium.org
                
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/a349c863-9904-491f-9e9d-31227683d4ffn%40chromium.org?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 on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/d0e70684-ee33-4e44-9ec3-6fcf3f0e96d3%40chromium.org.

Reply via email to