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

George Fletcher <gffletch@aol.com> Tue, 24 March 2020 17:39 UTC

Return-Path: <gffletch@aol.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 6CD1C3A0CDD for <oauth@ietfa.amsl.com>; Tue, 24 Mar 2020 10:39:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.562
X-Spam-Level:
X-Spam-Status: No, score=-3.562 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, RCVD_IN_MSPIKE_H2=-1.463, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=aol.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 cHZIhCz-BJdP for <oauth@ietfa.amsl.com>; Tue, 24 Mar 2020 10:39:57 -0700 (PDT)
Received: from sonic310-24.consmr.mail.ne1.yahoo.com (sonic310-24.consmr.mail.ne1.yahoo.com [66.163.186.205]) (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 F25E83A0C94 for <oauth@ietf.org>; Tue, 24 Mar 2020 10:39:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aol.com; s=a2048; t=1585071596; bh=ky/rezYy6zz7Z0z9y9YRlv79h4liYBgREkOzaFilDg8=; h=Subject:To:References:From:Date:In-Reply-To:From:Subject; b=PmrKfMcZ01OrYIg5bZd7t+r638Q1OWOZSssAjw7iK7aDsXc1BV0mLU34qF3pvy4YFL+ntzoREO63psQg9DDrAc+as3nbQ2NyC5fEvoYqLmP3Nvt/C7zLpxdI98kbEO2YZzxhR6EBFxfQyyqv2C0TSKWsDY6uFS+7VznXafdwC+QRaGzWXzhkaHQ8BcQFVtIEHOjEGOtnuyYDFHUNLFJlbTEfE1JgH7llJL9BeDNVGMwcO5Nif2a4FrtnBjU8a60yGMH/8jcKISsgbtDQYazajV2UGluwNZIpqVgu6cxZzaUOHpOy5b0VdLQY/6Uia0gaiSZhC3zD2vbldm2Ug1I36g==
X-YMail-OSG: 63C1XZkVM1l19.o8li4fhylOZFjorS_MKovRUM__DsxXDZePq6.K_gHf2SNsqdu P4RtoO.ausfpdpKKwe3NLoaHqBHmZnfjgml8JvJjXY44GXVHgLCGiCC_12St5B0OrmZAfgNxm4Dk wVP1ecdHueh60F0_5Q84Delxh2H5grqAGkLuGN3GsvBCv_C7rv0jinLv_FyPVWBQxgFk5tMINjEI rKth7ADr_3ajsG29GD9y5.4oesDtnfLFh_xD0UcKRoyOargzBq1lyAHx8H354tMYWxlZdJygktfA _YDXfUJ5xLVQajyorMNXlDUpALe94mKhy_6_vyUk0CnrnY8Xr6zpwGBPrhGacFHjUHolskkyv15M SfCfcM7ya4I0FzgTwr8MbJb6KAVkJe38aMe7VB4k1d6z6hbh4FQOaxmY84IrKDr6OjNcq1DqBapd 9SRt1wRvbNmmGlt_agPCkrBpjHEm8jVX0CYj8lhTNhK3ObXAL15eDxaNH8_Y1I6zloyAu.FhLU70 Nh8svaqDLjmUbPjFKS5y6lb7.ep2O9sgxbfza0rRwglwptfQ4ceJHKD1NnCLYHLAk3FRb6nnoSE6 SGlol3WKBPfw47QMsK2EKvgH9Io_aAxAhUnJ.gAu3UkkOC5seFLHlF3qH88UbFfycQGQzHdkDUoi Gk_I8W7X80DRkmwh7J_6Z0xE7AM3cyKNuWAYQBM2ZOWXcxyTOOxY7e5lxQDDR6P7jMKp.kZfZY9z LnA4l6_F.kQBuc8vTQCMsDIaUOj9iJRUe1cSWLpYRgUF1RyIfrFV04iZQ8XWOyEF3fzPhMzSAh4e lnHY0zv7V8OTFeaazq7WW4RwmrKmPLJMgYVP0I9BybUw4Gbr6zrM9Odptcw4WP1M2kuuNdb9Q8vS xrHD9xsTeltRSBH88pHj1OUyfhTiTs9MhOYLVlA5mTE4zNx9HlyWgdu9GY1j.I.NZ5jhgI_ehYE2 DUfKCL0Edf4MqJsM4vQ89pcxT5OAZJgC4MSPJGsZySxRonC9QZR8SIsK9DgAA12kLwKxR_VhPFGW RfHlnB0Qy1CSYLAxU12443pjKOV9rpG7cO1sTjEaASrLZsnrDdAo4zRpJmPASIW16qt67tSeBtd3 Kt6fmXzIkW1UJ0Bm1Y4BY8r_RK55pMP1_Ap4n5kgI2EdTQmfRJlCQoybMoJiJHiVCdO7jSMs276y 4rTdCtMGjzcRRDoL_mY9qyxzfDLRfWh3QUxk5NYplf.1DmiMD6DgWVRSnuPSUnvn4dBqH1vV.biM uP2Rpfu8HvNfBmPhZXbp_5zWca0DkR1Gi0j6pqkQVPrkawLXvh6WXrvLLApatslRkpNNOTUTpbHU 68d.hDIt5R4XNFkyiTVGMlD_B5GS47_EgK7Rl2qXwkiKagiThY6q8Cgx_ZkrvaPa0zo5Xog--
Received: from sonic.gate.mail.ne1.yahoo.com by sonic310.consmr.mail.ne1.yahoo.com with HTTP; Tue, 24 Mar 2020 17:39:56 +0000
Received: by smtp405.mail.bf1.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID d4b67503be9c479330f97479ac95804f; Tue, 24 Mar 2020 17:39:51 +0000 (UTC)
To: Hannes Tschofenig <Hannes.Tschofenig@arm.com>, oauth <oauth@ietf.org>, Vittorio Bertocci <Vittorio@auth0.com>
References: <AM0PR08MB37160B8A021052198699CD17FAF00@AM0PR08MB3716.eurprd08.prod.outlook.com>
From: George Fletcher <gffletch@aol.com>
Organization: AOL LLC
Message-ID: <c0343474-6470-a5a6-e1bf-3ca87b842b7f@aol.com>
Date: Tue, 24 Mar 2020 13:39:48 -0400
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Thunderbird/68.5.0
MIME-Version: 1.0
In-Reply-To: <AM0PR08MB37160B8A021052198699CD17FAF00@AM0PR08MB3716.eurprd08.prod.outlook.com>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 8bit
Content-Language: en-US
X-Mailer: WebService/1.1.15518 hermes Apache-HttpAsyncClient/4.1.4 (Java/1.8.0_242)
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/wAa_nyRdSlCnKm2u_FuLbWcO9qc>
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: Tue, 24 Mar 2020 17:39:59 -0000

Feedback on the spec...

Section 1. Introduction
 ��� second line: scenario should be plural --> scenarios
 ��� second sentence: "are not ran by" --> "are not run by"

Section 2.2.1 Authentication Information Claims
 ��� I'm not sure that this definition of `auth_time` allows for the 
case where a user is required to solve an additional challenge. Take the 
case of a user who is required to pass a secondary challenge before the 
"stock purchase" action can be completed. According to the current spec 
definition, the `auth_time` value MUST NOT be updated when this 
secondary challenge is completed.

 ��� I think there is a difference between session_start_time and last 
auth_time. This feels more like it's defining the session_start_time 
concept.

 �� These same issues can apply to the `acr` and `amr` values as well.

 �� Even if for this secondary challenge a new refresh_token is issued, 
it is unlikely many relying parties will want to treat that as issuing a 
new session. The goal is to keep the user logged in to a single session.

Section 2.2.3 Authorization Claims
 �� I find the statement "All the individual scope strings in the scope 
claim MUST have meaning for the resource indicated in the aud claim" 
somewhat problematic. In many deployments today for 1st party clients to 
the authorization server and taking into account mobile applications, 
the access token most like contains scopes for many of the 1st party 
backend APIs. It's possible to get around this by setting the 'aud' 
claim to something like "com.example.apis" and hence all the issued 
scopes map to that audience claim but that is just working around the 
MUST in the spec. Given the lack of specificity of the 'aud' claim and 
the 'resource indicator' claim for that matter, pretty much anything can 
be made to comply. In that context, it seems like RECOMMEND is a better 
normative clause.

Section 3. Requesting a JWT Access Token
 �� Per my comments above I suspect that requiring all JWT access tokens 
to include an audience claim will just devolve to audience claims that 
are somewhat pointless (in order to meet this MUST in the spec). Given 
the mobile app environment today, it is unreasonable to ask the mobile 
apps to downscope every access token before making an API call to the 
backend APIs which is what the spirit of audience and resource 
indicators seem to imply.

 �� Why MUST the AS reject a request with more than one resource 
parameter? If a request comes in with no resource parameter and multiple 
scopes the AS is not required to reject that request. Is there much of a 
semantic difference between the two? In the case of no resource 
parameter and multiple scopes the AS might issue an access token with 
multiple audience values (as is allowed by RFC 7519). Also, the audience 
claim is not solely for resource indicator values but is defined to just 
be a string. To me it feels like the text is implying that the only 
valid audience value is also a resource indicator (which from previous 
discussions on the list it was implied they have a slightly different 
semantic).

 �� The model described here works well if myco.example really only 
provides a single service. But if instead myco.example provides multiple 
services each with their own endpoints (srva.myco.example, 
srvb.myco.example) and scopes, for me this model begins to break down. 
Either mobile apps are required to downscope all tokens to just the 
service they are calling at that point in time (which can have latency 
and connectivity issues), or myco.example has to create a generic 
"audience" string that represents all of example.com which doesn't seem 
to be the spirit of the existing specs.

 �� In summary, I feel that this text is binding too tightly resource 
indicators to the audience claim. What is described is perfectly 
reasonable in a use case that is applying resource indicators in this 
way but is not indicative of the widely deployed models that already exist.

Section 4. Validating JWT Access Tokens
 �� Step 4. -- Can we change the wording to not require resource 
indicators? What about... "The resource server MUST validate that the 
'aud' claim contains a string that represents the audience of this 
resource server."

Section 5. "cross-JWT confusion"
 �� I think there may be confusion around what is meant by "distinct 
resources". In my example above, are srva.myco.example and 
srvb.myco.example "distinct resources"? or is the goal here to say that 
we want different audience values generated for cross-organization 
resources. For example, are mail.google.com and youtube.com "distinct 
resources"? or would an audience for google suffice in meeting the 
meaning of this paragraph?

 � I'm having the same confusion in the next paragraph regarding the 
phrase "different resources". Are services provided by the same company 
"different resources" or are they all considered the same resource. Can 
an access token be issued with scopes for both mail.google.com and 
youtube.com? And if not, why note? Preventing this puts undue burden on 
mobile based applications.

Section 6. Privacy
 �� cofidentiality --> confidentiality


Thanks,
George