Return-Path: <jricher@mit.edu>
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 502AF3A09A6
 for <oauth@ietfa.amsl.com>; Wed,  4 Mar 2020 13:44:40 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.878
X-Spam-Level: 
X-Spam-Status: No, score=-1.878 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01, T_REMOTE_IMAGE=0.01,
 URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
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 9YevgZOXqofB for <oauth@ietfa.amsl.com>;
 Wed,  4 Mar 2020 13:44:38 -0800 (PST)
Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by ietfa.amsl.com (Postfix) with ESMTPS id E7DE23A099F
 for <oauth@ietf.org>; Wed,  4 Mar 2020 13:44:37 -0800 (PST)
Received: from [192.168.1.5] (static-71-174-62-56.bstnma.fios.verizon.net
 [71.174.62.56]) (authenticated bits=0)
 (User authenticated as jricher@ATHENA.MIT.EDU)
 by outgoing.mit.edu (8.14.7/8.12.4) with ESMTP id 024LfdJG007060
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
 Wed, 4 Mar 2020 16:42:35 -0500
From: Justin Richer <jricher@mit.edu>
Message-Id: <7C1D0E68-5D7B-4C0A-AE13-D513AB8723DE@mit.edu>
Content-Type: multipart/alternative;
 boundary="Apple-Mail=_417DAE99-32AC-4F0D-808D-0F7445877B49"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
Date: Wed, 4 Mar 2020 16:42:34 -0500
In-Reply-To:
 <CAErhd0PkNzFTVgjSS24RzjKZ+sq2Hubhr3j_hmnbtgLuQgOGhQ@mail.gmail.com>
Cc:
 David Waite <david=40alkaline-solutions.com@dmarc.ietf.org>, oauth@ietf.org
To: Bill Jung <bjung=40pingidentity.com@dmarc.ietf.org>
References:
 <CAErhd0OLTMKxXnT-_X6DyWYUxe==gTXdcHKLjOEDTmXCUZNxrg@mail.gmail.com>
 <CALkShcuLTd02iu309dCZ8PtnzbKd5b9PsVS_DWUMGWXgFovwMg@mail.gmail.com>
 <C0C40A3E-2455-4C86-B504-AB18F31975D9@alkaline-solutions.com>
 <CALkShct=sYSq-HoG=yMiV2BqT8+F=gnej+p2GgFD87FV1OQu3w@mail.gmail.com>
 <D3D1BFB8-CE54-4E48-A8B9-45E01ED2B637@alkaline-solutions.com>
 <CAErhd0PkNzFTVgjSS24RzjKZ+sq2Hubhr3j_hmnbtgLuQgOGhQ@mail.gmail.com>
X-Mailer: Apple Mail (2.3445.104.11)
Archived-At:
 <https://mailarchive.ietf.org/arch/msg/oauth/DP94UcRt5tf2T6hIszMx-TmI5Jc>
Subject: Re: [OAUTH-WG] OAuth 2.0 Token Introspection in RFC7662 : Refresh
 token?
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 21:44:40 -0000


--Apple-Mail=_417DAE99-32AC-4F0D-808D-0F7445877B49
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

Why would the client need to know the refresh token=E2=80=99s expiry? =
Can=E2=80=99t they just use the refresh token and see? Either way it=E2=80=
=99s a single round trip to the AS and the client gets the same answer =
with the same recovery code path.

 =E2=80=94 Justin

