Re: [OAUTH-WG] Clarifying Bearer token usage OAuth 2.1 draft-ietf-oauth-v2-1-00

Dick Hardt <dick.hardt@gmail.com> Thu, 30 July 2020 19:21 UTC

Return-Path: <dick.hardt@gmail.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0662A3A0B58 for <oauth@ietfa.amsl.com>; Thu, 30 Jul 2020 12:21:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.086
X-Spam-Level:
X-Spam-Status: No, score=-2.086 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_FONT_LOW_CONTRAST=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id UCmDDOZz_CYq for <oauth@ietfa.amsl.com>; Thu, 30 Jul 2020 12:21:37 -0700 (PDT)
Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com [IPv6:2a00:1450:4864:20::12f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2AD323A0B4F for <oauth@ietf.org>; Thu, 30 Jul 2020 12:21:37 -0700 (PDT)
Received: by mail-lf1-x12f.google.com with SMTP id 140so15572838lfi.5 for <oauth@ietf.org>; Thu, 30 Jul 2020 12:21:37 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=d8P6/xv+//u0RvRj2sVNu8bXzQZF+jz3zNZf6BAhkQI=; b=oqqXG7q1iVtvzfXkYGsHc7YuUQnqcXjdAAkxkVm39pkEAos5b+nm1nWdgiyqGxTuFX TfSNFg7sN3/DWzLWSrICQXlgDm5Atx7sSAfH/kJOdehGfVJiVW+Hxzx6GtPbuoQt9wyA vs5tPskrzLEzVAv1rJtXOXns0OL1ahNqRekRrLaSnNTsk++RpXI/0HfvMOnpBtHW7sC4 URNc34GGrX14DSPBkd8ESJXhbgv7gTUydVyF0Z4WGrEOKnW4GXcjL78LCe9SrxFl0LlV S2VHndkeppz3TWfl7eIs4e0CSSZxHvVt1E7lD2c1xwNpTowysfC1P5fDMvMjYrqRiAOt fLzw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=d8P6/xv+//u0RvRj2sVNu8bXzQZF+jz3zNZf6BAhkQI=; b=IRy76HWXoxc6Zezq6AXRlK7g2YKNcFe0FASjbuPqnkiuAUMuvGftf0Gsz5RsMYHbO7 JBL5yzN/CK0B4Je5aew2ETCEXzM8tSzN9gaM4KXZIy8HVTFfWTz0Fgp4bft9l9QxZd+B p8gQaG5BDw8jpCz48R45PYdDL9QaGNZ5t25CwNA3jTiBn89T9Cph3hJhxbPJITqiRryd MOvp1AER3Y7pRR+3GjnaITNjxNUznFGK6pZ4Sm5Y8xMymrM8Q9QNSwhDcB1jJ4QcvU5u kUG5I90HlSovZbd3VS2UYY3OxYjeuRE254On9npMkI17YkmdQpRtqznBOIbUaS78Ayia 2Brg==
X-Gm-Message-State: AOAM53128R64a0ssjzBN8wfu1aUMHmDSNM5wBAVyz+k4CQ/U1JJ7/mSW WeA1nDmqBmLAbalvNUKEHZmx8KAJFQE1HyrX6lc=
X-Google-Smtp-Source: ABdhPJyL+OlgTFF1f3LAcnyxAqqfUFzG3RfXc5ls3DEKVzTe9ph1IuV7W8ZNsT6azrO7859MyjVRuoSktT6onvEmkgE=
X-Received: by 2002:a19:8044:: with SMTP id b65mr70881lfd.91.1596136895019; Thu, 30 Jul 2020 12:21:35 -0700 (PDT)
MIME-Version: 1.0
References: <CAJot-L0gx6-NSGmWsY_qx4sTiKNJ9NtExX-zZWM=+CjVn=5MPg@mail.gmail.com> <4E2EAEF4-A0E4-4560-86C3-083A19A0F440@manicode.com>
In-Reply-To: <4E2EAEF4-A0E4-4560-86C3-083A19A0F440@manicode.com>
From: Dick Hardt <dick.hardt@gmail.com>
Date: Thu, 30 Jul 2020 12:20:58 -0700
Message-ID: <CAD9ie-uUeX2fKxz=Cn0ea2vcec-rEsGvjTRsYJgCcVrqQf8H3A@mail.gmail.com>
To: Jim Manico <jim@manicode.com>
Cc: Warren Parad <wparad@rhosys.ch>, oauth <oauth@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000a3fff405abad94d2"
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/dzbPUf845NV_AlsZ32BeICUgvJY>
Subject: Re: [OAUTH-WG] Clarifying Bearer token usage OAuth 2.1 draft-ietf-oauth-v2-1-00
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth/>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 30 Jul 2020 19:21:41 -0000

One of the constraints of the OAuth 2.1 document that aligned the WG was it
would have no new features.

I'd recommend a separate document for the cookie bearer token feature.

ᐧ

On Thu, Jul 30, 2020 at 12:15 PM Jim Manico <jim@manicode.com> wrote:

> Yea to cookie configuration suggestions!
>
> I suggest SameSite=LAX at least, which is actually the default behavior in
> chrome if you do not set the samesite value. LAX will not break links that
> originate from emails, STRICT will.
>
> Point being is that CSRF defense is easy. XSS defense is brutally hard in
> apps with complex UI’s!
>
> --
> Jim Manico
> @Manicode
>
>
> On Jul 30, 2020, at 1:13 PM, Warren Parad <wparad@rhosys.ch> wrote:
>
> 
>
>> Cookie storage of tokens does leave one open to CSRF attacks so it's
>> certainly a trade-off. But CSRF is much easier to defense against that XSS
>> and cookies are a better choice if the specific risk of having tokens
>> stolen via XSS matters to your threat model.
>
>
> I would assume if we included cookie language, it would explicitly specify *Secure;
> HttpOnly; SameSite=Strict* as the recommendation, and then neither XSS
> nor CSRF should be a problem (right?)
>
>
> OAuth 2.1 isn't supposed to add new features that don't already exist, but
>> this sounds like a good candidate to develop as an OAuth extension.
>
>
> Is this really a *new feature* though?
>
> Okay, I'll submit that RFC 6749 does state the cookie wouldn't be created
> by the AS.
>
>> 5.1.  Successful Response
>> <https://tools.ietf.org/html/rfc6749#section-5.1>
>> <https://tools.ietf.org/html/rfc6749#section-5.1>   The authorization
>> server issues an access token and optional refresh
>> <https://tools.ietf.org/html/rfc6749#section-5.1>   token, and
>> constructs the response by
>> *adding the following parameters*
>> <https://tools.ietf.org/html/rfc6749#section-5.1>*   to the entity-body
>> of the HTTP response* with a 200 (OK) status code:
>> <https://tools.ietf.org/html/rfc6749#section-5.1>
>
>
> However that wouldn't prevent a client using the password grant (I know I
> said a bad word) or authorization code flow from creating the cookie to
> contain that. Specifically
>
>> 7.  Accessing Protected Resources
>>    The client accesses protected resources by presenting the access
>>    token to the resource server.  The resource server MUST validate the
>>    access token and ensure that it has not expired and that its scope
>>    covers the requested resource.
>>
>>
>>
>> *The methods used by the resource   server to validate the access token
>> (as well as any error responses)   are beyond the scope of this
>> specification but generally involve an   interaction or coordination
>> between the resource server and the   authorization server*.
>>    The method in which the client utilizes the access token to
>>    authenticate with the resource server depends on the type of access
>>    token issued by the authorization server.
>> * Typically, it involves   using the HTTP "Authorization" request header*
>> field [RFC2617] with an
>>    authentication scheme defined by the specification of the access
>>    token type used, such as [RFC6750].
>
>
> So that's definitely some gray area. Although perhaps I'm missing a
> relevant section. If we are going to go so far to detail a list of possible
> RS bearer token possible locations (i.e. Header and Body), to what I assume
> is to implicitly say *Don't use a query parameter*. It also suggests *Don't
> use a cookie at all*, even with* SameSite=Strict*. Although maybe that is
> the point.
>
> For my reference, what makes a *new feature* and what makes *an OAuth
> extension?*
>
> Warren Parad
>
> Founder, CTO
> Secure your user data and complete your authorization architecture.
> Implement Authress <https://bit.ly/37SSO1p>.
>
>
> On Thu, Jul 30, 2020 at 6:46 PM Aaron Parecki <aaron@parecki.com> wrote:
>
>> I haven't seen any OAuth drafts that talk about sending OAuth access
>> tokens in HTTP cookies. OAuth 2.1 isn't supposed to add new features that
>> don't already exist, but this sounds like a good candidate to develop as an
>> OAuth extension.
>>
>> ---
>> Aaron Parecki
>> https://aaronparecki.com
>> https://oauth2simplified.com
>>
>> On Thu, Jul 30, 2020 at 9:35 AM Jim Manico <jim@manicode.com
>> <jim@manicode..com>> wrote:
>>
>>> In a browser, HTTPOnly cookies are the *only* location where an access
>>> (or other) token can be stored in a way where it *cannot be stolen from
>>> XSS*.
>>>
>>> It's a very strong place to store tokens from a security point of view.
>>>
>>> Cookie storage of tokens does leave one open to CSRF attacks so it's
>>> certainly a trade-off. But CSRF is much easier to defense against that XSS
>>> and cookies are a better choice if the specific risk of having tokens
>>> stolen via XSS matters to your threat model.
>>>
>>> - Jim
>>> On 7/30/20 11:43 AM, Warren Parad wrote:
>>>
>>> https://www.ietf.org/id/draft-ietf-oauth-v2-1-00.html#name-bearer-tokens
>>>
>>> It seems recently more and more common to pass the access_token to some
>>> RS via a cookie, yet 7.2.1 says it defines two methods. I think we need
>>> some RFC2119
>>> <https://www.ietf.org/id/draft-parecki-oauth-v2-1-03.html#RFC2119> keywords
>>> here, to suggest that either SHOULD use one of these two, or MUST. And then
>>> optionally state whether or not we recommend or reject the use of cookies
>>> as a place for access tokens. It's also possible that the language threw me
>>> off, because would an access token in a cookie be a bearer token, but no
>>> matter, if I'm having this thought, then surely others have it as well,
>>> right?
>>>
>>> <image.png>
>>>
>>>
>>> Warren Parad
>>>
>>> Founder, CTO
>>> Secure your user data and complete your authorization architecture.
>>> Implement Authress <https://bit.ly/37SSO1p>.
>>>
>>> _______________________________________________
>>> OAuth mailing listOAuth@ietf.orghttps://www.ietf.org/mailman/listinfo/oauth
>>>
>>> --
>>> Jim Manico
>>> Manicode Securityhttps://www.manicode.com
>>>
>>> _______________________________________________
>>> OAuth mailing list
>>> OAuth@ietf.org
>>> https://www.ietf.org/mailman/listinfo/oauth
>>>
>> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth
>