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

Torsten Lodderstedt <torsten@lodderstedt.net> Wed, 04 March 2020 18:29 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 EC6C53A14B8 for <oauth@ietfa.amsl.com>; Wed, 4 Mar 2020 10:29:06 -0800 (PST)
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, HTML_MESSAGE=0.001, MIME_QP_LONG_LINE=0.001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=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=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 kqaGOETW8vR4 for <oauth@ietfa.amsl.com>; Wed, 4 Mar 2020 10:28:58 -0800 (PST)
Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) (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 7E2403A14A6 for <oauth@ietf.org>; Wed, 4 Mar 2020 10:28:57 -0800 (PST)
Received: by mail-wr1-x434.google.com with SMTP id j16so3708997wrt.3 for <oauth@ietf.org>; Wed, 04 Mar 2020 10:28:57 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lodderstedt.net; s=google; h=content-transfer-encoding:from:mime-version:subject:date:message-id :references:cc:in-reply-to:to; bh=ctbUmCy+ct3apawT2RWH8gvX+VOCvtHzlW/ifAl8iQY=; b=RlTojv2joNiqTM7x02n8rphqjiY53AOspxd+5RewbDBjtuG48waydZAwc0ooM49ape y0QPOaYZ18KvthcTFvukcszhYEKmioIJpyB4RJFq3mkb571OyAOQAjqbCR4ZIEm2Ur+1 0y1WXhlLJ2p5ptNEIN71+yxUnbjW0dw8qXaRxJ/p3sqapbatj/BlUftqDXWSXkbbesR3 iLb11DKj3ThSEx4spdG1/ZBNzv06YfjOkAjMCMrMU7XJ5D+a21/ijkht+ySqFvXDc7C0 u9qMt8KTzgm2iSyt+BayLZNjwwkm7fLx33cQcoYNBEeZBM61UZce+FTiyhr6MdcDL6/h Mnhw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:content-transfer-encoding:from:mime-version :subject:date:message-id:references:cc:in-reply-to:to; bh=ctbUmCy+ct3apawT2RWH8gvX+VOCvtHzlW/ifAl8iQY=; b=ds6/5/pif7tEqH2WStrXi6hcp80phKSw3Q4aGVMDD4GSxZLF0wVLd3JosEmeXF0c2s uedTL5RmmXzVopj4T5Er8L6wgXTWFeoxjpiGYZ7il5JAO+scr6XrE0HK47jh+J+FU+Vy CNH7wZnfBPhIQMo29BfXdOpnsHiJ58jODnhN+vxQ6cM6rXFZcTtb+FwL4omYFudA9PJz mGwJ2OUr+7uT94i1uqB32+AtE2fCsDu78En12dv/uBW2fy616cYtVHlXeYb9Si1/uqPI pd2iujxncYSHED5hXsTbamvsHkqVAL8KMnNA2lhHuWx/maYzQfkn9TusI/zELEp4YiRq 1bTA==
X-Gm-Message-State: ANhLgQ3wBwXIdvnFvcqgChRShpAl3qZ+xITwMCqVai52ZEp36Pvf7e6W v781UBcxOhLDXIo8s6JqU2fSaQ==
X-Google-Smtp-Source: ADFU+vvqZtc1lSNSdIUHQ1Hy4/O1cHRWVQx1Yyy3ANozuLYeunrHI/W+msP6tWsYDUlqu9Y9yVhcyw==
X-Received: by 2002:adf:fe89:: with SMTP id l9mr5164007wrr.373.1583346533070; Wed, 04 Mar 2020 10:28:53 -0800 (PST)
Received: from [192.168.71.108] (p5B0D94B9.dip0.t-ipconnect.de. [91.13.148.185]) by smtp.gmail.com with ESMTPSA id g14sm41468640wrv.58.2020.03.04.10.28.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 04 Mar 2020 10:28:51 -0800 (PST)
Content-Type: multipart/signed; boundary="Apple-Mail-ADAD9C11-1E1E-47A8-B191-26F0E7FE2556"; protocol="application/pkcs7-signature"; micalg="sha-256"
Content-Transfer-Encoding: 7bit
From: Torsten Lodderstedt <torsten@lodderstedt.net>
Mime-Version: 1.0 (1.0)
Date: Wed, 04 Mar 2020 19:28:50 +0100
Message-Id: <741BA825-7143-4886-AE46-B66A9E686A8C@lodderstedt.net>
References: <CALAqi__3RXxMyKp7dPjQK-eD+E4duY1y2SVWqC-Xnr3twh8HeA@mail.gmail.com>
Cc: oauth <oauth@ietf.org>, Justin Richer <jricher@mit.edu>, Benjamin Kaduk <kaduk@mit.edu>, Takahiko Kawasaki <taka@authlete.com>, Vladimir Dzhuvinov <vladimir@connect2id.com>
In-Reply-To: <CALAqi__3RXxMyKp7dPjQK-eD+E4duY1y2SVWqC-Xnr3twh8HeA@mail.gmail.com>
To: Filip Skokan <panva.ip@gmail.com>
X-Mailer: iPad Mail (17D50)
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/KbRQmBVlXvvEOhUv0niQL_H3BA4>
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 18:29:09 -0000


> Am 04.03.2020 um 19:18 schrieb Filip Skokan <panva.ip@gmail.com>:
> 
> 
> Sorry, i meant - is top level jti required as well?

I don’t see any use case for it, but that might be due to lack of creativity :-)

> 
> S pozdravem,
> Filip Skokan
> 
> 
>> On Wed, 4 Mar 2020 at 19:15, Filip Skokan <panva.ip@gmail.com> wrote:
>> Torsten, let's make sure we call out the required top level JWT claims - iss, iat, aud, what else? is top level iat required as well?
>> 
>> S pozdravem,
>> Filip Skokan
>> 
>> 
>>> On Wed, 4 Mar 2020 at 17:19, Torsten Lodderstedt <torsten@lodderstedt.net> wrote:
>>> 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
>>>