> On Mar 4, 2020, at 2:01 PM, Bill Jung =
<bjung=3D40pingidentity.com@dmarc.ietf.org> wrote:
>=20
> The question started when some RPs (client apps) asked that AS allow =
introspection endpoint to RPs so that RPs can check their refresh =
token's expiry. If AS allows this, which the spec is not clear about, =
then AS needs to know if the request is coming from RP or RS so that AS =
can allow the Access Token introspection to RS only. But then is that =
the right thing to do even?=20
>=20
> Surely some clarification will eliminate the time spent on unnecessary =
discussion among developers.=20
>=20
>  <https://www.pingidentity..com/> <https://www.pingidentity.com/>=09
> Bill Jung=09
> Manager, Response Engineering=09
> bjung@pingidentity.com <mailto:bjung@pingidentity.com>=09
> w: +1 604.697.7037=09
> Connect with us:	 =
<https://www.glassdoor.com/Overview/Working-at-Ping-Identity-EI_IE380907.1=
1,24.htm>	 <https://www.linkedin.com/company/21870>   =
<https://twitter.com/pingidentity>	 =
<https://www.facebook.com/pingidentitypage>	 =
<https://www.youtube.com/user/PingIdentityTV>  =
<https://www.pingidentity.com/en/blog.html> =
<https://www.google.com/url?q=3Dhttps://www.pingidentity.com/content/dam/p=
ing-6-2-assets/Assets/faqs/en/consumer-attitudes-post-breach-era-3375.pdf?=
id%3Db6322a80-f285-11e3-ac10-0800200c9a66&source=3Dgmail&ust=3D15416936085=
26000&usg=3DAFQjCNGBl5cPHCUAVKGZ_NnpuFj5PHGSUQ> =
<https://www.pingidentity.com/en/events/d/identify-2019.html> =
<https://www.pingidentity.com/content/dam/ping-6-2-assets/Assets/Misc/en/3=
464-consumersurvey-execsummary.pdf>
>=20
> On Sun, Mar 1, 2020 at 9:33 PM David Waite =
<david=3D40alkaline-solutions.com@dmarc.ietf.org =
<mailto:40alkaline-solutions.com@dmarc.ietf.org>> wrote:
> On Mar 1, 2020, at 10:11 PM, Andrii Deinega <andrii.deinega@gmail.com =
<mailto:andrii.deinega@gmail.com>> wrote:
> >=20
> > How would the authorization server know who actually uses the
> > introspection endpoint assuming that a protected resource and a =
client
> > application use the same credentials (client_id and client_secret)?
>=20
> In the external context, you have a client accessing a protected =
resource with an access token. The client should treat the token as =
opaque, and RFC7662 makes no allowances for that client to introspect =
its tokens.
>=20
> If you control both the client and protected resource, you may decide =
to short-cut and have them share credentials. However, the client logic =
still should never be introspecting the tokens.
>=20
> The security considerations also say that you must prove the =
authentication of the protected resource, which I have interpreted to =
mean that access tokens used to authorize the call to the introspection =
endpoint must be issued to a confidential client - public clients cannot =
protect credentials to perform an authentication. You want to limit =
introspection to prevent denial of service and probing attacks, and to =
limit the amount of information on viable attacks conveyed if someone =
steals a token.
>=20
> -DW
>=20
> >=20
> > Regards,
> > Andrii
> >=20
> > On Sun, Mar 1, 2020 at 7:38 PM David Waite =
<david@alkaline-solutions.com <mailto:david@alkaline-solutions.com>> =
wrote:
> >>=20
> >> I would expect the AS to invalidate the refresh token in this case, =
which would not require a refresh token mode nor necessarily any =
signaling back to the resource.
> >>=20
> >> -DW
> >>=20
> >>> On Mar 1, 2020, at 12:12 AM, Andrii Deinega =
<andrii.deinega@gmail.com <mailto:andrii.deinega@gmail.com>> wrote:
> >>>=20
> >>> Hello Bill,
> >>>=20
> >>> I'm just thinking out loud about possible scenarios for a =
protected
> >>> resource here... It may decide to revoke a refresh token if a =
client
> >>> application tried to use it instead of an access token when the
> >>> protected resource is paranoid about security. In order to do that =
an
> >>> introspection response should include a non-standard parameter =
which
> >>> indicates that the requested token is refresh_token.
> >>>=20
> >>> A user of the introspection endpoint should rely only on a value =
of
> >>> the active parameter (which is a boolean indicator) of the =
endpoint
> >>> response. This applies to both types of tokens. Note, the =
expiration
> >>> date, as well as other parameters, are defined as optional in the
> >>> specification. Both token types can be revoked before the =
expiration
> >>> date comes even if this parameter is presented as part of the
> >>> response. In my opinion, there are a number of reasons why this =
check
> >>> (for a refresh token) can be useful on the client application =
side.
> >>>=20
> >>> --
> >>> Regards,
> >>> Andrii
> >>>=20
> >>>=20
> >>> On Fri, Feb 28, 2020 at 1:59 AM Bill Jung
> >>> <bjung=3D40pingidentity.com@dmarc.ietf.org =
<mailto:40pingidentity.com@dmarc.ietf.org>> wrote:
> >>>>=20
> >>>> Hello, hopefully I am using the right email address.
> >>>>=20
> >>>> Simply put, can this spec be enhanced to clarify "Who can use the =
introspection endpoint for a refresh token? A resource provider or a =
client app or both?"
> >>>>=20
> >>>> RFC7662 clearly mentions that the user of introspection endpoint =
is a 'protected resource' and that makes sense for an access token. If =
we allow this to client apps, it'll give unnecessary token information =
to them.
> >>>> However, the spec also mentions that refresh tokens can also be =
used against the endpoint.
> >>>> In case of refresh tokens, user of the endpoint should be a =
client app because refresh tokens are used by clients to get another =
access token. (Cannot imagine how/why a resource server would introspect =
a refresh token)
> >>>>=20
> >>>> Is it correct to assume that the endpoint should be allowed to =
client apps if they want to examine refresh token's expiry time? Then =
the RFC should clearly mention it.
> >>>>=20
> >>>> Thanks in advance.
> >>>>=20
> >>>> <Details from the spec>
> >>>> In https://tools.ietf.org/html/rfc7662 =
<https://tools.ietf.org/html/rfc7662>
> >>>> In '1.  Introduction' section says,
> >>>> "This specification defines a protocol that allows authorized
> >>>> protected resources to query the authorization server to =
determine
> >>>> the set of metadata for a given token that was presented to them =
by
> >>>> an OAuth 2.0 client."
> >>>> Above makes clear that user of the endpoint is a "protected =
resource".
> >>>>=20
> >>>> And under 'token' in '2.1.  Introspection Request' section says,
> >>>> "For refresh tokens,
> >>>> this is the "refresh_token" value returned from the token =
endpoint
> >>>> as defined in OAuth 2.0 [RFC6749], Section 5.1."
> >>>> So looks like a refresh token is allowed for this endpoint..
> >>>>=20
> >>>>=20
> >>>> Bill Jung
> >>>> Manager, Response Engineering
> >>>> bjung@pingidentity.com <mailto:bjung@pingidentity.com>
> >>>> w: +1 604.697.7037
> >>>> Connect with us:
> >>>>=20
> >>>> CONFIDENTIALITY NOTICE: This email may contain confidential and =
privileged material for the sole use of the intended recipient(s). Any =
review, use, distribution or disclosure by others is strictly =
prohibited...  If you have received this communication in error, please =
notify the sender immediately by e-mail and delete the message and any =
file attachments from your computer. Thank =
you._______________________________________________
> >>>> OAuth mailing list
> >>>> OAuth@ietf.org <mailto:OAuth@ietf.org>
> >>>> https://www.ietf.org/mailman/listinfo/oauth =
<https://www.ietf.org/mailman/listinfo/oauth>
> >>>=20
> >>> _______________________________________________
> >>> OAuth mailing list
> >>> OAuth@ietf..org <mailto:OAuth@ietf.org>
> >>> https://www.ietf.org/mailman/listinfo/oauth =
<https://www.ietf.org/mailman/listinfo/oauth>
> >>=20
>=20
>=20
> CONFIDENTIALITY NOTICE: This email may contain confidential and =
privileged material for the sole use of the intended recipient(s). Any =
review, use, distribution or disclosure by others is strictly =
prohibited..  If you have received this communication in error, please =
notify the sender immediately by e-mail and delete the message and any =
file attachments from your computer. Thank =
you._______________________________________________
> OAuth mailing list
> OAuth@ietf.org <mailto:OAuth@ietf.org>
> https://www.ietf.org/mailman/listinfo/oauth =
<https://www.ietf.org/mailman/listinfo/oauth>

