Re: [OAUTH-WG] WGLC on "JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens"

Brian Campbell <bcampbell@pingidentity.com> Thu, 26 March 2020 16:47 UTC

Return-Path: <bcampbell@pingidentity.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 A42713A0867 for <oauth@ietfa.amsl.com>; Thu, 26 Mar 2020 09:47:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.088
X-Spam-Level:
X-Spam-Status: No, score=-2.088 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, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_REMOTE_IMAGE=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=pingidentity.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 7D_k1q5S0qXg for <oauth@ietfa.amsl.com>; Thu, 26 Mar 2020 09:47:38 -0700 (PDT)
Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com [IPv6:2a00:1450:4864:20::134]) (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 9990B3A0474 for <oauth@ietf.org>; Thu, 26 Mar 2020 09:47:37 -0700 (PDT)
Received: by mail-lf1-x134.google.com with SMTP id j17so5428352lfe.7 for <oauth@ietf.org>; Thu, 26 Mar 2020 09:47:37 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pingidentity.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=15ALrz9EpfEVgjo2FME47Vz92oDFZqR2ELaotiG16k0=; b=KX35a6FpcEbi77xisfLlY26GXeMaSxV2DaD+j/JEyS6Ovx68D3GEVsRK5oFo8C1zvp 1K+FVr5kf0kRsFr+mrtFi2aNXqdHX7pj8Qgg8I5zkRz6eOSMaByK9lbbr5knXLxDVbWI 0bUYaThXqpEeXASwlaCvV4Vp70y3/d7/8WCwr56do2MMI07PBRm4BwWn/8y+Y4OwPmlX vQ2Z4NaGIB5cWpLXSgj1hFj45eTb9cbCmHyGe6pcnz+EsZjnD5a722Hqha5rSYdLIlwn yzCkjc4J5bgaXh3DNiafXuBPksbcPhMUpl3bcla0v6dBxTTUH1q1HpdfDCYrxNHoA7cB 3PVA==
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=15ALrz9EpfEVgjo2FME47Vz92oDFZqR2ELaotiG16k0=; b=cKhYAobZO2UcvPqmHMxCNX/B8RonvtmmImZsLqDk6Oc+a2nGj5quMHMsYzTfI1o3k7 bopCeskWoUehahU5TXacpDlWHXex6B5rxqXDo1DFDpB1yQ+AEgfsplK4oOqYrVpi7ufE Xcq8zqpPbyXJw3j78uXdTj6ChRaRCapzypy/gTgQYf11u0EhosYwzrBLIF3qL95ipI9n 5BjHN+qDbb4JIdYKVAlzzDta0ZorA1PqC6Sytm2vAfdRe7/+ZtIdZxpTn02+uYR+GTPe CgMME4FF1ikhOyFDp32mO7wdAcVhrb5JgCM6CEKPljX5V2eXzWqyIjFoFyTZWXoSG55z nuTw==
X-Gm-Message-State: ANhLgQ1k1e9Og/QAqHJrf6DaTF4exvZWlikAs9nGQ2Je+CShvXhBsBnM YF6lEp4qQGncyejHbgp4ZriykSOpb1Nb8Jb8IyCTwoVkPw/VfKQOlr5/sIcsAuMgEsO0BqoOk6z XwBpo5pOQhcR2cATtBjc=
X-Google-Smtp-Source: ADFU+vvhgRtY1tTfsYZ9L4rxkBdr3GuA3TgBq5BZRTHD4hhDfSo1gbUw0QDWp4ycjyQnuJHFszSNaWAG/RWVURCnIa0=
X-Received: by 2002:ac2:4342:: with SMTP id o2mr4422887lfl.195.1585241255488; Thu, 26 Mar 2020 09:47:35 -0700 (PDT)
MIME-Version: 1.0
References: <AM0PR08MB37160B8A021052198699CD17FAF00@AM0PR08MB3716.eurprd08.prod.outlook.com> <01ec01d6017c$162eb2e0$428c18a0$@aueb.gr> <CAHdPCmMzRn8iYG025Vq0sQNzgZTOkQJuMJwttDgjMDLESpjptw@mail.gmail.com> <CAO_FVe5UXY4Jxd3LdG6zyXJ8B8nFKYevcHQTVJEAFSdW0ku9tg@mail.gmail.com> <52f18114-4f8e-da86-5735-4c4e8f8d2db5@aol.com> <BL0PR08MB5394CA3CB524E95EA87CD6B6AEF10@BL0PR08MB5394.namprd08.prod.outlook.com> <74da4cc3-359c-c08a-0ae5-54c8ca309f32@aol.com> <D080BE8B-BD0D-4F63-9F33-BA23C2FB42DD@amazon.com> <DM6PR08MB5402639817677AD59898CD65AECE0@DM6PR08MB5402.namprd08.prod.outlook.com> <CA+k3eCS29X28CBXGiUtDAV8nceTcpfJ4Jr_x=E3x8_9crOqsOQ@mail.gmail.com> <13b6801d602c0$02ebea00$08c3be00$@auth0.com> <CA+k3eCSTKNMchR_20z7VRi1XS+kkzi3+8ey_+hB7bK-onRv2Bg@mail.gmail.com> <a0842eb4-582b-59ab-855d-8e48828e92ee@aol.com> <CA+k3eCQdQggPrVatvT2COrtEw2E4F2TTp_3uU6iSk1AsXeRwMg@mail.gmail.com> <13c4701d602d5$5990cdc0$0cb26940$@auth0.com> <29046ca9-71df-430c-80ec-8cf1700be0d9@aol.com> <13c7701d602d7$403eccd0$c0bc6670$@auth0.com> <CA+k3eCTRhfsnjBnJKKjOrkqjcqVi6qDjh1TQTjE2KSFMMmhLdA@mail.gmail.com> <DM6PR08MB540216A182DA915C41A7F02AAECE0@DM6PR08MB5402.namprd08.prod.outlook.com>
In-Reply-To: <DM6PR08MB540216A182DA915C41A7F02AAECE0@DM6PR08MB5402.namprd08.prod.outlook.com>
From: Brian Campbell <bcampbell@pingidentity.com>
Date: Thu, 26 Mar 2020 10:47:08 -0600
Message-ID: <CA+k3eCT856ieb+GsagCa_v4rna+YP7d1K8q8TL-qBjZdbRQyFg@mail.gmail.com>
To: Vittorio Bertocci <vittorio.bertocci@auth0.com>
Cc: George Fletcher <gffletch@aol.com>, Brian Campbell <bcampbell=40pingidentity.com@dmarc.ietf.org>, oauth <oauth@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000eac76c05a1c4bdd8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/F_FynB5ATFFipWW7en26TFXUmeI>
Subject: Re: [OAUTH-WG] WGLC on "JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens"
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, 26 Mar 2020 16:47:43 -0000

Preventing token substitution/confusion was not at all the aim of my
comment. I only brought that up in an attempt to bridge what looked like a
communication gap in Annabelle's and your discussion. Sorry for any
confusion that might have caused.

That discussion did lead me to think again about the more general issue of
signalling/figuring out what key from jwks_uri (which has content that
isn't static and likely changes over time for key rotation) used to sign.
Then looking again at draft-ietf-oauth-access-token-jwt-04 to realize that
it's pretty much silent about this bit that I think is an important aspect
to interop.

The text you suggested definitely works better, yes. Thank you. I could say
that there'd be value in saying more but, as previously promised, I won't
argue it further.

On Wed, Mar 25, 2020 at 5:46 PM Vittorio Bertocci <
vittorio.bertocci@auth0.com> wrote:

> I think I am missing something here. It’s not that I don’t want to give
> guidance, is that it seems that the guidance you are thinking of isn’t
> necessary unless we think that enforcing explicitkey-token type assignment
> declaration is necessary. I didn’t get the impression that it was the
> proposal so far, what I have read was “if the intent was to prevent token
> confusion/substitution, this is insufficient”, to which the answer was
> “that was not the intent”.
>
> And if preventing token substitution/confusion is not the aim, then the
> only guidance required here to the RS is “expect that any key published in
> the doc pointed by jwks_uri could be used to sign the AT” which seems
> actionable enough.
>
> I do agree that the language could be more explicitly aimed at that
> outcome. Would something to the effect of “The RS should expect the AS to
> use any of the keys published in the JWKS doc to sign JWT ATs” work better?
>
>
>
> *From: *Brian Campbell <bcampbell@pingidentity.com>
> *Date: *Wednesday, March 25, 2020 at 14:26
> *To: *Vittorio Bertocci <vittorio.bertocci@auth0.com>
> *Cc: *George Fletcher <gffletch@aol.com>om>, Brian Campbell <bcampbell=
> 40pingidentity.com@dmarc.ietf.org>gt;, oauth <oauth@ietf.org>
> *Subject: *Re: [OAUTH-WG] WGLC on "JSON Web Token (JWT) Profile for OAuth
> 2.0 Access Tokens"
>
>
>
> It seems to me that leaving that out of scope is rather antithetical to
> the previously stated reason for the profile using only asymmetric
> signatures, namely that "this profile focuses on a solution that is as
> close to turnkey as possible for developers." And I'd suggest that, to
> borrow your words, looking at this from the useful guidance standpoint
> rather than the “lawyering up” perspective, some guidance on determining
> the correct key to use from the keys at the jwks_uri to verify the
> signature on the AT would be very useful in general and also prevent the
> kind of potential missteps you described. I mean, if nothing is said about
> it or even if it'd said to be out of scope, a working interoperable
> approach could probably be inferred by knowing and applying bits of JWS,
> JWA, JWK, etc.. But, to me anyway, it seems incongruent to expect folks to
> figure all that out but at the same time believe them capable of mistakes
> that would be prevented by only pointing out that ATs and ID tokens might
> be signed by different keys.
>
>
>
> FWIW there's some ~8 year old text in OIDC that kinda attempts to give
> that kind of guidance in the Asymmetric bit of
> https://openid.net/specs/openid-connect-core-1_0.html#Signing and
> https://openid.net/specs/openid-connect-core-1_0.html#RotateSigKeys -
> it's not perfect (this issue
> <https://bitbucket.org/openid/connect/issues/1161/key-rotation-should-require-a-delay>
> was raised just recently) but attempts to convey how verification key
> selection is to be done and account for key rotation too.
>
>
>
> This seems rather cut and dry to me but maybe I'm "in the weeds" on this
> one. And I've spent more time here than I'd like to admit so I won't argue
> it further.
>
>
>
>
>
>
>
> On Wed, Mar 25, 2020 at 12:57 PM <vittorio.bertocci@auth0.com> wrote:
>
> That works for me!
>
>
>
> *From:* George Fletcher <gffletch@aol.com>
> *Sent:* Wednesday, March 25, 2020 11:56 AM
> *To:* vittorio.bertocci@auth0.com; 'Brian Campbell' <bcampbell=
> 40pingidentity.com@dmarc.ietf.org>
> *Cc:* 'Brian Campbell' <bcampbell@pingidentity.com>om>; 'oauth' <
> oauth@ietf.org>
> *Subject:* Re: [OAUTH-WG] WGLC on "JSON Web Token (JWT) Profile for OAuth
> 2.0 Access Tokens"
>
>
>
> If we don't want to give guidance on how the RS determines the correct key
> to use to validate the token, then maybe we should state that explicitly.
> "The mechanism used by the RS to determine the correct key to use to
> validate the access token is out of scope for this specification".
>
> That way at least we are being very clear that the spec is not trying to
> specify how that happens.
>
> Thoughts?
>
> On 3/25/20 2:44 PM, vittorio.bertocci@auth0.com wrote:
>
> Brian, there are plenty of ways in which an RS can surprise you with odd behavior- for example, developers might see that you used a key for signing an IDtoken and use that for init all their validation middleware for ATs as well, say because the library only supports one key at a time, and then end up failing at runtime when/if the assumption ceases to apply in the future.
>
>
>
> Would that be legitimate of them to take such a dependency, even without warning text? No. However I am not looking at this from the “lawyering up” perspective, but from the useful guidance standpoint as well. I am well aware that being concise is a feature, but I am also not crazy about making every specification into an intelligence test for the reader. If a 16 words sentence can help prevent a likely misstep, I’d be inclined to keep it. But if the consensus is that the sentence is confusing, I can also take it out.
>
>
>
>
>
> Brian & George, in the spirit of keeping things simple, and given that this was more of a “just in case” warning rather than a security feature clamored for- if the language is problematic I’d be more inclined to take the sentence out rather than complicating the guidance further.
>
>
>
>
>
> From: Brian Campbell <bcampbell=40pingidentity.com@dmarc.ietf.org> <bcampbell=40pingidentity.com@dmarc.ietf.org>
>
> Sent: Wednesday, March 25, 2020 11:21 AM
>
> To: George Fletcher <gffletch@aol.com> <gffletch@aol.com>
>
> Cc: Brian Campbell <bcampbell@pingidentity.com> <bcampbell@pingidentity.com>om>; Vittorio Bertocci <vittorio.bertocci@auth0.com> <vittorio.bertocci@auth0.com>om>; oauth <oauth@ietf.org> <oauth@ietf.org>
>
> Subject: Re: [OAUTH-WG] WGLC on "JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens"
>
>
>
>
>
> I don't think you are missing anything, George (except that, to be pedantic, `kid` is a header rather than a claim).
>
>
>
>
>
> The question gave me pause, however, and makes me think that maybe the draft, with the aim of improved interoperability, should have some more explicit text about the use of the 'kid' header in a JWT AT and how it references the verification key in the content at the jwks_uri.
>
>
>
>
>
>
>
>
>
>
>
>
>
> On Wed, Mar 25, 2020 at 11:54 AM George Fletcher <gffletch=40aol.com@dmarc.ietf.org <mailto:40aol.com@dmarc.ietf.org> <40aol.com@dmarc.ietf.org> > wrote:
>
>
>
> Can we not use the 'kid' claim to inform the RS as to which key is being used? What am I missing?
>
>
>
> On 3/25/20 1:51 PM, Brian Campbell wrote:
>
>
>
> I think, even without that statement in the draft, that ASes already have
>
> license to use different keys if they so choose. And maybe I'm not creative
>
> enough but I can't think of what problematic assumptions RSes might make
>
> that would prevented by it. So perhaps just removing that whole sentence,
>
> "An authorization server MAY elect to use different keys to sign id_tokens
>
> and JWT access tokens."? Just a thought anyway.
>
>  On Wed, Mar 25, 2020 at 10:11 AM <vittorio.bertocci=
>
> 40auth0.com@dmarc.ietf.org <mailto:40auth0.com@dmarc.ietf.org> <40auth0.com@dmarc.ietf.org> > wrote:
>
>
>
> Thank you for the perspective- I guessed something similar (“there would
>
> be no way for the RS to know what key is used for what").
>
>  As stated below, the intent wasn’t to prevent substitution/confusion, but
>
> mostly to give ASes license to use different keys if they choose to (for
>
> the reasons listed below, or any other reason they might have) and a
>
> headsup to RSes so that they don’t make assumptions.
>
>
>
>
>
> *From:* Brian Campbell  <mailto:bcampbell=40pingidentity.com@dmarc.ietf.org> <bcampbell=40pingidentity.com@dmarc.ietf.org> <bcampbell=40pingidentity.com@dmarc.ietf.org> <bcampbell=40pingidentity.com@dmarc.ietf.org>
>
> *Sent:* Wednesday, March 25, 2020 8:48 AM
>
> *To:* Vittorio Bertocci  <mailto:vittorio.bertocci@auth0.com> <vittorio.bertocci@auth0.com> <vittorio.bertocci@auth0.com> <vittorio.bertocci@auth0.com>
>
> *Cc:* Richard Backman, Annabelle  <mailto:richanna@amazon.com> <richanna@amazon.com> <richanna@amazon.com> <richanna@amazon.com>om>; oauth <
>
> oauth@ietf.org <mailto:oauth@ietf.org> <oauth@ietf.org> >
>
> *Subject:* Re: [OAUTH-WG] WGLC on "JSON Web Token (JWT) Profile for OAuth
>
> 2.0 Access Tokens"
>
>
>
>
>
> I'm gonna go out on a limb and guess/suggest that implicit in Annabelle's
>
> comment was an assumption that signing ATs and ID Tokens with different
>
> keys would be done to prevent token substitution/confusion. And there's not
>
> really a practical way to achieve that with the mechanics of the jwks_uri..
>
>
>
>
>
> On Wed, Mar 25, 2020 at 3:53 AM Vittorio Bertocci <vittorio.bertocci=
>
> 40auth0.com@dmarc.ietf.org <mailto:40auth0.com@dmarc.ietf.org> <40auth0.com@dmarc.ietf.org> > wrote:
>
>  *>§4 p3: The only practical way for the AS to sign ATs and ID Tokens with
>
> different keys is to publish the keys in two different JWK sets. This only
>
> way to do this today is by publishing separate OAuth 2.0 authorization
>
> server metadata and OIDC Discovery metadata files, where the JWK set in the
>
> former applies to access tokens and the JWK set in the latter applies to ID
>
> Tokens.*
>
>  Hmm, I don’t follow. The OIDC jwks_uri can contain multiple keys, and they
>
> all can be used for signing. What prevents the AS to use one key from that
>
> list for IDtokens and another for ATs? Separate discovery docs shouldn’t be
>
> necessary. Sure, there would be no way for the RS to know what key is used
>
> for what- but similar mechanisms are already in place today for handling
>
> signing key rotation: e.g. the discovery doc lists the current key and the
>
> future key, but uses only the current- and the RS has no way of
>
> distinguishing between the two. The situation here can be analogous, any
>
> key in the discovery doc should be considered valid by the RS, and in fact
>
> there’s no requirement about selecting specific keys in the validation
>
> section. That doesn’t mean this is useless, an AS might elect to use
>
> different keys for its own purposes (eg separation of concerns for
>
> forensics, different strengths, different lifecycles, and so on).
>
>
>
>
>
>
>
>
>
>
>
> *CONFIDENTIALITY NOTICE: This email may contain confidential and
>
> privileged material for the sole use of the intended recipient(s). Any
>
> review, use, distribution or disclosure by others is strictly prohibited...
>
> If you have received this communication in error, please notify the sender
>
> immediately by e-mail and delete the message and any file attachments from
>
> your computer. Thank you.*
>
>
>
>
>
> _______________________________________________
>
> OAuth mailing list
>
> OAuth@ietf.org <mailto:OAuth@ietf.org> <OAuth@ietf.org>
>
> https://www.ietf.org/mailman/listinfo/oauth
>
>
>
>
>
> _______________________________________________
>
> OAuth mailing list
>
> OAuth@ietf.org <mailto:OAuth@ietf.org> <OAuth@ietf.org>
>
> https://www.ietf.org/mailman/listinfo/oauth
>
>
>
>
>
>
>
>
>
>
>
> --
>
> [image: Ping Identity] <https://www.pingidentity.com/>
>
> *Brian Campbell*
> Distinguished Engineer
> bcampbell@pingidentity.com
> w: +1 720.317.2061
> c: +1 303.918.9415
>
> *Connect with us: *
>
> [image: Glassdoor logo]
> <https://www.glassdoor.com/Overview/Working-at-Ping-Identity-EI_IE380907.11,24.htm>[image:
> LinkedIn logo] <https://www.linkedin.com/company/21870>[image: twitter
> logo] <https://twitter.com/pingidentity>[image: facebook logo]
> <https://www.facebook.com/pingidentitypage>[image: youtube logo]
> <https://www.youtube.com/user/PingIdentityTV>[image: Blog logo]
> <https://www.pingidentity.com/en/blog.html>
>
>
> <https://www.pingidentity.com/en/lp/e/enabling-work-from-home-with-MFA.html>
>
> *If you’re not a current customer, click here
> <https://www.pingidentity.com/en/lp/e/work-from-home-sso-mfa.html?utm_source=Email&utm_campaign=WF-COVID19-New-EMSIG> for
> a more relevant offer.*
>
>
> *CONFIDENTIALITY NOTICE: This email may contain confidential and
> privileged material for the sole use of the intended recipient(s). Any
> review, use, distribution or disclosure by others is strictly prohibited.
> If you have received this communication in error, please notify the sender
> immediately by e-mail and delete the message and any file attachments from
> your computer. Thank you.*
>

-- 
_CONFIDENTIALITY NOTICE: This email may contain confidential and privileged 
material for the sole use of the intended recipient(s). Any review, use, 
distribution or disclosure by others is strictly prohibited.  If you have 
received this communication in error, please notify the sender immediately 
by e-mail and delete the message and any file attachments from your 
computer. Thank you._