<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.21 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-gnap-resource-servers-02" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" obsoletes="" updates="" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.8.0 -->
  <front>
    <title>Grant Negotiation and Authorization Protocol Resource Server Connections</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-gnap-resource-servers-02"/>
    <author initials="J." surname="Richer" fullname="Justin Richer" role="editor">
      <organization>Bespoke Engineering</organization>
      <address>
        <email>ietf@justin.richer.org</email>
        <uri>https://bspk.io/</uri>
      </address>
    </author>
    <author initials="A." surname="Parecki" fullname="Aaron Parecki">
      <organization>Okta</organization>
      <address>
        <email>aaron@parecki.com</email>
        <uri>https://aaronparecki.com</uri>
      </address>
    </author>
    <author initials="F." surname="Imbault" fullname="Fabien Imbault">
      <organization>acert.io</organization>
      <address>
        <email>fabien.imbault@acert.io</email>
        <uri>https://acert.io/</uri>
      </address>
    </author>
    <date year="2022" month="July" day="11"/>
    <area>Security</area>
    <workgroup>GNAP</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>GNAP defines a mechanism for delegating authorization to a
piece of software, and conveying that delegation to the software.
This extension defines methods for resource servers (RS) to communicate
with authorization servers (AS) in an interoperable fashion.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>The core GNAP protocol does not define any one specific mechanism
for the resource server (RS) to communicate with the authorization
server (AS), allowing the connection between these components
to be solved orthogonally to the core protocol's concerns. For example,
the RS and AS roles could be fulfilled by the same piece of software with
common storage, obviating the need for any connecting protocol. However,
it is often desirable to have the RS and AS communicate at runtime
for a variety of purposes, including allowing the RS to validate and
understand the rights and privileges associated with a grant of
access represented by an access token issued by the AS, or negotiating
the capabilities of either party. These types of
connections are particularly useful for connecting an AS and RS from
different vendors, allowing interoperable distributed deployments
of GNAP-protected systems.</t>
      <t>This specification defines several means for an RS and AS to
communicate these aspects with each other, including structured
access tokens and RS-facing APIs. This specification also discusses
methods for an RS to derive a downstream token for calling another
chained RS.</t>
      <t>The means of the authorization server issuing
the access token to the client instance and the means of the client instance
presenting the access token to the resource server are the subject of the
GNAP core protocol specification <xref target="I-D.ietf-gnap-core-protocol" format="default"/>.</t>
      <section anchor="terminology" numbered="true" toc="default">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP&nbsp;14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>This document contains non-normative examples of partial and complete HTTP messages, JSON structures, URLs, query components, keys, and other elements. Some examples use a single trailing backslash <tt>\</tt> to indicate line wrapping for long values, as per <xref target="RFC8792" format="default"/>. The <tt>\</tt> character and leading spaces on wrapped lines are not part of the value.</t>
        <t>Terminology specific to GNAP is defined in the terminology section of the core specification <xref target="I-D.ietf-gnap-core-protocol" format="default"/>, and provides definitions for the protocol roles: Authorization Server (AS), Client, Resource Server (RS), Resource Owner (RO), End-user; as well as the protocol elements: Attribute, Access Token, Grant, Privilege, Protected Resource, Right, Subject, Subject Information. The same definitions are used in this document.</t>
      </section>
    </section>
    <section anchor="structure" numbered="true" toc="default">
      <name>Access Token Formats</name>
      <t>When the AS issues an access token for use at an RS, the RS
needs to have some means of understanding what the access token is for
in order to determine how to respond to the request. The core GNAP
protocol makes neither assumptions nor demands on the format or contents
of the access token, and in fact, the token format and contents are opaque
to the client instance. However, such token formats can be the topic of agreements
between the AS and RS.</t>
      <t>Self-contained structured token formats allow for the conveyance
of information between the AS and RS without requiring the RS to
call the AS at runtime as described in <xref target="introspection" format="default"/>. Structured tokens
can also be used in combination with introspection, allowing the token itself
to carry one class of information and the introspection response to carry
another.</t>
      <t>Some token formats, such as Macaroons and Biscuits, allow for