--Apple-Mail=_417DAE99-32AC-4F0D-808D-0F7445877B49
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D"">Why =
would the client need to know the refresh token=E2=80=99s expiry? =
Can=E2=80=99t they just use the refresh token and see? Either way it=E2=80=
=99s a single round trip to the AS and the client gets the same answer =
with the same recovery code path.<div class=3D""><br class=3D""></div><div=
 class=3D"">&nbsp;=E2=80=94 Justin<br class=3D""><div><br =
class=3D""><blockquote type=3D"cite" class=3D""><div class=3D"">On Mar =
4, 2020, at 2:01 PM, Bill Jung &lt;<a =
href=3D"mailto:bjung=3D40pingidentity.com@dmarc.ietf.org" =
class=3D"">bjung=3D40pingidentity.com@dmarc.ietf.org</a>&gt; =
wrote:</div><br class=3D"Apple-interchange-newline"><div class=3D""><div =
dir=3D"ltr" style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; =
font-size: 12px; font-style: normal; font-variant-caps: normal; =
font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;" class=3D"">The question started when some RPs (client apps) asked =
that AS allow introspection&nbsp;endpoint to RPs so that RPs can check =
their refresh token's&nbsp;expiry. If AS allows this, which the spec is =
not clear about, then AS needs to know if the request is coming from RP =
or RS so that AS can allow the Access Token introspection to RS only. =
But then is that the right thing to do even?&nbsp;<div class=3D""><br =
class=3D""></div><div class=3D"">Surely some clarification&nbsp;will =
eliminate the time spent on unnecessary discussion among =
developers.&nbsp;<div class=3D""><br class=3D""><div class=3D""><div =
class=3D""><div dir=3D"ltr" class=3D"gmail_signature" =
data-smartmail=3D"gmail_signature"><div style=3D"padding: 0px; margin: =
0px;" class=3D""><table style=3D"border-collapse: collapse; padding: =
0px; margin: 0px;" class=3D""><tbody class=3D""><tr class=3D""><td =
style=3D"width: 113px;" class=3D""><a =
href=3D"https://www.pingidentity..com/" target=3D"_blank" =
class=3D""></a><a href=3D"https://www.pingidentity.com/" target=3D"_blank"=
 class=3D""><img alt=3D"Ping Identity" =
