From nobody Tue Feb  9 14:04:12 2021
Return-Path: <andrii.deinega@gmail.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 BB18A3A0DAE;
 Tue,  9 Feb 2021 14:04:09 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 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,
 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=gmail.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 vcGntX4Zod_2; Tue,  9 Feb 2021 14:04:06 -0800 (PST)
Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com
 [IPv6:2a00:1450:4864:20::633])
 (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 244463A0DAC;
 Tue,  9 Feb 2021 14:04:05 -0800 (PST)
Received: by mail-ej1-x633.google.com with SMTP id i8so80465ejc.7;
 Tue, 09 Feb 2021 14:04:05 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; 
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=jmi9DwYJwMrbWQ5xyrPCkTWBnQqVxoYKX23x4JrPX/4=;
 b=dG7DmCMaUL9mg3Xx20TZZEvdosv6zl1tmafiu4s8NuMRzB6uIJwX9GkxVPa0MgfeVV
 jBrmEAdyODnoZ5jQd/eAPZqSyA4naP+D4YvGbyBm7FIp+dOHYWipiRmk0L1aODDY+CSP
 AGzgcwE3/Puuf+/zkQM5hvhlfQCVahLyy6hERlPY6iQbJOQi++XBZ9zwwz7ya6eNIAgf
 BKYmMralh4aYaXC9//kGhkzrinaF4adIOBnAmfWz3tLD9Ie8F8bQ4Cj1mbWyP5wYKuVC
 ohnJAw+F8L5czDkaCS71/00SDu531hz5kRzbl+0wYhl5+myKQyZfwXSHsZ0KkW5iP63K
 tUiA==
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=jmi9DwYJwMrbWQ5xyrPCkTWBnQqVxoYKX23x4JrPX/4=;
 b=IGtpjRqtvlAHRrTU24ngwLGbfXNpYihx9OXZuDRa249BFxqYoVcI/5wXVyE7C4ytpM
 k+D3jjShV58GyGnhb1ZBIqCqswK+e+eJtihNTuvIcnZnxCo5MTm6l1VBq1qKGMwOnod9
 hoLb3WSOYlX9zZ8gKIjSaX1wr0BC3X0YTRTQ/5o5bYNutSoSCXnXBebWwVdmv8akhqf3
 nuNq+Wp7P5dimno6IyaWo8u10m8GW6n+9iasMTvlwZ0k5Pu4vRrkNl18lo+Pi3/MUtPZ
 vpLbkcd082X6kxfI+RHuoeo9Rkm9Kuf7zh1bSOhFNLEERivyYfVV7KRsb4ELtLIKaTak
 6GFA==
X-Gm-Message-State: AOAM533IF+LKK51RsyNC/5gxJaEFMqKEe/Xfz9RMnctJD72XEIt2n+ya
 ufuUl/2w8YNEAtnTE5PzOXLjVrwxcNl+pxxH1Kc=
X-Google-Smtp-Source: ABdhPJwlzXuoNhCNxgRM9faM7A4Qnwv/5ikD+SkMxm2VgNCl4U2t8eQ6Ti2McKn5Hr4GvTIN93NzOVqwAVQOdeHSVE4=
X-Received: by 2002:a17:906:259a:: with SMTP id
 m26mr24986531ejb.399.1612908244237; 
 Tue, 09 Feb 2021 14:04:04 -0800 (PST)
MIME-Version: 1.0
References: <CALkShcsnubMRK4_F7rcUF-g1_=Sukux9W=dsjQMP3CpwUXvBww@mail.gmail.com>
 <ABEDB249-8AE5-4966-9D9D-297659F86AD1@forgerock.com>
In-Reply-To: <ABEDB249-8AE5-4966-9D9D-297659F86AD1@forgerock.com>
From: Andrii Deinega <andrii.deinega@gmail.com>
Date: Tue, 9 Feb 2021 14:03:53 -0800
Message-ID: <CALkShcsVGaqfmbimpaVdJS-r1yDpJhunjMi2UGV6+5tt4ZG_rA@mail.gmail.com>
To: Neil Madden <neil.madden@forgerock.com>
Cc: oauth <oauth@ietf.org>,
 draft-ietf-oauth-jwt-introspection-response@ietf.org
Content-Type: multipart/alternative; boundary="000000000000f4002c05baee7606"
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/UNqHQk3AQ8YzkHMPywkJlJKPnkU>
Subject: Re: [OAUTH-WG] JWT Response for OAuth Token Introspection and nonce
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, 09 Feb 2021 22:04:11 -0000

--000000000000f4002c05baee7606
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

I still don't see how your #1 and #3 points mitigate the replay attack when
an attacker somehow eavesdrops a successful response from an AS (yes, it's
signed by a public key) and then starts to replay it for other requests
from the same client.

The main problem here is that the client doesn't have a way to correlate
the introspection response with the initial introspection request.

Regarding #2, it's true that there are many proxies that do this and that.
In practice, you don't always have control over the infrastructure where
you may run your AS as I was saying before.

Regards,
Andrii


On Tue, Feb 9, 2021 at 1:30 PM Neil Madden <neil.madden@forgerock.com>
wrote:

> Three points:
>
> 1. In many cases the JWT will be verified using a public key fetched over
> the same TLS channel.
>
> 2. Many proxies can now also produce and consume JWTs for downstream
> services, so end-to-end JWT is no more guaranteed than end-to-end TLS.
>
> 3. The JWT response already contains an iat claim which is sufficient to
> judge freshness.
>
> It would be better to concentrate on ensuring end-to-end TLS rather than
> trying to reinvent the same mechanisms in JWT form on top.
>
> =E2=80=94 Neil
>
> On 9 Feb 2021, at 20:38, Andrii Deinega <andrii.deinega@gmail.com> wrote:
>
> =EF=BB=BF
> How can you guarantee that there are always direct TLS connections betwee=
n
> a client and an AS hosted say some cloud provider where you have a little
> control on their infrastructure?
>
> Even without all those cloud providers, how can you guarantee the same
> when there are a bunch of different (software and hardware) components th=
at
> legitimately perform SSL offloading / DPI in front of an AS...  or the
> client may just use the proxy server?
>
> Regards,
> Andrii
>
> On Tue, Feb 9, 2021 at 12:43 AM Neil Madden <neil.madden@forgerock.com>
> wrote:
>
>> On 9 Feb 2021, at 06:55, Andrii Deinega <andrii.deinega@gmail.com> wrote=
:
>>
>>
>> =EF=BB=BF
>> Hi WG,
>>
>> I wonder if there are any particular reasons to not make nonce a
>> mandatory parameter for the current JWT Response for OAuth Token
>> Introspection draft. Or, at least, force an AS to include the nonce clai=
m
>> in a JWT response when nonce is presented in the introspection request
>> similar to what happens with the similar scenario in the OpenID Connect =
ID
>> Token?
>>
>>
>> https://openid.net/specs/openid-connect-core-1_0.html#:~:text=3DIf%20pre=
sent%20in%20the%20Authentication%20Request%2C,value%20sent%20in%20the%20Aut=
hentication%20Request.
>>
>> This will allow to mitigate replay attacks because clients can correlate
>> the response with the initial request
>>
>>
>> ID tokens involve flows using an insecure channel (the browser). This is
>> not the case for introspection requests which happen over a direct TLS
>> connection and so are already protected against replay attacks.
>>
>> =E2=80=94 Neil
>>
>> ForgeRock values your Privacy <https://www.forgerock.com/your-privacy>
>
>
> ForgeRock values your Privacy <https://www.forgerock.com/your-privacy>

--000000000000f4002c05baee7606
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">I still don&#39;t see how your #1 and #3 points mitigate t=
he replay attack when an attacker somehow eavesdrops a successful response =
from an AS (yes, it&#39;s signed by a public key) and then starts to replay=
 it for other requests from the same client.<br><br>The main problem here i=
s that the client doesn&#39;t have a way to correlate the introspection res=
ponse with the initial introspection request.<br><br>Regarding #2, it&#39;s=
 true that there are many proxies that do this and that. In practice, you d=
on&#39;t always have control over the infrastructure where you may run your=
 AS as I was saying before.<br><div><br></div><div>Regards,</div><div>Andri=
i</div><div><br></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr"=
 class=3D"gmail_attr">On Tue, Feb 9, 2021 at 1:30 PM Neil Madden &lt;<a hre=
f=3D"mailto:neil.madden@forgerock.com">neil.madden@forgerock.com</a>&gt; wr=
ote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px=
 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D=
"auto"><div dir=3D"ltr">Three points:</div><div dir=3D"ltr"><br></div><div =
dir=3D"ltr">1. In many cases the JWT will be verified using a public key fe=
tched over the same TLS channel.=C2=A0</div><div dir=3D"ltr"><br></div><div=
 dir=3D"ltr">2. Many proxies can now also produce and consume JWTs for down=
stream services, so end-to-end JWT is no more guaranteed than end-to-end TL=
S.</div><div dir=3D"ltr"><br></div><div dir=3D"ltr">3. The JWT response alr=
eady contains an iat claim which is sufficient to judge freshness.=C2=A0</d=
iv><div dir=3D"ltr"><br></div><div dir=3D"ltr">It would be better to concen=
trate on ensuring end-to-end TLS rather than trying to reinvent the same me=
chanisms in JWT form on top.=C2=A0</div><div dir=3D"ltr"><br></div><div dir=
=3D"ltr">=E2=80=94 Neil</div><div dir=3D"ltr"><br><blockquote type=3D"cite"=
>On 9 Feb 2021, at 20:38, Andrii Deinega &lt;<a href=3D"mailto:andrii.deine=
ga@gmail.com" target=3D"_blank">andrii.deinega@gmail.com</a>&gt; wrote:<br>=
<br></blockquote></div><blockquote type=3D"cite"><div dir=3D"ltr">=EF=BB=BF=
<div dir=3D"ltr">How can you guarantee that there are always direct TLS con=
nections between a client and an AS hosted say some cloud provider where yo=
u have a little control on their infrastructure?<br><div><br></div><div>Eve=
n without all those cloud providers, how=C2=A0can you guarantee=C2=A0the sa=
me when there are a bunch=C2=A0of different (software and hardware) compone=
nts that legitimately perform SSL offloading / DPI in front of an AS...=C2=
=A0 or the client may just use the proxy server?</div><div><br></div><div><=
div>Regards,</div></div><div>Andrii</div></div><br><div class=3D"gmail_quot=
e"><div dir=3D"ltr" class=3D"gmail_attr">On Tue, Feb 9, 2021 at 12:43 AM Ne=
il Madden &lt;<a href=3D"mailto:neil.madden@forgerock.com" target=3D"_blank=
">neil.madden@forgerock.com</a>&gt; wrote:<br></div><blockquote class=3D"gm=
ail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,=
204,204);padding-left:1ex"><div dir=3D"auto"><div dir=3D"ltr">On 9 Feb 2021=
, at 06:55, Andrii Deinega &lt;<a href=3D"mailto:andrii.deinega@gmail.com" =
target=3D"_blank">andrii.deinega@gmail.com</a>&gt; wrote:</div><div dir=3D"=
ltr"><blockquote type=3D"cite"><br></blockquote></div><blockquote type=3D"c=
ite"><div dir=3D"ltr">=EF=BB=BF<div dir=3D"ltr">Hi WG,<br><br>I wonder if t=
here are any particular reasons to not make nonce a mandatory parameter for=
 the current JWT Response for OAuth Token Introspection draft. Or, at least=
, force an AS to include the nonce claim in a JWT response when nonce is pr=
esented in the introspection request similar to what happens with the simil=
ar scenario in the OpenID Connect ID Token?<br><br><a href=3D"https://openi=
d.net/specs/openid-connect-core-1_0.html#:~:text=3DIf%20present%20in%20the%=
20Authentication%20Request%2C,value%20sent%20in%20the%20Authentication%20Re=
quest." target=3D"_blank">https://openid.net/specs/openid-connect-core-1_0.=
html#:~:text=3DIf%20present%20in%20the%20Authentication%20Request%2C,value%=
20sent%20in%20the%20Authentication%20Request.</a><div><div><br></div><div>T=
his will allow to mitigate replay attacks=C2=A0because clients can correlat=
e the response with the initial request</div></div></div></div></blockquote=
><br><div>ID tokens involve flows using an insecure channel (the browser). =
This is not the case for introspection requests which happen over a direct =
TLS connection and so are already protected against replay attacks.=C2=A0</=
div><div><br></div><div>=E2=80=94 Neil</div></div>
<br>
<span style=3D"color:rgb(23,43,77);font-family:-apple-system,BlinkMacSystem=
Font,&quot;Segoe UI&quot;,Roboto,Oxygen,Ubuntu,&quot;Fira Sans&quot;,&quot;=
Droid Sans&quot;,&quot;Helvetica Neue&quot;,sans-serif;background-color:rgb=
(255,255,255)"><font size=3D"1">ForgeRock values your <a href=3D"https://ww=
w.forgerock.com/your-privacy" target=3D"_blank">Privacy</a></font></span></=
blockquote></div>
</div></blockquote></div>
<br>
<span style=3D"color:rgb(23,43,77);font-family:-apple-system,BlinkMacSystem=
Font,&quot;Segoe UI&quot;,Roboto,Oxygen,Ubuntu,&quot;Fira Sans&quot;,&quot;=
Droid Sans&quot;,&quot;Helvetica Neue&quot;,sans-serif;background-color:rgb=
(255,255,255)"><font size=3D"1">ForgeRock values your <a href=3D"https://ww=
w.forgerock.com/your-privacy" target=3D"_blank">Privacy</a></font></span></=
blockquote></div>

--000000000000f4002c05baee7606--

