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

Nikos Fotiou <fotiou@aueb.gr> Tue, 24 March 2020 20:55 UTC

Return-Path: <fotiou@aueb.gr>
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 9E6A43A12A6 for <oauth@ietfa.amsl.com>; Tue, 24 Mar 2020 13:55:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 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, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=aueb.gr
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 PzYbbqqWfHH8 for <oauth@ietfa.amsl.com>; Tue, 24 Mar 2020 13:55:40 -0700 (PDT)
Received: from blade-b3-vm-relay.servers.aueb.gr (blade-b3-vm-relay.servers.aueb.gr [195.251.255.106]) by ietfa.amsl.com (Postfix) with ESMTP id 928AC3A1272 for <oauth@ietf.org>; Tue, 24 Mar 2020 13:55:38 -0700 (PDT)
Received: from blade-a1-vm-smtp.servers.aueb.gr (blade-a1-vm-smtp.servers.aueb.gr [195.251.255.217]) by blade-b3-vm-relay.servers.aueb.gr (Postfix) with ESMTP id 4BF68A09; Tue, 24 Mar 2020 22:55:37 +0200 (EET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=aueb.gr; s=201901; t=1585083337; bh=zOsTR/Xs3DCuGcila3SlYxsfo7pMYGXyR3B9/xMsiJU=; h=From:To:Cc:References:In-Reply-To:Subject:Date:From; b=yjX/bmFYOTac0UqZOt1yuIFZ6MnBcFQL8FeI7aaXZ+0afIMer561qukzlF49epUUG JKqBvmoMJqBV3HplDTjoN3IBNiQuPLox7R8Zh1iEiYaeetQViWWvaE6euWxFUlFpO7 dHo/9Bf+XsSpk7h+1gOe//NyFEjTdBxx/Of/Lpvj8Y7W7ej6VqD8MFQRdJFjs43QAq AbRyy2RBMCzxqRlSBt6meIhlpp3Tk3BwzaMUcIuBkkyPsimqdnUXtxRvIiIx/GCBun fnf23ajzJ7d07z6bOQ6wUh5xuJdRD5tkP81U94ITBh/v1K7D3p1i3Md4W1N+4WUhJW +XukFbfdyYW6Q==
Received: from DESKTOP7VDSLBL (athedsl-173572.home.otenet.gr [85.75.221.162]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: fotiou) by blade-a1-vm-smtp.servers.aueb.gr (Postfix) with ESMTPSA id AF31DADC; Tue, 24 Mar 2020 22:55:36 +0200 (EET)
From: Nikos Fotiou <fotiou@aueb.gr>
To: 'Vittorio Bertocci' <Vittorio@auth0.com>
Cc: 'Hannes Tschofenig' <Hannes.Tschofenig@arm.com>, 'oauth' <oauth@ietf.org>
References: <AM0PR08MB37160B8A021052198699CD17FAF00@AM0PR08MB3716.eurprd08.prod.outlook.com> <01ec01d6017c$162eb2e0$428c18a0$@aueb.gr> <CAO_FVe7eNVX5vXaYBWVDxee2HPN38-keK8KFWgac5rAaUbBYDA@mail.gmail.com>
In-Reply-To: <CAO_FVe7eNVX5vXaYBWVDxee2HPN38-keK8KFWgac5rAaUbBYDA@mail.gmail.com>
Date: Tue, 24 Mar 2020 22:55:36 +0200
Message-ID: <006901d6021e$91bf5c00$b53e1400$@aueb.gr>
X-Mailer: Microsoft Outlook 16.0
MIME-Version: 1.0
Content-Language: el
Thread-Index: AQHpUDYTHxkJVh4ssWS8Yidi1aurtgOePuTPAhMxWlaoBA4hoA==
content-class: fotiou@aueb.gr
Content-Type: multipart/signed; boundary="----=_NextPart_000_0062_01D6022F.54A2EB50"; protocol="application/x-pkcs7-signature"; micalg="2.16.840.1.101.3.4.2.1"
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/dBSvHUckbpUqJQrt5OEKfN7uifY>
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 20:55:51 -0000

Just a general comment, OIDC has been designed for a specific reason (“identity layer on top of the OAuth 2.0”) whereas JWT access tokens are used for more applications. Since the goal of this specification is to “provide a standardized and interoperable profile as an alternative to the proprietary JWT access tokens layout”,  I feel it is restrictive.

 

Best,

Nikos 

 

From: Vittorio Bertocci <Vittorio@auth0.com> 
Sent: Tuesday, March 24, 2020 7:57 PM
To: Nikos Fotiou <fotiou@aueb.gr>
Cc: Hannes Tschofenig <Hannes.Tschofenig@arm.com>; oauth <oauth@ietf.org>
Subject: Re: [OAUTH-WG] WGLC on "JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens"

 

Hi Nikos,

thanks for taking the time to review and write down your feedback!

Inline

 

- In Section 2.2 why nbf claim (https://tools..ietf.org/html/rfc7519#section-4.1.5) <https://tools.ietf.org/html/rfc7519#section-4.1.5)>  is not considered? I can imagine some interesting applications of this claim.  

The validation rules are partly following the ones defined in OpenID Connect, given that a lot of in market deployments reuse some low level JWT validation components.

 

  - In the same section, it is not clear why some claims are required, especially exp, sub, and client_id. The last two claims are not even used during token validation. 

 Being this an interop profile, it reflects the information commonly found in many existing JWT based access tokens solutions in the wild. Both sub and client_id provide information that proved to be useful to RSes and SDKs/middlewares, hence guaranteeing their presence will help creating reusable libraries with broader applicability. The AS has ready access to that info, and there are no obvious security reasons for omitting them. Also, sub and exp are both required in OIDC, and clientID is available via aud (also required) - hence requiring their presence helps developers to reuse existing validation logic to at least some extent.

 

  - RFC7519 specifies that, in the general case, the aud claim is an array of StringOrURI values. In this draft it is not clear if this still the case, or here aud is a simple string (e.g., in page 5 it is stated: the resource indicated in the aud claim, rather than the resource*s*).  

For simplicity, and above all for avoiding ambiguity in evaluating to what resource the granted scopes should be applied to, the idea would be to restrict to a single string.

 

  - In the token validation procedure, i.e., Section 4, is there any reason why the resource server first checks the aud claim, then the signature, and finally the exp claim? Given the fact that Error responses are not specified, returning something like “invalid aud claim” even for tokens with invalid signature may result in privacy/security attacks. 

 The sequence of those checks follows https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation.  As OIDC doesn't define error responses nor call this aspect out in the security considerations, I largely relied on this being mainstream.

 

  - IMHO The token validation procedure it too bound to the particular discovery mechanisms mentioned at the beginning of this section. E.g., Step 2 mentions a “registration” process, and Step 3 mentions and an “Issuer Identifier” which must much the iss claim. Moreover, I think it should be explicitly mentioned that the resource server “must validate that the JWT access token has been singed with a signing key that corresponds to the authorization server included in the iss claim”    

As per the other points, the language follows closely OIDC. 

The step does contain the phrase "The resource server MUST use the keys provided by the authorization server." Do you feel the language should be more explicit? The document doesn't specify any other mechanism for acquiring keys, hence it shouldn't be too ambiguous... but we can always tighten it up.

 

 

On Mon, Mar 23, 2020 at 6:32 PM Nikos Fotiou <fotiou@aueb.gr <mailto:fotiou@aueb.gr> > wrote:

Hi all,

 

Allow me some comments and forgive me if some of them are naïve.

- In Section 2.2 why nbf claim (https://tools..ietf.org/html/rfc7519#section-4.1.5) <https://tools.ietf.org/html/rfc7519#section-4.1.5)>  is not considered? I can imagine some interesting applications of this claim.

- In the same section, it is not clear why some claims are required, especially exp, sub, and client_id. The last two claims are not even used during token validation.

- RFC7519 specifies that, in the general case, the aud claim is an array of StringOrURI values. In this draft it is not clear if this still the case, or here aud is a simple string (e.g., in page 5 it is stated: the resource indicated in the aud claim, rather than the resource*s*).

- In the token validation procedure, i.e., Section 4, is there any reason why the resource server first checks the aud claim, then the signature, and finally the exp claim? Given the fact that Error responses are not specified, returning something like “invalid aud claim” even for tokens with invalid signature may result in privacy/security attacks.

- IMHO The token validation procedure it too bound to the particular discovery mechanisms mentioned at the beginning of this section. E.g., Step 2 mentions a “registration” process, and Step 3 mentions and an “Issuer Identifier” which must much the iss claim. Moreover, I think it should be explicitly mentioned that the resource server “must validate that the JWT access token has been singed with a signing key that corresponds to the authorization server included in the iss claim”  

 

 

Best,

Nikos

 

From: OAuth <oauth-bounces@ietf.org <mailto:oauth-bounces@ietf.org> > On Behalf Of Hannes Tschofenig
Sent: Monday, March 23, 2020 11:18 PM
To: oauth <oauth@ietf.org <mailto:oauth@ietf.org> >
Subject: [OAUTH-WG] WGLC on "JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens"

 

Hi all,

 

this is a working group last call for "JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens".

 

Here is the document:

https://tools.ietf.org/html/draft-ietf-oauth-access-token-jwt-04 

 

Please send you comments to the OAuth mailing list by April 6, 2020.

 

Ciao

Hannes & Rifaat

IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. 

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