src=3D"https://www.pingidentity.com/content/dam/pic/images/misc/signature/=
ping-logo.png" class=3D""></a></td><td class=3D""><table class=3D""><tbody=
 class=3D""><tr class=3D""><td style=3D"vertical-align: top;" =
class=3D""><span style=3D"color: rgb(230, 29, 60); display: =
inline-block; margin-bottom: 3px; font-family: arial, helvetica, =
sans-serif; font-weight: bold; font-size: 14px;" class=3D"">Bill =
Jung</span>		<br class=3D""><span style=3D"display: =
inline-block; margin-bottom: 2px; font-family: arial, helvetica, =
sans-serif; font-weight: normal; font-size: 14px;" class=3D"">Manager, =
Response Engineering</span>		<br class=3D""><span =
style=3D"font-family: arial, helvetica, sans-serif; font-size: 14px; =
display: inline-block; margin-bottom: 3px;" class=3D""><a =
href=3D"mailto:bjung@pingidentity.com" target=3D"_blank" =
class=3D"">bjung@pingidentity.com</a></span>		<br =
class=3D""><span style=3D"display: inline-block; margin-bottom: 2px; =
font-family: arial, helvetica, sans-serif; font-weight: normal; =
font-size: 14px;" class=3D"">w: +1 604.697.7037</span>		<br =
class=3D""><span style=3D"display: inline-block; margin-bottom: 2px; =
font-family: arial, helvetica, sans-serif; font-weight: normal; =
font-size: 14px;" =
class=3D""></span></td></tr></tbody></table></td></tr><tr class=3D""><td =
colspan=3D"2" class=3D""><table style=3D"border-collapse: collapse; =
border: none; margin: 8px 0px 0px; width: 348.453125px;" class=3D""><tbody=
 class=3D""><tr style=3D"height: 40px; border-top-width: 1px; =
