Thanks for your review Orie. Responses inline. You can also see the diff with the changes here:
https://github.com/oauth-wg/oauth-browser-based-apps/pull/109/files > ---------------------------------------------------------------------- > COMMENT: > ---------------------------------------------------------------------- > # Orie Steele, ART AD, comments for draft-ietf-oauth-browser-based-apps-24 > CC @OR13 > ## Comments > Thanks to Marc Blanchet for the ART review. > ### 1. Introduction > The ordering of the introduction feels a bit awkward, you might consider > starting with: > ``` > This document focuses on JavaScript frontend applications acting as the OAuth > client,... ``` > Then relate to "OAuth 2.0 for Native Apps" and then end with the comment about > OpenID Connect: > ``` > Such a scenario, (which only uses OAuth 2.0 as the underlying specification of > OpenID Connect), is not within scope of this specification. ``` Agreed, I've rearranged this accordingly. > I was not familiar with the term "first-party frontend" before. > Having read the full document, I might try to more clearly distinguish this > case from BFF up front. I changed this to "common domain" and added a reference to section 7.1 where this is discussed further. > ### Revoking of refresh tokens > ``` > 530 The attack is only stopped when the authorization server refuses a > 531 refresh token because it has expired or rotated, or when the > refresh > 532 token is revoked. In a typical browser-based OAuth client, it is > not > 533 uncommon for a refresh token to remain valid for multiple hours, or > 534 even days. > ``` > Given the comments about refresh token reuse, is it common to automatically > revoke a refresh token where reuse is detected or attempted? Yes, described in Section 4.14.2 of RFC 9700. > ### Reference for session fixation > ``` > 576 sending requests to backend systems. Alternatively, the attacker > can > 577 also abuse their access to the application to launch additional > 578 attacks, such as tricking the client into acting on behalf of the > 579 attacker using an attack such as session fixation. > ``` > Consider a reference for session fixation, possibly OWASP. Thanks, added. > ### confidential client > Consider a reference or definition for "confidential client". Added. > ``` > 861 The main benefit of using a BFF is the BFF's ability to act as a > 862 confidential client. Therefore, the BFF MUST act as a confidential > 863 client. Furthermore, the BFF MUST use the OAuth 2.0 Authorization > 864 Code grant as described in Section 2.1.1 of [RFC9700] to initiate a > 865 request for an access token. > ``` > Making it easier to implement this MUST, I'm not sure what is required to act > as a confidential client. I added "by establishing credentials with the authorization server" to the end of that sentence. > ### Cookie security, why NOT MUST > ``` > 867 6.1.3.2. Cookie Security > ``` > This section contains several SHOULDs and SHOULD NOTs. > While it is nice that the guidance is so compact, it raises the question of > why > these are not MUSTs, and under which conditions they ought to be required. > Consider providing a reference if the answer lies elsewhere, or a brief > comment > after the compact list. The paragraph below the list goes in to some of this detail. I tried to make this more explicit by adding a sentence in between. > ## Nits > ### refresh tokens and correlation of requests > ``` > 367 reduce the scope and lifetime of the token. For refresh tokens, > the > 368 use of refresh token rotation offers a detection and correction > 369 mechanism. Sender-constrained tokens (Section 9.2) offer an > ``` > A few extra words here, or a pointer might make it clearer what recommendation > is being made wrt refresh tokens. Refresh token rotation is defined in RFC9700, I've added a reference to that. > Are you recommending a specific refresh token rotation policy here ? No. > Later you have: > ``` > 410 is not sufficient to prevent abuse of a refresh token. An attacker > 411 can easily wait until the user closes the application or their > 412 browser goes offline before using the latest refresh token, thereby > 413 ensuring that the latest refresh token is not reused. > ``` > Consider forshadowing this comment. This paragraph has been rephrased based on some of the other feedback. > ### Confused Deputy > ``` > 921 Site Request Forgery (CSRF) attacks. A successful CSRF attack > could > 922 transform the BFF into a confused deputy, allowing the attacker's > 923 request to the BFF to trigger outgoing calls to a protected > resource > 924 on behalf of the user. > ``` > Consider providing a reference for this term. I simplified the sentence by removing the reference entirely: "A successful CSRF attack could allow the attacker's request to the BFF to trigger outgoing calls to a protected resource." > ### Extracting CryptoKeyPair > ``` > 1851 extractable [CryptoKeyPair] is stored using [W3C.IndexedDB]). As a > 1852 result, the use of DPoP effectively prevents scenarios where the > 1853 attacker exfiltrates the application's tokens (See Section 5.1.1 > and > 1854 Section 5.1.2). > ``` > IIRC, the non extractable crypto key pair could potentially still be extracted > by other processes running on the same machine. The context makes it clear you > are referring to attackers with the ability to execute javascript in the > browser, but there are other kinds of attackers. > I see you comment on this later in Section 8.6 & 9.2, consider if you want to > make the text here a little more narrowly focused on attackers with XSS > capabilities. The "attack scenarios" and "additional defenses" headers preceding this text already scope the discussion to XSS attackers. Just for good measure I updated this to "where the XSS attacker" as a reminder. --- Aaron Parecki _______________________________________________ OAuth mailing list -- oauth@ietf.org To unsubscribe send an email to oauth-le...@ietf.org