Re: [OAUTH-WG] Conflicting definitions in JWT Response for OAuth Token Introspection

Torsten Lodderstedt <torsten@lodderstedt.net> Wed, 04 March 2020 16:19 UTC

Return-Path: <torsten@lodderstedt.net>
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 1EA913A1205 for <oauth@ietfa.amsl.com>; Wed, 4 Mar 2020 08:19:22 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 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, 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=lodderstedt.net
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 KvP4rEqw3kBi for <oauth@ietfa.amsl.com>; Wed, 4 Mar 2020 08:19:20 -0800 (PST)
Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) (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 7065F3A11FC for <oauth@ietf.org>; Wed, 4 Mar 2020 08:19:20 -0800 (PST)
Received: by mail-wr1-x42f.google.com with SMTP id y17so3125409wrn.6 for <oauth@ietf.org>; Wed, 04 Mar 2020 08:19:20 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lodderstedt.net; s=google; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=/wHUKPcWpVETyvMq7VinLLvst+GmS7Uif5/yqfIUIfw=; b=QZXD3aSG2ASCvmocMJXZYyQ9b71ehCum/7MKzoeQxQJMIkjy0OsqP8zaiOAqLFPA4O 8K8tLWxal0SDwEcY/dumqKqIXbdG8uieAkENXJEBdr5e+ynZKakQUzX+Q6QcQjWa6Dmz q1pXRl5aW5IeMHoQaKxwnZZ+32lxAazVR3xgyXFhcq3/fHAmpd7O3fVrtw6J0GFqOY0g OIDN4anU4Dz2gbLZYP5vsl1yeUSzbBb/7BLT+eoaNYQhzocbaWvHJf9qDIrPutrSTpuV 0Cl8UFe3z/g/1kGATumyasY6WMThdM2QPrNm3RfAlQDTjfzYmptRp2m44JLuDzYU5Q7N JxFg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=/wHUKPcWpVETyvMq7VinLLvst+GmS7Uif5/yqfIUIfw=; b=h8wLdnNc9uIxvoKRRbzgABD2ql+KO171f1oAf3W/bugKvp/RoSqEvgOJMNVmg4Vc1n ltiktGC5XdqYYeVK6jSvakZSFu00iTc/Qa/HwmCF0O1AzzjL29vOrGzclMGHA3k8NklO P1R1sN3Lq0CIa3rSpfvoQ59yJVGES5a/C+F8lxnHksoBo810p0zDysHBRDwtGbjSc2xQ 3BiqYZpcSkTAU7HuYXPAgzVZcto/0VXDiSK29u6GrPpWv7kn+rS1888R1RLxi61OCQ0r 79ImGL+MKH3KRe/yfT5bDHDhgnz3cdYJgfXB0WYRZ7mIUxO28wQ51l61+PnMVZqMT7tp Wvxw==
X-Gm-Message-State: ANhLgQ2iPdIpq7yBOfFJVHoOSMuHpPCNcIYb77ljfnkbNHWB5gypgCiS whQbT5IA7NyxjcxE5AQfIGoL4GEClEo=
X-Google-Smtp-Source: ADFU+vs4BCBTPjQmGdyqTKpmRzPjvW1o81DEPvcfxqVPW11Kiats2u67rIaMcuCr1ZUvLVufaf8ixg==
X-Received: by 2002:adf:f584:: with SMTP id f4mr2914556wro.77.1583338758459; Wed, 04 Mar 2020 08:19:18 -0800 (PST)
Received: from [192.168.71.111] (p5B0D94B9.dip0.t-ipconnect.de. [91.13.148.185]) by smtp.gmail.com with ESMTPSA id w9sm1228119wrn.35.2020.03.04.08.19.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 04 Mar 2020 08:19:15 -0800 (PST)
From: Torsten Lodderstedt <torsten@lodderstedt.net>
Message-Id: <CC9A4A69-A918-45E7-AA2A-2E0964A75F65@lodderstedt.net>
Content-Type: multipart/signed; boundary="Apple-Mail=_2641C4DE-91DE-4EF5-85E1-2901B28A693C"; protocol="application/pkcs7-signature"; micalg="sha-256"
Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.60.0.2.5\))
Date: Wed, 04 Mar 2020 17:19:13 +0100
In-Reply-To: <B9BFA279-0C95-410E-8DAC-72DD8B080B79@mit.edu>
To: oauth <oauth@ietf.org>, Filip Skokan <panva.ip@gmail.com>, Justin Richer <jricher@mit.edu>, Benjamin Kaduk <kaduk@mit.edu>, Takahiko Kawasaki <taka@authlete.com>
References: <CAHdPCmPCMJqH-aOC2SjFhGd9sjd01xw=VEj5y1jA5nRNRhu4EA@mail.gmail.com> <CAHdPCmMP5=wQSq_YW3+honto==s_bZpCas+=bxJqfqJh24gTzQ@mail.gmail.com> <CALAqi_-Nj6rfFJThH3H-r1oivKCFFW3Wwhhfbephq4f9OMTTQw@mail.gmail.com> <B9BFA279-0C95-410E-8DAC-72DD8B080B79@mit.edu>
X-Mailer: Apple Mail (2.3608.60.0.2.5)
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/y3XXR5mc47UbAO8oU7A1Eui7E08>
Subject: Re: [OAUTH-WG] Conflicting definitions in JWT Response for OAuth Token Introspection
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: Wed, 04 Mar 2020 16:19:22 -0000