border-top-style: solid; border-top-color: rgb(211, 211, 211); =
border-bottom-width: 1px; border-bottom-style: solid; =
border-bottom-color: rgb(211, 211, 211);" class=3D""><td =
style=3D"font-family: arial, helvetica, sans-serif; font-size: 14px; =
font-weight: bold; color: rgb(64, 71, 75);" class=3D"">Connect with =
us:</td><td style=3D"padding: 4px 0px 0px 20px;" class=3D""><a =
href=3D"https://www.glassdoor.com/Overview/Working-at-Ping-Identity-EI_IE3=
80907.11,24.htm" title=3D"Ping on Glassdoor" target=3D"_blank" =
style=3D"text-decoration: none; margin-right: 16px;" class=3D""><img =
src=3D"https://www.pingidentity.com/content/dam/pic/images/misc/signature/=
social-glassdoor.png" alt=3D"Glassdoor logo" style=3D"border: none; =
margin: 0px;" class=3D""></a>		<a =
href=3D"https://www.linkedin.com/company/21870" title=3D"Ping on =
LinkedIn" target=3D"_blank" style=3D"text-decoration: none; =
margin-right: 16px;" class=3D""><img =
src=3D"https://www.pingidentity.com/content/dam/pic/images/misc/signature/=
social-linkedin.png" alt=3D"LinkedIn logo" style=3D"border: none; =
margin: 0px;" class=3D""></a><span =
class=3D"Apple-converted-space">&nbsp;</span> <a =
href=3D"https://twitter.com/pingidentity" title=3D"Ping on Twitter" =
target=3D"_blank" style=3D"text-decoration: none; margin-right: 16px;" =
class=3D""><img =
src=3D"https://www.pingidentity.com/content/dam/pic/images/misc/signature/=
social-twitter.png" alt=3D"twitter logo" style=3D"border: none; margin: =
0px;" class=3D""></a>		<a =
href=3D"https://www.facebook.com/pingidentitypage" title=3D"Ping on =
Facebook" target=3D"_blank" style=3D"text-decoration: none; =
margin-right: 16px;" class=3D""><img =
src=3D"https://www.pingidentity.com/content/dam/pic/images/misc/signature/=
social-facebook.png" alt=3D"facebook logo" style=3D"border: none; =
margin: 0px;" class=3D""></a>		<a =
href=3D"https://www.youtube.com/user/PingIdentityTV" title=3D"Ping on =
Youtube" target=3D"_blank" style=3D"text-decoration: none; margin-right: =
16px;" class=3D""><img =
src=3D"https://www.pingidentity.com/content/dam/pic/images/misc/signature/=
social-youtube.png" alt=3D"youtube logo" style=3D"border: none; margin: =
0px 0px 3px;" class=3D""></a><span =
class=3D"Apple-converted-space">&nbsp;</span> <a =
href=3D"https://www.pingidentity.com/en/blog.html" title=3D"Ping Blog" =
target=3D"_blank" style=3D"text-decoration: none; margin-right: 16px;" =
class=3D""><img =
src=3D"https://www.pingidentity.com/content/dam/pic/images/misc/signature/=
social-blog.png" alt=3D"Blog logo" style=3D"border: none; margin: 0px;" =
class=3D""></a></td></tr></tbody></table></td></tr></tbody></table><a =
href=3D"https://www.google.com/url?q=3Dhttps://www.pingidentity.com/conten=
t/dam/ping-6-2-assets/Assets/faqs/en/consumer-attitudes-post-breach-era-33=
75.pdf?id%3Db6322a80-f285-11e3-ac10-0800200c9a66&amp;source=3Dgmail&amp;us=
t=3D1541693608526000&amp;usg=3DAFQjCNGBl5cPHCUAVKGZ_NnpuFj5PHGSUQ" =
target=3D"_blank" class=3D""></a><a =
href=3D"https://www.pingidentity.com/en/events/d/identify-2019.html" =
target=3D"_blank" class=3D""></a><a =
href=3D"https://www.pingidentity.com/content/dam/ping-6-2-assets/Assets/Mi=
sc/en/3464-consumersurvey-execsummary.pdf" target=3D"_blank" =
class=3D""><img =
src=3D"https://www.pingidentity.com/content/dam/ping-6-2-assets/images/mis=
c/emailSignature/2019/consumersurvey-emailsignature.jpg" =
class=3D""></a></div></div></div><br =
class=3D""></div></div></div></div><br style=3D"caret-color: rgb(0, 0, =
0); font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D""><div class=3D"gmail_quote" =
style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; text-decoration: none;"><div dir=3D"ltr" =
class=3D"gmail_attr">On Sun, Mar 1, 2020 at 9:33 PM David Waite =
&lt;david=3D<a href=3D"mailto:40alkaline-solutions.com@dmarc.ietf.org" =
class=3D"">40alkaline-solutions.com@dmarc.ietf.org</a>&gt; wrote:<br =
class=3D""></div><blockquote class=3D"gmail_quote" style=3D"margin: 0px =
0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; =
border-left-color: rgb(204, 204, 204); padding-left: 1ex;">On Mar 1, =
2020, at 10:11 PM, Andrii Deinega &lt;<a =
href=3D"mailto:andrii.deinega@gmail.com" target=3D"_blank" =
class=3D"">andrii.deinega@gmail.com</a>&gt; wrote:<br class=3D"">&gt;<span=
 class=3D"Apple-converted-space">&nbsp;</span><br class=3D"">&gt; How =