the RS to derive sub-tokens without having to call the AS
as described in <xref target="token-chaining" format="default"/>.</t>
      <t>The supported token formats can be communicated dynamically at runtime
between the AS and RS in several places.</t>
      <ul spacing="normal">
        <li>The AS can declare its supported token formats as part of RS-facing discovery <xref target="discovery" format="default"/></li>
        <li>The RS can require a specific token format be used to access a registered resource set <xref target="rs-register-resource-handle" format="default"/></li>
        <li>The AS can return the token's format in an introspection response <xref target="introspection" format="default"/></li>
      </ul>
      <t>In all places where the token format is listed explicitly, it <bcp14>MUST</bcp14> be one of the registered
values in the GNAP Token Formats Registry <xref target="iana-token-format" format="default"/>.</t>
    </section>
    <section anchor="resource-server-facing-api" numbered="true" toc="default">
      <name>Resource-Server-Facing API</name>
      <t>To facilitate runtime and dynamic connections, the AS can offer an
RS-Facing API consisting of one or more of the following optional
pieces.</t>
      <ul spacing="normal">
        <li>Discovery</li>
        <li>Introspection</li>
        <li>Token chaining</li>
        <li>Resource reference registration</li>
      </ul>
      <section anchor="discovery" numbered="true" toc="default">
        <name>RS-facing AS Discovery</name>
        <t>A GNAP AS offering RS-facing services can publish its features on
a well-known discovery document using the URL <tt>.well-known/gnap-as-rs</tt> appended
to the grant request endpoint URL.</t>
        <t>The discovery response is a JSON document <xref target="RFC8259" format="default"/> consisting of a single JSON
object with the following fields:</t>
        <dl>
          <dt>
introspection_endpoint (string):  </dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. The URL of the endpoint offering introspection.
  The location <bcp14>MUST</bcp14> be a URL <xref target="RFC3986" format="default"/>
  with a scheme component that <bcp14>MUST</bcp14> be https, a host component, and optionally,
  port, path and query components and no fragment components.
  <xref target="introspection" format="default"/></t>
          </dd>
          <dt>
token_formats_supported (array of strings):  </dt>
          <dd>
            <t>A list of token formats supported by this AS. The values in this list
  <bcp14>MUST</bcp14> be registered in the GNAP Token Format Registry. <xref target="iana-token-format" format="default"/></t>
          </dd>
          <dt>
resource_registration_endpoint (string):  </dt>
          <dd>
            <t>The URL of the endpoint offering resource registration.
  The location <bcp14>MUST</bcp14> be a URL <xref target="RFC3986" format="default"/>
  with a scheme component that <bcp14>MUST</bcp14> be https, a host component, and optionally,
  port, path and query components and no fragment components.
  <xref target="rs-register-resource-handle" format="default"/></t>
          </dd>
          <dt>
grant_request_endpoint (string):  </dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The location of the AS's grant request endpoint, used by the RS
  to derive downstream access tokens.
  The location <bcp14>MUST</bcp14> be a URL <xref target="RFC3986" format="default"/>
  with a scheme component that <bcp14>MUST</bcp14> be https, a host component, and optionally,
  port, path and query components and no fragment components. This URL <bcp14>MUST</bcp14>
  be the same URL used by client instances in support of GNAP requests.
  <xref target="token-chaining" format="default"/></t>
          </dd>
          <dt>
key_proofs_supported (array of strings)  </dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. A list of the AS's supported key
  proofing mechanisms. The values of this list correspond to possible
  values of the <tt>proof</tt> field of the key section of the request.</t>
          </dd>
        </dl>
      </section>
      <section anchor="authentication" numbered="true" toc="default">
        <name>Protecting RS requests to the AS</name>
        <t>Unless otherwise specified, the RS <bcp14>MUST</bcp14> protect its calls to the AS using any of the signature
