From: Kai Lehmann <kai.lehm...@1und1.de>
Date: Monday, 6. November 2023 at 07:48
To: "oauth@ietf.org" <oauth@ietf.org>
Subject: OAuth browser based apps with first-party same-domain apps

Hi,

I’ve been reading through the recent update of the draft for using OAuth in 
browser based apps and highly appreciate the excellent work.

The draft mentions first-party single-domain browser based apps. Maybe I 
misunderstood this, but it seems to discourage using OAuth in this scenario. It 
is not clear whether the discouraged pattern is to use OAuth ATs or session 
cookies and what would be the recommended approach. At the end of the chapter 
it referes to the other recommended patterns above, but one of the patterns is 
to have ATs in the browser based client with all the respective risks. Even in 
a first-party context, using OAuth and ATs can be beneficial as the same public 
APIs and resource servers can be used which are also provided to 3rd parties as 
well as other first-party clients running on mobile devices or desktop. I would 
like to get a bit more clarification on this.

(I apologize for the next part. I was unable to describe it otherwise.)

As there have been a draft released for first-party clients, I would like to 
get your thoughts about our approach to integrating first-party browser based 
apps (SameSite with AS) to obtain Access tokens. I have not found this approach 
in any other RFC / draft … maybe for good reasons as it might have some flaws. 
As the browser based app receives Access Tokens, it is essentially vulnerable 
to the same attack scenarios mentioned in the draft. We are aware of those 
risks and mitigate some of them while accepting others. If this or similar 
approaches are already covered by the draft, please let me know which one it is 
related to (apart from the one I mentioned already). If this is a different 
approach, it might be worth mentioning in the draft as there have been some 
discussions around this approach and I understood that other implementers had 
something similar.

Our approach is that the browser based app requests access tokens by doing a 
token request against the token endpoint of the well-known Authorization 
Server. The trust anchor is the Origin header. The client sends the required 
scope with the POST request and uses a specific grant_type (e.g. 
“first-party-spa”). As this is a first-party request, SameSite ookies (without 
the __Host prefix) are sent with the request. This includes session cookies 
from previously created login sessions. The token endpoint of the AS uses the 
Origin request header to identify/verify the client and uses the session cookie 
to create an Access Token with the requested and allowed scope; the scope 
allowed for the client is configured at the AS and the scope of the AS only 
includes what the client is allowed to have. If the client did not sent a scope 
with the request, the AT will contain the scope allowed for that client.

No refresh tokens are returned. The issued ATs have a limited TTL (e.g. 20 
minutes) and will not be longer than the TTL of the session associated with the 
session cookie. If the login session is terminated, the ATs issued based on 
this login session are being revoked as well (ATs contain authentication 
context identifier and Token introspection checks for revocation).

Should there be no valid login session (cookie) or should the token request 
demand a step-up authentication, the AS will respond with a respective error to 
let the client know that user interaction is required, in which case the client 
will initiate a standard Authcode grant to allow user-interaction (re-auth, 
fulfill obligations). Optionally, the AS can use a secondary device to interact 
with the End-User (e.g. get consent or raise level of assurance of the login 
session) whilst holding back the token response or telling the client to resend 
the token request after a specific time so that user interaction can complete 
on the second device.

The shortcut by directly calling the Token endpoint has a few advantages:


  *   No iframe with redirect which might end up in a failure not captured. 
Also no redirect_uri necessary.
  *   No need for PKCE and state
  *   Just one request to obtain the Token(s)

I hope to get your feedback about this.

Thanks,
Kai

From: OAuth <oauth-boun...@ietf.org> on behalf of Aaron Parecki 
<aaron=40parecki....@dmarc.ietf.org>
Date: Monday, 23. October 2023 at 18:22
To: "oauth@ietf.org" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] I-D Action: draft-ietf-oauth-browser-based-apps-15.txt

After a lot of discussion on the mailing list over the last few months, and 
after some excellent discussions at the OAuth Security Workshop, we've been 
working on revising the draft to provide clearer guidance and clearer 
discussion of the threats and consequences of the various architectural 
patterns in the draft.

I would like to give a huge thanks to Philippe De Ryck for stepping up to work 
on this draft as a co-author!

This version is a huge restructuring of the draft and now starts with a 
concrete description of possible threats of malicious JavaScript as well as the 
consequences of each. The architectural patterns have been updated to reference 
which of each threat is mitigated by the pattern. This restructuring should 
help readers make a better informed decision by being able to evaluate the 
risks and benefits of each solution.

https://datatracker.ietf.org/doc/html/draft-ietf-oauth-browser-based-apps

https://www.ietf.org/archive/id/draft-ietf-oauth-browser-based-apps-15.html

Please give this a read, I am confident that this is a major improvement to the 
draft!

Aaron

On Mon, Oct 23, 2023 at 8:35 AM 
<internet-dra...@ietf.org<mailto:internet-dra...@ietf.org>> wrote:
Internet-Draft draft-ietf-oauth-browser-based-apps-15.txt is now available. It
is a work item of the Web Authorization Protocol (OAUTH) WG of the IETF.

   Title:   OAuth 2.0 for Browser-Based Apps
   Authors: Aaron Parecki
            David Waite
            Philippe De Ryck
   Name:    draft-ietf-oauth-browser-based-apps-15.txt
   Pages:   58
   Dates:   2023-10-23

Abstract:

   This specification details the threats, attack consequences, security
   considerations and best practices that must be taken into account
   when developing browser-based applications that use OAuth 2.0.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the Web Authorization
   Protocol Working Group mailing list (oauth@ietf.org<mailto:oauth@ietf.org>), 
which is
   archived at https://mailarchive.ietf.org/arch/browse/oauth/.

   Source for this draft and an issue tracker can be found at
   https://github.com/oauth-wg/oauth-browser-based-apps.

The IETF datatracker status page for this Internet-Draft is:
https://datatracker.ietf.org/doc/draft-ietf-oauth-browser-based-apps/

There is also an HTML version available at:
https://www.ietf.org/archive/id/draft-ietf-oauth-browser-based-apps-15.html

A diff from the previous version is available at:
https://author-tools.ietf.org/iddiff?url2=draft-ietf-oauth-browser-based-apps-15

Internet-Drafts are also available by rsync at:
rsync.ietf.org::internet-drafts


_______________________________________________
OAuth mailing list
OAuth@ietf.org<mailto:OAuth@ietf.org>
https://www.ietf.org/mailman/listinfo/oauth
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to