would the authorization server know who actually uses the<br =
class=3D"">&gt; introspection endpoint assuming that a protected =
resource and a client<br class=3D"">&gt; application use the same =
credentials (client_id and client_secret)?<br class=3D""><br class=3D"">In=
 the external context, you have a client accessing a protected resource =
with an access token. The client should treat the token as opaque, and =
RFC7662 makes no allowances for that client to introspect its tokens.<br =
class=3D""><br class=3D"">If you control both the client and protected =
resource, you may decide to short-cut and have them share credentials. =
However, the client logic still should never be introspecting the =
tokens.<br class=3D""><br class=3D"">The security considerations also =
say that you must prove the authentication of the protected resource, =
which I have interpreted to mean that access tokens used to authorize =
the call to the introspection endpoint must be issued to a confidential =
client - public clients cannot protect credentials to perform an =
authentication. You want to limit introspection to prevent denial of =
service and probing attacks, and to limit the amount of information on =
viable attacks conveyed if someone steals a token.<br class=3D""><br =
class=3D"">-DW<br class=3D""><br class=3D"">&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br class=3D"">&gt; =
Regards,<br class=3D"">&gt; Andrii<br class=3D"">&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br class=3D"">&gt; On Sun, =
Mar 1, 2020 at 7:38 PM David Waite &lt;<a =
href=3D"mailto:david@alkaline-solutions.com" target=3D"_blank" =
class=3D"">david@alkaline-solutions.com</a>&gt; wrote:<br =
class=3D"">&gt;&gt;<span class=3D"Apple-converted-space">&nbsp;</span><br =
class=3D"">&gt;&gt; I would expect the AS to invalidate the refresh =
token in this case, which would not require a refresh token mode nor =
necessarily any signaling back to the resource.<br =
class=3D"">&gt;&gt;<span class=3D"Apple-converted-space">&nbsp;</span><br =
class=3D"">&gt;&gt; -DW<br class=3D"">&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br class=3D"">&gt;&gt;&gt; =
On Mar 1, 2020, at 12:12 AM, Andrii Deinega &lt;<a =
href=3D"mailto:andrii.deinega@gmail.com" target=3D"_blank" =
class=3D"">andrii.deinega@gmail.com</a>&gt; wrote:<br =
class=3D"">&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br class=3D"">&gt;&gt;&gt; =
Hello Bill,<br class=3D"">&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br class=3D"">&gt;&gt;&gt; =
I'm just thinking out loud about possible scenarios for a protected<br =
class=3D"">&gt;&gt;&gt; resource here... It may decide to revoke a =
refresh token if a client<br class=3D"">&gt;&gt;&gt; application tried =
to use it instead of an access token when the<br class=3D"">&gt;&gt;&gt; =
protected resource is paranoid about security. In order to do that an<br =
class=3D"">&gt;&gt;&gt; introspection response should include a =
non-standard parameter which<br class=3D"">&gt;&gt;&gt; indicates that =
the requested token is refresh_token.<br class=3D"">&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br class=3D"">&gt;&gt;&gt; =
A user of the introspection endpoint should rely only on a value of<br =
class=3D"">&gt;&gt;&gt; the active parameter (which is a boolean =
indicator) of the endpoint<br class=3D"">&gt;&gt;&gt; response. This =
applies to both types of tokens. Note, the expiration<br =
class=3D"">&gt;&gt;&gt; date, as well as other parameters, are defined =
as optional in the<br class=3D"">&gt;&gt;&gt; specification. Both token =
types can be revoked before the expiration<br class=3D"">&gt;&gt;&gt; =
date comes even if this parameter is presented as part of the<br =
class=3D"">&gt;&gt;&gt; response. In my opinion, there are a number of =
reasons why this check<br class=3D"">&gt;&gt;&gt; (for a refresh token) =
can be useful on the client application side.<br =
class=3D"">&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br class=3D"">&gt;&gt;&gt; =
--<br class=3D"">&gt;&gt;&gt; Regards,<br class=3D"">&gt;&gt;&gt; =
Andrii<br class=3D"">&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br =
class=3D"">&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br class=3D"">&gt;&gt;&gt; =
On Fri, Feb 28, 2020 at 1:59 AM Bill Jung<br class=3D"">&gt;&gt;&gt; =
&lt;bjung=3D<a href=3D"mailto:40pingidentity.com@dmarc.ietf.org" =
target=3D"_blank" class=3D"">40pingidentity.com@dmarc.ietf.org</a>&gt; =
wrote:<br class=3D"">&gt;&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br =
class=3D"">&gt;&gt;&gt;&gt; Hello, hopefully I am using the right email =
address.<br class=3D"">&gt;&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br =
class=3D"">&gt;&gt;&gt;&gt; Simply put, can this spec be enhanced to =
clarify "Who can use the introspection endpoint for a refresh token? A =
resource provider or a client app or both?"<br =
class=3D"">&gt;&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br =
class=3D"">&gt;&gt;&gt;&gt; RFC7662 clearly mentions that the user of =
introspection endpoint is a 'protected resource' and that makes sense =
for an access token. If we allow this to client apps, it'll give =
unnecessary token information to them.<br class=3D"">&gt;&gt;&gt;&gt; =
However, the spec also mentions that refresh tokens can also be used =
against the endpoint.<br class=3D"">&gt;&gt;&gt;&gt; In case of refresh =
tokens, user of the endpoint should be a client app because refresh =
tokens are used by clients to get another access token. (Cannot imagine =
how/why a resource server would introspect a refresh token)<br =
class=3D"">&gt;&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br =
class=3D"">&gt;&gt;&gt;&gt; Is it correct to assume that the endpoint =
should be allowed to client apps if they want to examine refresh token's =
expiry time? Then the RFC should clearly mention it.<br =
class=3D"">&gt;&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br =
class=3D"">&gt;&gt;&gt;&gt; Thanks in advance.<br =
class=3D"">&gt;&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br =
class=3D"">&gt;&gt;&gt;&gt; &lt;Details from the spec&gt;<br =
class=3D"">&gt;&gt;&gt;&gt; In<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"https://tools.ietf.org/html/rfc7662" rel=3D"noreferrer" =
target=3D"_blank" class=3D"">https://tools.ietf.org/html/rfc7662</a><br =
class=3D"">&gt;&gt;&gt;&gt; In '1.&nbsp; Introduction' section says,<br =
class=3D"">&gt;&gt;&gt;&gt; "This specification defines a protocol that =
allows authorized<br class=3D"">&gt;&gt;&gt;&gt; protected resources to =
query the authorization server to determine<br class=3D"">&gt;&gt;&gt;&gt;=
 the set of metadata for a given token that was presented to them by<br =