methods defined by GNAP. This signing method <bcp14>MUST</bcp14> cover all of the appropriate
portions of the HTTP request message, including any body elements, tokens, or
headers required for functionality.</t>
        <t>The RS <bcp14>MAY</bcp14> present its keys by reference or by value in
a similar fashion to a client instance calling the AS in the core protocol
of GNAP, described in <xref target="I-D.ietf-gnap-core-protocol" format="default"/>. In the protocols defined here,
this takes the form of the resource server identifying itself using a <tt>key</tt> field or
by passing an instance identifier directly.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
"resource_server": {
    "key": {
        "proof": "httpsig",
        "jwk": {
            "kty": "EC",
            "crv": "secp256k1",
            "kid": "2021-07-06T20:22:03Z",
            "x": "-J9OJIZj4nmopZbQN7T8xv3sbeS5-f_vBNSy_EHnBZc",
            "y": "sjrS51pLtu3P4LUTVvyAIxRfDV_be2RYpI5_f-Yjivw"
        }
    }
}
]]></artwork>
        <t>or by reference:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
"resource_server": "7C7C4AZ9KHRS6X63AJAO"
]]></artwork>
        <t>The AS <bcp14>MAY</bcp14> require an RS to pre-register its keys
or could allow calls from arbitrary keys in a trust-on-first-use
model.</t>
      </section>
      <section anchor="introspection" numbered="true" toc="default">
        <name>Token Introspection</name>
        <t>The AS issues access tokens representing a set of delegated access rights
to be used at one or more RSs. The AS can offer an introspection service
to allow an RS to validate that a given access token:</t>
        <ul spacing="normal">
          <li>has been issued by the AS</li>
          <li>has not expired</li>
          <li>has not been revoked</li>
          <li>is appropriate for the RS identified in the call</li>
        </ul>
        <t>When the RS receives an access token, it can call the introspection
endpoint at the AS to get token information.
[[ <eref target="https://github.com/ietf-wg-gnap/gnap-core-protocol/issues/115">See issue #115</eref> ]]</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+       +------+       +------+
| Client |--(1)->|  RS  |       |  AS  |
|Instance|       |      |--(2)->|      |
|        |       |      |       |      |
|        |       |      |<-(3)--|      |
|        |       |      |       +------+
|        |<-(4)--|      |
+--------+       +------+
]]></artwork>
        <ol spacing="normal" type="1"><li>The client instance calls the RS with its access token.</li>
          <li>The RS introspects the access token value at the AS.
 The RS signs the request with its own key (not the client instance's
 key or the token's key).</li>
          <li>The AS validates the access token value and the Resource Server's request
 and returns the introspection response for the token.</li>
          <li>The RS fulfills the request from the client instance.</li>
        </ol>
        <t>The RS signs the request with its own key and sends the access
token as the body of the request.</t>
        <dl>
          <dt>
access_token (string):  </dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The access token value presented to the RS by the client instance.</t>
          </dd>
          <dt>
proof (string):  </dt>
          <dd>
            <t><bcp14>RECOMMENDED</bcp14>. The proofing method used by the client instance to bind the token to the RS request.</t>
          </dd>
          <dt>
resource_server (string or object):  </dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The identification used to authenticate the resource server making this call, either
  by value or by reference as described in <xref target="authentication" format="default"/>.</t>
          </dd>
          <dt>
access (array of strings/objects):  </dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. The minimum access rights required to fulfill the request. This <bcp14>MUST</bcp14> be in the
  format described in the Resource Access Rights section of <xref target="I-D.ietf-gnap-core-protocol" format="default"/>.</t>
          </dd>
        </dl>
        <artwork name="" type="" align="left" alt=""><![CDATA[
POST /introspect HTTP/1.1
Host: server.example.com
Content-Type: application/json
Signature-Input: sig1=...
Signature: sig1=...
Digest: sha256=...

{
    "access_token": "OS9M2PMHKUR64TB8N6BW7OZB8CDFONP219RP1LT0",
    "proof": "httpsig",
    "resource_server": "7C7C4AZ9KHRS6X63AJAO"
}
]]></artwork>
        <t>The AS <bcp14>MUST</bcp14> validate the access token value and determine if the token is active. An
active access token is defined as a token that</t>
        <ul spacing="normal">
          <li>was issued by the processing AS,</li>
          <li>has not been revoked,</li>
          <li>has not expired, and</li>
          <li>is appropriate for presentation at the identified RS.</li>
        </ul>
        <t>The AS responds with a data structure describing the token's
current state and any information the RS would need to validate the
token's presentation, such as its intended proofing mechanism and key
material.</t>
        <dl>
          <dt>
active (boolean):  </dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. If <tt>true</tt>, the access token presented is active,
  as defined above. If any of the criteria for an active token
  are not true, or if the AS is unable to make a
  determination (such as the token is not found), the value is
  set to <tt>false</tt> and other fields are omitted.</t>
          </dd>
        </dl>
        <t>If the access token is active, additional fields from the single access token
response structure defined in <xref target="I-D.ietf-gnap-core-protocol" format="default"/> are included. In
particular, these include the following:</t>
        <dl>
          <dt>
access (array of strings/objects):  </dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The access rights associated with this access token. This <bcp14>MUST</bcp14> be in the
  format described in the Resource Access Rights section of <xref target="I-D.ietf-gnap-core-protocol" format="default"/>.
  This array <bcp14>MAY</bcp14> be filtered or otherwise limited for consumption by the identified RS, including
  being an empty array.</t>
          </dd>
          <dt>
key (object/string):  </dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> if the token is bound. The key bound to the access token, to allow the RS
  to validate the signature of the request from the client instance. If the access
  token is a bearer token, this <bcp14>MUST NOT</bcp14> be included.</t>
          </dd>
          <dt>
flags (array of strings):  </dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. The set of flags associated with the access token.</t>
          </dd>
        </dl>
        <t>The response <bcp14>MAY</bcp14> include any additional fields defined in an access
token response and <bcp14>MUST NOT</bcp14> include the access token <tt>value</tt> itself.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
    "active": true,
    "access": [
        "dolphin-metadata", "some other thing"
    ],
    "key": {
        "proof": "httpsig",
        "jwk": {
                "kty": "RSA",
                "e": "AQAB",
                "kid": "xyz-1",
                "alg": "RS256",
                "n": "kOB5rR4Jv0GMeL...."
        }
    }
}
]]></artwork>
      </section>
      <section anchor="rs-register-resource-handle" numbered="true" toc="default">
        <name>Registering a Resource Set</name>
        <t>If the RS needs to, it can post a set of resources as described in the Resource Access Rights section of
<xref target="I-D.ietf-gnap-core-protocol" format="default"/> to the AS's resource registration endpoint along with information about
what the RS will need to validate the request.</t>
        <dl>
          <dt>
access (array of objects/strings):  </dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The list of access rights associated with the request in the format described
  in the "Resource Access Rights" section of <xref target="I-D.ietf-gnap-core-protocol" format="default"/>.</t>
          </dd>
          <dt>
resource_server (string or object):  </dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The identification used to authenticate the resource server making this call, either
  by value or by reference as described in <xref target="authentication" format="default"/>.</t>
          </dd>
          <dt>
token_format_required (string):  </dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. The token format required to access the identified resource. If the field is omitted,
  the token format is at the discretion of the AS. If the AS does not support the requested
  token format, the AS <bcp14>MUST</bcp14> return an error to the RS.</t>
          </dd>
          <dt>
token_introspection_required (boolean):  </dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. If present and set to <tt>true</tt>, the RS expects to make a token introspection request as
  described in <xref target="introspection" format="default"/>. If absent or set to <tt>false</tt>, the RS does not anticipate needing
  to make an introspection request for tokens relating to this resource set.</t>
          </dd>
        </dl>
        <t>The RS <bcp14>MUST</bcp14> identify itself with its own key and sign the
request.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
POST /resource HTTP/1.1
Host: server.example.com
Content-Type: application/json
Signature-Input: sig1=...
Signature: sig1=...
Digest: ...