Hi all, 

based on the recent feedback, Vladimir and I propose the following changes to draft-ietf-oauth-jwt-introspection-response: 

- the token data are encapsulated in a container element “_token_data”
- beyond this, the top-level container only contains meta data pertinent to the JWT representing the signed (encrypted) introspection response
- we need to add text to the spec to point out that replay detection must be based on the jti in the “_token_data” container not the top level claim

That’s example of how it would look like:

{
   "iss":"https://as.example-bank.com",
   "aud":"6a256bca-1e0b-4b0c-84fe-c9f78e0cb4a3",
   "iat":1532452100,
   "_token_data":{
      "active":true,
      "iss":"https://as.example-bank.com",
      "aud":"6a256bca-1e0b-4b0c-84fe-c9f78e0cb4a3",
      "jti":"53304e8a-a81e-4bc7-95e3-3b298d283512",
      "iat":1532452084,
      "exp":1532453100,
      "client_id":"3630BF72-E979-477A-A8FF-8A338F07C852",
      "cnf":{
         "x5t#S256":"YzEcNvUV3QXA5Bi9IB66b8psyqZBQgW4500ZGvNRdis"
      },
      "sub":"123456789087632345678"
   }
}

The response for inactive tokens would look like this:

{
   "iss":"https://as.example-bank.com",
   "aud":"6a256bca-1e0b-4b0c-84fe-c9f78e0cb4a3",
   "iat":1532452100,
   "_token_data":{
      "active":false
   }
}

What do you think?

best regards,
Torsten. 

> On 4. Mar 2020, at 16:37, Justin Richer <jricher@mit.edu> wrote:
> 
> +1, this encapsulation is much cleaner.
> 
>> On Mar 2, 2020, at 2:25 AM, Filip Skokan <panva.ip@gmail.com> wrote:
>> 
>> Perhaps we should consider leaving the root level JWT claims as-is per JWT and push the introspection response unmodified as if it was regular json response to a JWT claim called "introspection". Since regular introspection uses the same claim names as JWT this would get around all the conflicts.
>> 
>> Last time i brought it up the authors didn't want to consider it because of existing implementations.
>> 
>> S pozdravem,
>> Filip Skokan
>> 
>> 
>> On Mon, 2 Mar 2020 at 07:52, Takahiko Kawasaki <taka@authlete.com> wrote:
>> Thank you, Tatsuo Kudo, for showing me that Justin Richer expressed the same concerns in this mailing list about 6 months ago (on Sep. 4, 2019). RFC 8707 didn't exist then, though.
>> 
>> Re: [OAUTH-WG] Question regarding draft-ietf-oauth-jwt-introspection-response-05
>> https://mailarchive.ietf.org/arch/msg/oauth/LmMAxd35gW5Yox0j4MmU2rI_eUA/
>> 
>> A JWT puts both (a) information about itself and (b) other data in its payload part. When the "other data" have the same claim names as are used to express information about the JWT itself, conflicts happen.
>> 
>> Also, it should be noted that Ben pointed out in other thread that the requirement for "jti" in draft-ietf-oauth-jwt-introspection-response, which says "jti" is a unique identifier for the access token that MUST be stable for all introspection calls, contradicts the definition of "jti", which should be unique for each JWT.
>> 
>> Re: [OAUTH-WG] Benjamin Kaduk's Discuss on draft-ietf-oauth-jwt-introspection-response-08: (with DISCUSS and COMMENT)
>> https://mailarchive.ietf.org/arch/msg/oauth/S4q7cF0TMZMzFO61I5M4QXCUWCM/
>> 
>> draft-ietf-oauth-jwt-introspection-response needs to be modified to solve the conflicts.
>> 
>> Taka
>> 
>> On Sun, Mar 1, 2020 at 4:10 PM Takahiko Kawasaki <taka@authlete..com> wrote:
>> Hello,
>> 
>> I'm wondering if the following conflicts in "JWT Response for OAuth Token Introspection" (draft 8) have already been pointed out.
>> 
>> RFC 8707 (Resource Indicators for OAuth 2.0) requires that 'aud' in an introspection response hold the values of the 'resource' request parameters, whereas "JWT Response for OAuth Token Introspection" says that 'aud' MUST identify the resource server receiving the token introspection response. The definitions conflict.
>> 
>> RFC 7662 (OAuth 2.0 Token Introspection) requires that 'iat' in an introspection response indicate when the access/refresh token was issued, whereas "JWT Response for OAuth Token Introspection" says that 'iat' indicates when the introspection response in JWT format was issued. The definitions conflict.
>> 
>> Best Regards,
>> Takahiko Kawasaki
>> Authlete, Inc.
>> 
>> 
>> 
>> _______________________________________________
>> 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
> 
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth