Return-Path: <wmills_92105@yahoo.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1])
 by ietfa.amsl.com (Postfix) with ESMTP id C874F1A6FC5
 for <oauth@ietfa.amsl.com>; Tue,  2 Dec 2014 10:40:21 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.509
X-Spam-Level: 
X-Spam-Status: No, score=-1.509 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
 DKIM_VALID_AU=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25,
 FREEMAIL_FROM=0.001, FREEMAIL_REPLYTO_END_DIGIT=0.25,
 HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001,
 T_RP_MATCHES_RCVD=-0.01] autolearn=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 BbmvzQznEkYu for <oauth@ietfa.amsl.com>;
 Tue,  2 Dec 2014 10:40:18 -0800 (PST)
Received: from nm47-vm10.bullet.mail.bf1.yahoo.com
 (nm47-vm10.bullet.mail.bf1.yahoo.com [216.109.114.219])
 (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits))
 (No client certificate requested)
 by ietfa.amsl.com (Postfix) with ESMTPS id 565EF1A1BD4
 for <oauth@ietf.org>; Tue,  2 Dec 2014 10:40:18 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048;
 t=1417545617; bh=DY+DE3qapkN8LYLvMteTE9CaHG9ysIgRhJ61rdVR8z4=;
 h=Date:From:Reply-To:To:In-Reply-To:References:Subject:From:Subject;
 b=Ztf1szk001rKYcyM4OYruPgW+Lo5IoHAnBF07S4kRGcfD44Urrq14kj1anNkb9Pa852xQUh2ZZhX2SnjHuHzrgFvNA3mve0E+yTB72UrXQhe14iZeBdBQZzkEQLXRrA96sMAm5aimzd8IrQdTSKLqjXreSdZAVyecc9NyKxB1lyj0dfPhsEvbGVD+UuDXiptryydghvh+olSd3lzDtKyvaRqObVC+pZLrjNVgW6Mk8Azcx0mHWlsa9L6rP9eOoXtyQPng1WwfSvoecC06AGhoH8hXkiKLOuwiC2f1KL6tllVlKZAR90ujYNTh13zFa1NqbR8t/s6hyPznwFPino6hQ==
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s2048; d=yahoo.com;
 b=OEtuBo90465omcKoUsPbxNwodST4ydf9tDbu2CbmDSqhbkVBWnCLsgkedrKHKyTUsmA5g/H5v3YP5lCkyVF1YCwAnSGYAhPdi14lUOSORMRv7Feq14f9b56eH3GZs817fI6iY7/Ml+WxmiIDMEI3DmIrnXzEHMs9E+PvY2n6W9KqG3QkpZk3vyYiO370TaRCyhDCCoZ/jaLcaYgt9jaVjruw/nfsvseEPhbgyu10OAEu9zo5lvUh9X8Gz55cs+XnPr3hAqBtR5viOBZ6KycIlx9X/k4PD9LJ3eHNmoi+x22F8BGIXpi1E2SBha01h3fbRktBVz3bvuYRr/yN6KOf+A==;
Received: from [66.196.81.173] by nm47.bullet.mail.bf1.yahoo.com with NNFMP;
 02 Dec 2014 18:40:17 -0000
Received: from [98.139.212.193] by tm19.bullet.mail.bf1.yahoo.com with NNFMP; 
 02 Dec 2014 18:40:17 -0000
Received: from [127.0.0.1] by omp1002.mail.bf1.yahoo.com with NNFMP;
 02 Dec 2014 18:40:17 -0000
X-Yahoo-Newman-Property: ymail-3
X-Yahoo-Newman-Id: 408939.31893.bm@omp1002.mail.bf1.yahoo.com
Received: by 66.196.80.147; Tue, 02 Dec 2014 18:40:16 +0000 
Date: Tue, 2 Dec 2014 18:40:16 +0000 (UTC)
From: Bill Mills <wmills_92105@yahoo.com>
To: Justin Richer <jricher@mit.edu>, 
 Hannes Tschofenig <hannes.tschofenig@gmx.net>, 
 "oauth@ietf.org" <oauth@ietf.org>
Message-ID: <188955390.3945675.1417545616514.JavaMail.yahoo@jws106134.mail.bf1.yahoo.com>
In-Reply-To: <547DC736.5070609@mit.edu>
References: <547DC736.5070609@mit.edu>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
 boundary="----=_Part_3945674_1152611627.1417545616504"
Archived-At: http://mailarchive.ietf.org/arch/msg/oauth/9jJ7AkHsk1DR8qCIRzQoy_BOYIc
Subject: Re: [OAUTH-WG] Review of draft-ietf-oauth-introspection-01
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Bill Mills <wmills_92105@yahoo.com>
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: <http://www.ietf.org/mail-archive/web/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, 02 Dec 2014 18:40:22 -0000

------=_Part_3945674_1152611627.1417545616504
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

"However, I think it's very clear how PoP tokens would work. ..."=20
I don't know if that's true. =C2=A0POP tokens (as yet to be fully defined) =
would then also have a TLS or transport security requirement unless there i=
s token introspection client auth in play I think. =C2=A0Otherwise I can as=
 an attacker take that toklen and get info about it that might be useful, a=
nd I don't think that's what we want.
-bill


     On Tuesday, December 2, 2014 6:06 AM, Justin Richer <jricher@mit.edu> =
wrote:
  =20

  Hannes, thanks for the review. Comments inline.
=20
 On 12/2/2014 6:23 AM, Hannes Tschofenig wrote:
 =20
 Hi Justin,

I have a few remarks regarding version -01 of the token introspection
document.

* Terminology

The token introspection protocol is a client-server protocol but the
term "client" already has a meaning in OAuth. Here the client of the
token introspection protocol is actually the resource server. I believe
it would make sense to clarify this issue in the terminology section or
in the introduction. Maybe add a figure (which you could copy from
Figure 4 of
http://www.ietf.org/id/draft-ietf-oauth-pop-architecture-00.txt.

Maybe you want to call these two parties, the introspection client and
the introspection server.=20
=20
 I tried to avoid the word "client" for this very reason. The draft used to=
 say "client or protected resource" throughout, but in a few years of deplo=
yment experience it's become clear that it's pretty much just protected res=
ources that need to do introspection so I changed that text throughout. I d=
on't think that "introspection client" will help here because the party alr=
eady has a name from OAuth and we should inherit it.
=20
=20
 * Scope

I think the document needs to be very clear that is only applicable to
bearer tokens (and not to PoP tokens). This issue was raised at the last
IETF meeting as well.=20
=20
 I think the document should be clear that it *specifies* the mechanism for=
 bearer tokens, since that's the only OAuth token type that's defined publi=
cly right now, and that the details for PoP will have to be specified in an=
other spec -- that's exactly what Appendix C is there for, and if that can =
be clearer, please suggest better text.
=20
 However, I think it's very clear how PoP tokens would work. You send the v=
alue returned as the "access_token" in the token endpoint response, which i=
s effectively the public portion of the PoP token. Just like a bearer token=
, this value is passed as-is from the client to the RS and would be passed =
as-is from the RS to the AS during introspection. The AS can then use that =
to look up the key and return it in an as-yet-unspecified field so that the=
 RS can validate the request. The RS wouldn't send the signature or signed =
portion of the request for the AS to validate -- that's a bad idea. But the=
se are all details that we can work out in the PoP-flavored extension. As I=
 noted in the other thread, we'll have to make a similar extension for Revo=
cation, so I still don't think it makes sense to hold up this work and wait=
 for PoP to be finished because it's useful now, as-is.
=20
=20
 * Meta-Information

You have replicated a lot of the claims defined in
https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-31
and I am wondering why you have decided to not just re-use the entire
registry from JWT?

If you want to create a separate registry (which I wouldn't recommend)
then you have to put text into the IANA consideration section.=20
=20
 The idea was to inherit JWT's syntax and semantics, at least on the wire, =
and add additional fields. It probably makes sense to just inherit the JWT =
registry, so we can do that.
=20
=20
 When you write:

"
The endpoint MAY allow other parameters to provide further context to
the query.
"

You could instead write that the token introspection MUST ignore any
parameters from the request message it does not understand.=20
=20
 Noted, will add.
=20
=20
 Of course, there is the question whether any of those would be security
critical and hence ignoring them would cause problems?!=20
=20
 Anything security critical would be provider-specific, in which case it wo=
uldn't ignore them.=20
=20
=20
 * Security

The requirement for authenticating the party issuing the introspection
request to the token introspection endpoint is justified in the security
and the privacy consideration section. The security threat is that an
attacker could use the endpoint to testing for tokens. The privacy
threat is that a resource server learns about the content of the token,
which may contain personal data. I see the former as more dangerous than
the latter since a legitimate resource server is supposed to learn about
the authorization information in the token. An attacker who had gotten
hold of tokens will not only learn about the content of the token but he
will also be able to use it to get access to the protected resource itself.

In any case, to me this sounds like mutual authentication should be
mandatory to implement. This is currently not the case. On top of that
there is single technique mandatory-to-implement outlined either (in
case someone wants to use it). That's in general not very helpful from
an interoperability point of view. Yet another thing to agree on between
the AS and the RS.=20
=20
 I had similar thoughts when putting draft -01 together but didn't want to =
make a normative change like that without the WG input. I'm fine with stren=
gthening this to a MUST, since as far as I'm aware that's how it works in a=
ll existing implementations (can anyone else comment on this?). I'm less co=
mfortable with making one particular  mechanism MTI, since I know of implem=
entations that use either a special set of credentials passed just like cli=
ent credentials to the token endpoint, or an OAuth token specifically for t=
he introspection endpoint. If we do standardize on one MTI form, I'd sugges=
t that we make it the OAuth bearer token.
=20
=20
 * SHOULDs

This is my usual comment that any SHOULD statement should give the
reader enough information about the trade-off decision he has to make.
When should he implement something and when should he skip it?=20
=20
 Noted, thanks.=20
=20
=20
 * Minor items

You write:

"
These include using
   structured token formats such as JWT [JWT] or SAML [[ Editor's Note:
   Which SAML document should we reference here? ]] and proprietary
   inter-service communication mechanisms (such as shared databases and
   protected enterprise service buses) that convey token information.
"

Just reference the JWT since that's what we standardize.=20
=20
 I'm fine with that, didn't want to offend the SAML cabal but we can cut it=
.
=20
=20
 * 'Active' claim

you write:
"
   active  REQUIRED.  Boolean indicator of whether or not the presented
      token is currently active.  The authorization server determines
      whether and when a given token is in an active state.
"

Wouldn't it make more sense to return an error rather than saying that
this token is not active.=20
=20
 It's not an error, really. It's a valid request and valid response saying =
that token isn't any good. It would be easy enough to change the returned e=
rror code on the {active:false} response, but to which code? The request is=
n't Forbidden, or Not Found (the token could have been found but it's been =
deactivated or just not available to  the RS that's asking for it), or Unau=
thorized, or even a Bad Request. So my logic is that the response is "OK", =
but the content of the response tells you the metadata about the token, whi=
ch is that it's not active.=20
=20
=20
 * Capitalization

Reading through the text I see bearer token/Bearer Token, Client/client,
etc. issue.=20
=20
 Thanks, still breaking old Bad Habits of capitalizing Terms In The Documen=
t. Tried to clean it up, will do more.
=20
=20
 * AS <-> RS relationship

You write:
"
   Since
   OAuth 2.0 [RFC6749] defines no direct relationship between the
   authorization server and the protected resource, only that they must
   have an agreement on the tokens themselves, there have been many
   different approaches to bridging this gap.
"

I am not sure what you mean by "defines no relationship" between the AS
and the RS. Of course, there is a relationship. The AS issues tokens for
access for a specific RS. The RS needs to understand the tokens or if it
does not understand them it needs to know which AS to interact with to
learn about the content.

In a nutshell, I am not sure what you want to say with this paragraph
particularly since you state that they have to have an agreement about
the tokens.=20
=20
 What I was trying to point out is that it doesn't define the nature of the=
 relationship between the two components. Specifically, it says:
=20
    The methods used by the resource
   server to validate the access token (as well as any error responses)
   are beyond the scope of this specification but generally involve an
   interaction or coordination between the resource server and the
   authorization server. This spec provides one mechanism for this validati=
on. So we could reference this directly if that's helpful.=20
=20
 =C2=A0 -- Justin
=20
=20
 Ciao
Hannes

=20
 =20
 _______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth
=20
=20
=20
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


   
------=_Part_3945674_1152611627.1417545616504
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div style=3D"color:#000; background-color:#fff; font-family:HelveticaNeue,=
 Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:12px=
"><div id=3D"yui_3_16_0_1_1417479933319_82481"><span>"</span><span style=3D=
"font-size: 15.5555562973022px;" class=3D"" id=3D"yui_3_16_0_1_141747993331=
9_83601">However, I think it's very clear how PoP tokens would work. ..."</=
span></div> <div class=3D"qtdSeparateBR" id=3D"yui_3_16_0_1_1417479933319_8=
2480"><br></div><div class=3D"qtdSeparateBR" id=3D"yui_3_16_0_1_14174799333=
19_82480" dir=3D"ltr">I don't know if that's true. &nbsp;POP tokens (as yet=
 to be fully defined) would then also have a TLS or transport security requ=
irement unless there is token introspection client auth in play I think. &n=
bsp;Otherwise I can as an attacker take that toklen and get info about it t=
hat might be useful, and I don't think that's what we want.</div><div class=
=3D"qtdSeparateBR" id=3D"yui_3_16_0_1_1417479933319_82480" dir=3D"ltr"><br>=
</div><div class=3D"qtdSeparateBR" id=3D"yui_3_16_0_1_1417479933319_82480" =
dir=3D"ltr">-bill</div><div class=3D"qtdSeparateBR" id=3D"yui_3_16_0_1_1417=
479933319_82480"><br></div><div class=3D"qtdSeparateBR" id=3D"yui_3_16_0_1_=
1417479933319_82480"><br><br></div><div class=3D"yahoo_quoted" style=3D"dis=
play: block;" id=3D"yui_3_16_0_1_1417479933319_82460"> <div style=3D"font-f=
amily: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans=
-serif; font-size: 12px;" id=3D"yui_3_16_0_1_1417479933319_82459"> <div sty=
le=3D"font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida =
Grande, sans-serif; font-size: 16px;" id=3D"yui_3_16_0_1_1417479933319_8245=
8"> <div dir=3D"ltr"> <font size=3D"2" face=3D"Arial"> On Tuesday, December=
 2, 2014 6:06 AM, Justin Richer &lt;jricher@mit.edu&gt; wrote:<br> </font> =
</div>  <br><br> <div class=3D"y_msg_container" id=3D"yui_3_16_0_1_14174799=
33319_82457"><div id=3D"yiv3672396586"><div id=3D"yui_3_16_0_1_141747993331=
9_82456">
    <div class=3D"yiv3672396586moz-cite-prefix">Hannes, thanks for the revi=
ew. Comments
      inline.<br clear=3D"none">
      <br clear=3D"none">
      On 12/2/2014 6:23 AM, Hannes Tschofenig wrote:<br clear=3D"none">
    </div>
    <blockquote type=3D"cite" id=3D"yui_3_16_0_1_1417479933319_82462">
      <pre id=3D"yui_3_16_0_1_1417479933319_82461">Hi Justin,

I have a few remarks regarding version -01 of the token introspection
document.

* Terminology

The token introspection protocol is a client-server protocol but the
term "client" already has a meaning in OAuth. Here the client of the
token introspection protocol is actually the resource server. I believe
it would make sense to clarify this issue in the terminology section or
in the introduction. Maybe add a figure (which you could copy from
Figure 4 of
<a rel=3D"nofollow" shape=3D"rect" class=3D"yiv3672396586moz-txt-link-freet=
ext" target=3D"_blank" href=3D"http://www.ietf.org/id/draft-ietf-oauth-pop-=
architecture-00.txt" id=3D"yui_3_16_0_1_1417479933319_82463">http://www.iet=
f.org/id/draft-ietf-oauth-pop-architecture-00.txt</a>.

Maybe you want to call these two parties, the introspection client and
the introspection server.</pre>
    </blockquote>
    <br clear=3D"none">
    I tried to avoid the word "client" for this very reason. The draft
    used to say "client or protected resource" throughout, but in a few
    years of deployment experience it's become clear that it's pretty
    much just protected resources that need to do introspection so I
    changed that text throughout. I don't think that "introspection
    client" will help here because the party already has a name from
    OAuth and we should inherit it.<br clear=3D"none">
    <br clear=3D"none">
    <blockquote type=3D"cite" id=3D"yui_3_16_0_1_1417479933319_82467">
      <pre id=3D"yui_3_16_0_1_1417479933319_82466">* Scope

I think the document needs to be very clear that is only applicable to
bearer tokens (and not to PoP tokens). This issue was raised at the last
IETF meeting as well.</pre>
    </blockquote>
    <br clear=3D"none">
    I think the document should be clear that it *specifies* the
    mechanism for bearer tokens, since that's the only OAuth token type
    that's defined publicly right now, and that the details for PoP will
    have to be specified in another spec -- that's exactly what Appendix
    C is there for, and if that can be clearer, please suggest better
    text.<br clear=3D"none">
    <br clear=3D"none">
    However, I think it's very clear how PoP tokens would work. You send
    the value returned as the "access_token" in the token endpoint
    response, which is effectively the public portion of the PoP token.
    Just like a bearer token, this value is passed as-is from the client
    to the RS and would be passed as-is from the RS to the AS during
    introspection. The AS can then use that to look up the key and
    return it in an as-yet-unspecified field so that the RS can validate
    the request. The RS wouldn't send the signature or signed portion of
    the request for the AS to validate -- that's a bad idea. But these
    are all details that we can work out in the PoP-flavored extension.
    As I noted in the other thread, we'll have to make a similar
    extension for Revocation, so I still don't think it makes sense to
    hold up this work and wait for PoP to be finished because it's
    useful now, as-is.<br clear=3D"none">
    <br clear=3D"none">
    <blockquote type=3D"cite" id=3D"yui_3_16_0_1_1417479933319_82469">
      <pre id=3D"yui_3_16_0_1_1417479933319_82468">* Meta-Information

You have replicated a lot of the claims defined in
<a rel=3D"nofollow" shape=3D"rect" class=3D"yiv3672396586moz-txt-link-freet=
ext" target=3D"_blank" href=3D"https://tools.ietf.org/html/draft-ietf-oauth=
-json-web-token-31">https://tools.ietf.org/html/draft-ietf-oauth-json-web-t=
oken-31</a>
and I am wondering why you have decided to not just re-use the entire
registry from JWT?

If you want to create a separate registry (which I wouldn't recommend)
then you have to put text into the IANA consideration section.</pre>
    </blockquote>
    <br clear=3D"none">
    The idea was to inherit JWT's syntax and semantics, at least on the
    wire, and add additional fields. It probably makes sense to just
    inherit the JWT registry, so we can do that.<br clear=3D"none">
    <br clear=3D"none">
    <blockquote type=3D"cite">
      <pre>When you write:

"
The endpoint MAY allow other parameters to provide further context to
the query.
"

You could instead write that the token introspection MUST ignore any
parameters from the request message it does not understand.</pre>
    </blockquote>
    <br clear=3D"none">
    Noted, will add.<br clear=3D"none">
    <br clear=3D"none">
    <blockquote type=3D"cite">
      <pre>Of course, there is the question whether any of those would be s=
ecurity
critical and hence ignoring them would cause problems?!</pre>
    </blockquote>
    <br clear=3D"none">
    Anything security critical would be provider-specific, in which case
    it wouldn't ignore them. <br clear=3D"none">
    <br clear=3D"none">
    <blockquote type=3D"cite">
      <pre>* Security

The requirement for authenticating the party issuing the introspection
request to the token introspection endpoint is justified in the security
and the privacy consideration section. The security threat is that an
attacker could use the endpoint to testing for tokens. The privacy
threat is that a resource server learns about the content of the token,
which may contain personal data. I see the former as more dangerous than
the latter since a legitimate resource server is supposed to learn about
the authorization information in the token. An attacker who had gotten
hold of tokens will not only learn about the content of the token but he
will also be able to use it to get access to the protected resource itself.

In any case, to me this sounds like mutual authentication should be
mandatory to implement. This is currently not the case. On top of that
there is single technique mandatory-to-implement outlined either (in
case someone wants to use it). That's in general not very helpful from
an interoperability point of view. Yet another thing to agree on between
the AS and the RS.</pre>
    </blockquote>
    <br clear=3D"none">
    I had similar thoughts when putting draft -01 together but didn't
    want to make a normative change like that without the WG input. I'm
    fine with strengthening this to a MUST, since as far as I'm aware
    that's how it works in all existing implementations (can anyone else
    comment on this?). I'm less comfortable with making one particular
    mechanism MTI, since I know of implementations that use either a
    special set of credentials passed just like client credentials to
    the token endpoint, or an OAuth token specifically for the
    introspection endpoint. If we do standardize on one MTI form, I'd
    suggest that we make it the OAuth bearer token.<br clear=3D"none">
    <br clear=3D"none">
    <blockquote type=3D"cite">
      <pre>* SHOULDs

This is my usual comment that any SHOULD statement should give the
reader enough information about the trade-off decision he has to make.
When should he implement something and when should he skip it?</pre>
    </blockquote>
    <br clear=3D"none">
    Noted, thanks. <br clear=3D"none">
    <br clear=3D"none">
    <blockquote type=3D"cite">
      <pre>* Minor items

You write:

"
These include using
   structured token formats such as JWT [JWT] or SAML [[ Editor's Note:
   Which SAML document should we reference here? ]] and proprietary
   inter-service communication mechanisms (such as shared databases and
   protected enterprise service buses) that convey token information.
"

Just reference the JWT since that's what we standardize.</pre>
    </blockquote>
    <br clear=3D"none">
    I'm fine with that, didn't want to offend the SAML cabal but we can
    cut it.<br clear=3D"none">
    <br clear=3D"none">
    <blockquote type=3D"cite">
      <pre>* 'Active' claim

you write:
"
   active  REQUIRED.  Boolean indicator of whether or not the presented
      token is currently active.  The authorization server determines
      whether and when a given token is in an active state.
"

Wouldn't it make more sense to return an error rather than saying that
this token is not active.</pre>
    </blockquote>
    <br clear=3D"none">
    It's not an error, really. It's a valid request and valid response
    saying that token isn't any good. It would be easy enough to change
    the returned error code on the {active:false} response, but to which
    code? The request isn't Forbidden, or Not Found (the token could
    have been found but it's been deactivated or just not available to
    the RS that's asking for it), or Unauthorized, or even a Bad
    Request. So my logic is that the response is "OK", but the content
    of the response tells you the metadata about the token, which is
    that it's not active. <br clear=3D"none">
    <br clear=3D"none">
    <blockquote type=3D"cite">
      <pre>* Capitalization

Reading through the text I see bearer token/Bearer Token, Client/client,
etc. issue.</pre>
    </blockquote>
    <br clear=3D"none">
    Thanks, still breaking old Bad Habits of capitalizing Terms In The
    Document. Tried to clean it up, will do more.<br clear=3D"none">
    <br clear=3D"none">
    <blockquote type=3D"cite">
      <pre>* AS &lt;-&gt; RS relationship

You write:
"
   Since
   OAuth 2.0 [RFC6749] defines no direct relationship between the
   authorization server and the protected resource, only that they must
   have an agreement on the tokens themselves, there have been many
   different approaches to bridging this gap.
"

I am not sure what you mean by "defines no relationship" between the AS
and the RS. Of course, there is a relationship. The AS issues tokens for
access for a specific RS. The RS needs to understand the tokens or if it
does not understand them it needs to know which AS to interact with to
learn about the content.

In a nutshell, I am not sure what you want to say with this paragraph
particularly since you state that they have to have an agreement about
the tokens.</pre>
    </blockquote>
    <br clear=3D"none">
    What I was trying to point out is that it doesn't define the nature
    of the relationship between the two components. Specifically, it
    says:<br clear=3D"none">
    <br clear=3D"none">
    <pre>   The methods used by the resource
   server to validate the access token (as well as any error responses)
   are beyond the scope of this specification but generally involve an
   interaction or coordination between the resource server and the
   authorization server.</pre>
    This spec provides one mechanism for this validation. So we could
    reference this directly if that's helpful. <div class=3D"yiv3672396586y=
qt6880335188" id=3D"yiv3672396586yqtfd29949"><br clear=3D"none">
    <br clear=3D"none">
    &nbsp; -- Justin<br clear=3D"none">
    <br clear=3D"none">
    <blockquote type=3D"cite">
      <pre>Ciao
Hannes

</pre>
      <br clear=3D"none">
      <fieldset class=3D"yiv3672396586mimeAttachmentHeader"></fieldset>
      <br clear=3D"none">
      <pre>_______________________________________________
OAuth mailing list
<a rel=3D"nofollow" shape=3D"rect" class=3D"yiv3672396586moz-txt-link-abbre=
viated" ymailto=3D"mailto:OAuth@ietf.org" target=3D"_blank" href=3D"mailto:=
OAuth@ietf.org">OAuth@ietf.org</a>
<a rel=3D"nofollow" shape=3D"rect" class=3D"yiv3672396586moz-txt-link-freet=
ext" target=3D"_blank" href=3D"https://www.ietf.org/mailman/listinfo/oauth"=
>https://www.ietf.org/mailman/listinfo/oauth</a>
</pre>
    </blockquote>
    <br clear=3D"none">
  </div></div></div><br><div class=3D"yqt6880335188" id=3D"yqtfd56170">____=
___________________________________________<br clear=3D"none">OAuth mailing=
 list<br clear=3D"none"><a shape=3D"rect" ymailto=3D"mailto:OAuth@ietf.org"=
 href=3D"mailto:OAuth@ietf.org">OAuth@ietf.org</a><br clear=3D"none"><a sha=
pe=3D"rect" href=3D"https://www.ietf.org/mailman/listinfo/oauth" target=3D"=
_blank">https://www.ietf.org/mailman/listinfo/oauth</a><br clear=3D"none"><=
/div><br><br></div>  </div> </div>  </div> </div>
------=_Part_3945674_1152611627.1417545616504--