{
    "access": [
        {
            "actions": [
                "read",
                "write",
                "dolphin"
            ],
            "locations": [
                "https://server.example.net/",
                "https://resource.local/other"
            ],
            "datatypes": [
                "metadata",
                "images"
            ]
        },
        "dolphin-metadata"
    ],
    "resource_server": "7C7C4AZ9KHRS6X63AJAO"

}
]]></artwork>
        <t>The AS responds with a reference appropriate to represent the
resources list that the RS presented in its request as well as
any additional information the RS might need in future requests.</t>
        <dl>
          <dt>
resource_reference (string):  </dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. A single string representing the list of resources registered in the request.
  The RS <bcp14>MAY</bcp14> make this handle available to a client instance as part of a
  discovery response as described in <xref target="I-D.ietf-gnap-core-protocol" format="default"/> or as
  documentation to client software developers.</t>
          </dd>
          <dt>
instance_id (string):  </dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. An instance identifier that the RS can use to refer to itself in future calls to
  the AS, in lieu of sending its key by value.</t>
          </dd>
          <dt>
introspection_endpoint (string):  </dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. The introspection endpoint of this AS, used to allow the RS to perform
  token introspection. <xref target="introspection" format="default"/></t>
          </dd>
        </dl>
        <artwork name="" type="" align="left" alt=""><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
    "resource_reference": "FWWIKYBQ6U56NL1"
}
]]></artwork>
      </section>
    </section>
    <section anchor="token-chaining" numbered="true" toc="default">
      <name>Deriving a downstream token</name>
      <t>Some architectures require an RS to act as a client instance and use a derived access
token for a secondary RS. Since the RS is not the same entity that made the initial grant
request, the RS is not capable of referencing or modifying the existing grant. As such,
the RS needs to request or generate a new token access token for its use at the secondary RS.
This internal secondary token is issued in the context of the incoming access token.</t>
      <t>While it is possible to use a <xref target="structure" format="default">token format</xref> that allows for the
RS to generate its own secondary token,
the AS can allow the RS to request this secondary access token using the same
process used by the original client instance to request the primary access token. Since the
RS is acting as its own client instance from the perspective of GNAP, this process
uses the same grant endpoint, request structure, and response structure as a client
instance's request.</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+       +-------+       +------+       +-------+
| Client |--(1)->|  RS1  |       |  AS  |       |  RS2  |
|Instance|       |       |--(2)->|      |       |       |
|        |       |       |<-(3)--|      |       |       |
|        |       |       |       +------+       |       |
|        |       |       |                      |       |
|        |       |       |-----------(4)------->|       |
|        |       |       |<----------(5)--------|       |
|        |<-(6)--|       |                      |       |
+--------+       +-------+                      +-------+
]]></artwork>
      <ol spacing="normal" type="1"><li>The client instance calls RS1 with an access token.</li>
        <li>RS1 presents that token to the AS to get a derived token
 for use at RS2. RS1 indicates that it has no ability
 to interact with the RO. Note that
 RS1 signs its request with its own key, not the token's
 key or the client instance's key.</li>
        <li>The AS returns a derived token to RS1 for use at RS2.</li>
        <li>RS1 calls RS2 with the token from (3).</li>
        <li>RS2 fulfills the call from RS1.</li>
        <li>RS1 fulfills the call from the original client instance.</li>
      </ol>
      <t>If the RS needs to derive a token from one presented to it, it can
request one from the AS by making a token request as described in
<xref target="I-D.ietf-gnap-core-protocol" format="default"/> and presenting the existing access token's
value in the "existing_access_token" field.</t>
      <t>Since the RS is acting as a client instance,
the RS <bcp14>MUST</bcp14> identify itself with its own key in the <tt>client</tt> field and sign the
request just as any client instance would, as described in <xref target="authentication" format="default"/>.</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
POST /tx HTTP/1.1
Host: server.example.com
Content-Type: application/json
Detached-JWS: ejy0...