class=3D"">&gt;&gt;&gt;&gt; an OAuth 2.0 client."<br =
class=3D"">&gt;&gt;&gt;&gt; Above makes clear that user of the endpoint =
is a "protected resource".<br class=3D"">&gt;&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br =
class=3D"">&gt;&gt;&gt;&gt; And under 'token' in '2.1.&nbsp; =
Introspection Request' section says,<br class=3D"">&gt;&gt;&gt;&gt; "For =
refresh tokens,<br class=3D"">&gt;&gt;&gt;&gt; this is the =
"refresh_token" value returned from the token endpoint<br =
class=3D"">&gt;&gt;&gt;&gt; as defined in OAuth 2.0 [RFC6749], Section =
5.1."<br class=3D"">&gt;&gt;&gt;&gt; So looks like a refresh token is =
allowed for this endpoint..<br class=3D"">&gt;&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br =
class=3D"">&gt;&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br =
class=3D"">&gt;&gt;&gt;&gt; Bill Jung<br class=3D"">&gt;&gt;&gt;&gt; =
Manager, Response Engineering<br class=3D"">&gt;&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:bjung@pingidentity.com" target=3D"_blank" =
class=3D"">bjung@pingidentity.com</a><br class=3D"">&gt;&gt;&gt;&gt; w: =
+1 604.697.7037<br class=3D"">&gt;&gt;&gt;&gt; Connect with us:<br =
class=3D"">&gt;&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br =
class=3D"">&gt;&gt;&gt;&gt; CONFIDENTIALITY NOTICE: This email may =
contain confidential and privileged material for the sole use of the =
intended recipient(s). Any review, use, distribution or disclosure by =
others is strictly prohibited...&nbsp; If you have received this =
communication in error, please notify the sender immediately by e-mail =
and delete the message and any file attachments from your computer. =
Thank you._______________________________________________<br =
class=3D"">&gt;&gt;&gt;&gt; OAuth mailing list<br =
class=3D"">&gt;&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:OAuth@ietf.org" target=3D"_blank" =
class=3D"">OAuth@ietf.org</a><br class=3D"">&gt;&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"https://www.ietf.org/mailman/listinfo/oauth" rel=3D"noreferrer" =
target=3D"_blank" =
class=3D"">https://www.ietf.org/mailman/listinfo/oauth</a><br =
class=3D"">&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><br class=3D"">&gt;&gt;&gt; =
_______________________________________________<br class=3D"">&gt;&gt;&gt;=
 OAuth mailing list<br class=3D"">&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:OAuth@ietf.org" target=3D"_blank" =