{
    "access_token": {
        "access": [
            {
                "actions": [
                    "read",
                    "write",
                    "dolphin"
                ],
                "locations": [
                    "https://server.example.net/",
                    "https://resource.local/other"
                ],
                "datatypes": [
                    "metadata",
                    "images"
                ]
            },
            "dolphin-metadata"
        ]
    },
    "client": "7C7C4AZ9KHRS6X63AJAO",
    "existing_access_token": "OS9M2PMHKUR64TB8N6BW7OZB8CDFONP219RP1LT0"
}
]]></artwork>
      <t>The AS responds with a token for the downstream RS2 as described in
<xref target="I-D.ietf-gnap-core-protocol" format="default"/>. The downstream RS2 could
repeat this process as necessary for calling further RS's.</t>
    </section>
    <section anchor="Acknowledgements" numbered="true" toc="default">
      <name>Acknowledgements</name>
      <t>(TODO: the ACK section should probably be split between the documents)</t>
    </section>
    <section anchor="IANA" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>[[ TBD: There are a lot of items in the document that are expandable
through the use of value registries. ]]</t>
      <section anchor="iana-token-format" numbered="true" toc="default">
        <name>GNAP Token Format Registry</name>
        <t>This specification establishes the GNAP Token Format Registry to define token formats.</t>
        <section anchor="registry-template" numbered="true" toc="default">
          <name>Registry Template</name>
        </section>
        <section anchor="initial-registry-contents" numbered="true" toc="default">
          <name>Initial Registry Contents</name>
          <t>The table below contains the initial contents of the GNAP Token Format Registry.</t>
          <table align="center">
            <name>Initial contents of the GNAP Token Format Registry.</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Status</th>
                <th align="left">Description</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>jwt-signed</tt></td>
                <td align="left">Active</td>
                <td align="left">JSON Web Token, signed with JWS</td>
                <td align="left">
                  <xref target="RFC7519" format="default"/></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>jwt-encrypted</tt></td>
                <td align="left">Active</td>
                <td align="left">JSON Web Token, encrypted with JWE</td>
                <td align="left">
                  <xref target="RFC7519" format="default"/></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>macaroon</tt></td>
                <td align="left">Active</td>
                <td align="left">Macaroon</td>
                <td align="left">&nbsp;</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>biscuit</tt></td>
                <td align="left">Active</td>
                <td align="left">Biscuit</td>
                <td align="left">&nbsp;</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>zcap</tt></td>
                <td align="left">Active</td>
                <td align="left">ZCAP</td>
                <td align="left">&nbsp;</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
    </section>
    <section anchor="Security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>[[ TBD: There are a lot of security considerations to add. ]]</t>
      <t>All requests have to be over TLS or equivalent as per <xref target="BCP195" format="default"/>. Many handles act as
shared secrets, though they can be combined with a requirement to
provide proof of a key as well.</t>
    </section>
    <section anchor="Privacy" numbered="true" toc="default">
      <name>Privacy Considerations</name>
      <t>[[ TBD: There are a lot of privacy considerations to add. ]]</t>
      <t>When introspection is used, the AS is made aware of a particular token being used at a particular AS, and the
AS would not otherwise have insight into this.</t>
      <t>When the client instance receives information about the protecting AS from an RS, this can be used to
derive information about the resources being protected without releasing the resources themselves.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="BCP195" target="https://www.rfc-editor.org/info/bcp195">
        <front>
          <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
          <author initials="Y." surname="Sheffer">
            <organization/>
          </author>
          <author initials="R." surname="Holz">
            <organization/>
          </author>
          <author initials="P." surname="Saint-Andre">
            <organization/>
          </author>
          <date year="2015" month="May"/>
        </front>
      </reference>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner">
            <organization/>
          </author>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986">
        <front>
          <title>Uniform Resource Identifier (URI): Generic Syntax</title>
          <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee">
            <organization/>
          </author>
          <author fullname="R. Fielding" initials="R." surname="Fielding">
            <organization/>
          </author>
          <author fullname="L. Masinter" initials="L." surname="Masinter">
            <organization/>
          </author>
          <date month="January" year="2005"/>
          <abstract>
            <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="66"/>
        <seriesInfo name="RFC" value="3986"/>
        <seriesInfo name="DOI" value="10.17487/RFC3986"/>
      </reference>
      <reference anchor="RFC7519" target="https://www.rfc-editor.org/info/rfc7519">
        <front>
          <title>JSON Web Token (JWT)</title>
          <author fullname="M. Jones" initials="M." surname="Jones">
            <organization/>
          </author>
          <author fullname="J. Bradley" initials="J." surname="Bradley">
            <organization/>
          </author>
          <author fullname="N. Sakimura" initials="N." surname="Sakimura">
            <organization/>
          </author>
          <date month="May" year="2015"/>
          <abstract>
            <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties.  The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7519"/>
        <seriesInfo name="DOI" value="10.17487/RFC7519"/>
      </reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba">
            <organization/>
          </author>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259">
        <front>
          <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
          <author fullname="T. Bray" initials="T." role="editor" surname="Bray">
            <organization/>
          </author>
          <date month="December" year="2017"/>
          <abstract>
            <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format.  It was derived from the ECMAScript Programming Language Standard.  JSON defines a small set of formatting rules for the portable representation of structured data.</t>
            <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="90"/>
        <seriesInfo name="RFC" value="8259"/>
        <seriesInfo name="DOI" value="10.17487/RFC8259"/>
      </reference>
      <reference anchor="I-D.ietf-gnap-core-protocol" target="https://www.ietf.org/archive/id/draft-ietf-gnap-core-protocol-10.txt">
        <front>
          <title>Grant Negotiation and Authorization Protocol</title>
          <author fullname="Justin Richer">
            <organization>Bespoke Engineering</organization>
          </author>
          <author fullname="Aaron Parecki">
            <organization>Okta</organization>
          </author>
          <author fullname="Fabien Imbault">
            <organization>acert.io</organization>
          </author>
          <date day="11" month="July" year="2022"/>
          <abstract>
            <t>   GNAP defines a mechanism for delegating authorization to a piece of
   software, and conveying that delegation to the software.  This
   delegation can include access to a set of APIs as well as information
   passed directly to the software.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-gnap-core-protocol-10"/>
      </reference>
      <reference anchor="RFC8792" target="https://www.rfc-editor.org/info/rfc8792">
        <front>
          <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
          <author fullname="K. Watsen" initials="K." surname="Watsen">
            <organization/>
          </author>
          <author fullname="E. Auerswald" initials="E." surname="Auerswald">
            <organization/>
          </author>
          <author fullname="A. Farrel" initials="A." surname="Farrel">
            <organization/>
          </author>
          <author fullname="Q. Wu" initials="Q." surname="Wu">
            <organization/>
          </author>
          <date month="June" year="2020"/>
          <abstract>
            <t>This document defines two strategies for handling long lines in width-bounded text content.  One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line.  The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy.  Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8792"/>
        <seriesInfo name="DOI" value="10.17487/RFC8792"/>
      </reference>
    </references>
    <section anchor="history" numbered="true" toc="default">
      <name>Document History</name>
      <ul spacing="normal">
        <li>
          <t>Since -01
          </t>
          <ul spacing="normal">
            <li>Editorial and formatting fixes.</li>
          </ul>
        </li>
        <li>
          <t>-01
          </t>
          <ul spacing="normal">
            <li>Better described RS authentication.</li>
            <li>Added access token format registry.</li>
            <li>Filled out introspection protocol.</li>
            <li>Filled out resource registration protocol.</li>
            <li>Expanded RS-facing discovery mechanisms.</li>
            <li>Moved client-facing RS response back to GNAP core document.</li>
          </ul>
        </li>
        <li>
          <t>-00
          </t>
          <ul spacing="normal">
            <li>Extracted resource server section.</li>
          </ul>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
/wUXO3yn5VYAAA==

-->

</rfc>