class=3D"">OAuth@ietf..org</a><br class=3D"">&gt;&gt;&gt;<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"https://www.ietf.org/mailman/listinfo/oauth" rel=3D"noreferrer" =
target=3D"_blank" =
class=3D"">https://www.ietf.org/mailman/listinfo/oauth</a><br =
class=3D"">&gt;&gt;<span class=3D"Apple-converted-space">&nbsp;</span><br =
class=3D""><br class=3D""></blockquote></div><br style=3D"caret-color: =
rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: =
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: =
normal; text-align: start; text-indent: 0px; text-transform: none; =
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D""><i style=3D"font-size: 12px; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
orphans: auto; text-align: start; text-indent: 0px; text-transform: =
none; white-space: normal; widows: auto; word-spacing: 0px; =
-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; =
text-decoration: none; margin: 0px; padding: 0px; border: 0px; outline: =
0px; vertical-align: baseline; background-color: rgb(255, 255, 255); =
font-family: proxima-nova-zendesk, system-ui, -apple-system, system-ui, =
&quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, =
&quot;Helvetica Neue&quot;, Arial, sans-serif; color: rgb(85, 85, 85); =
background-position: initial initial; background-repeat: initial =
initial;" class=3D""><span style=3D"margin: 0px; padding: 0px; border: =
0px; outline: 0px; vertical-align: baseline; background-color: =
transparent; font-family: proxima-nova-zendesk, system-ui, =
-apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, =
Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, Arial, =
sans-serif; font-weight: 600; background-position: initial initial; =
background-repeat: initial initial;" class=3D""><font size=3D"2" =
class=3D"">CONFIDENTIALITY NOTICE: This email may contain confidential =
and privileged material for the sole use of the intended recipient(s). =
Any review, use, distribution or disclosure by others is strictly =
prohibited..&nbsp; If you have received this communication in error, =
please notify the sender immediately by e-mail and delete the message =
and any file attachments from your computer. Thank =
you.</font></span></i><span style=3D"caret-color: rgb(0, 0, 0); =
font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none; float: none; display: inline !important;" =
class=3D"">_______________________________________________</span><br =
style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; text-decoration: none;" class=3D""><span =
style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; text-decoration: none; float: none; =
display: inline !important;" class=3D"">OAuth mailing list</span><br =
style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; text-decoration: none;" class=3D""><a =
href=3D"mailto:OAuth@ietf.org" style=3D"font-family: Helvetica; =
font-size: 12px; font-style: normal; font-variant-caps: normal; =
font-weight: normal; letter-spacing: normal; orphans: auto; text-align: =
start; text-indent: 0px; text-transform: none; white-space: normal; =
widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; =
-webkit-text-stroke-width: 0px;" class=3D"">OAuth@ietf.org</a><br =
style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; text-decoration: none;" class=3D""><a =
href=3D"https://www.ietf.org/mailman/listinfo/oauth" style=3D"font-family:=
 Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; orphans: auto; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; =
-webkit-text-stroke-width: 0px;" =
class=3D"">https://www.ietf.org/mailman/listinfo/oauth</a></div></blockquo=
te></div><br class=3D""></div></body></html>=

--Apple-Mail=_417DAE99-32AC-4F0D-808D-0F7445877B49--

