<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-oauth-resource-indicators-08" indexInclude="true" ipr="trust200902" number="8707" prepTime="2020-02-28T15:44:21" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-oauth-resource-indicators-08" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc8707" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="OAuth Resource Indicators">Resource Indicators for OAuth 2.0</title>
    <seriesInfo name="RFC" value="8707" stream="IETF"/>
    <author fullname="Brian Campbell" initials="B." surname="Campbell">
      <organization showOnFrontPage="true">Ping Identity</organization>
      <address>
        <email>brian.d.campbell@gmail.com</email>
      </address>
    </author>
    <author fullname="John Bradley" initials="J." surname="Bradley">
      <organization showOnFrontPage="true">Yubico</organization>
      <address>
        <email>ve7jtb@ve7jtb.com</email>
      </address>
    </author>
    <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
      <organization showOnFrontPage="true">Arm Limited</organization>
      <address>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <date month="02" year="2020"/>
    <area>Security</area>
    <workgroup>OAuth Working Group</workgroup>
    <keyword>OAuth</keyword>
    <keyword>Resource</keyword>
    <keyword>Audience</keyword>
    <abstract pn="section-abstract">
      <t pn="section-abstract-1">
        This document specifies an extension to the OAuth 2.0
        Authorization Framework defining request parameters that enable a client
        to explicitly signal to an authorization server about the identity of the protected
        resource(s) to which it is requesting access.
      </t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc8707" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t pn="section-boilerplate.2-1">
            Copyright (c) 2020 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Simplified BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Simplified BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-notation-and-c">Requirements Notation and Conventions</xref></t>
              </li>
              <li pn="section-toc.1-1.1.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.1.2.2.1"><xref derivedContent="1.2" format="counter" sectionFormat="of" target="section-1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-resource-parameter">Resource Parameter</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-authorization-request">Authorization Request</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.2.2.2.1"><xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-access-token-request">Access Token Request</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.3">
            <t keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t keepWithNext="true" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-privacy-considerations">Privacy Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t keepWithNext="true" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-oauth-parameters-registrati">OAuth Parameters Registration</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-oauth-extensions-error-regi">OAuth Extensions Error Registration</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t keepWithNext="true" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t keepWithNext="true" pn="section-toc.1-1.7.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t keepWithNext="true" pn="section-toc.1-1.8.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="Introduction" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t pn="section-1-1">
  Several years of deployment and implementation experience with the OAuth 2.0
  Authorization Framework <xref target="RFC6749" format="default" sectionFormat="of" derivedContent="RFC6749"/>
  has uncovered a need (in some circumstances, such as an authorization server
  servicing a significant number of diverse resources) for the client to
  explicitly signal to the authorization server where it intends to use the
  access token it is requesting.
</t>
      <t pn="section-1-2">
  Knowing the protected resource (a.k.a. resource server, application, API, etc.) that will process the access token enables the authorization server to construct the token
  as necessary for that entity. Properly encrypting the token (or content within the token) to a particular resource, for example,
  requires knowing which resource will receive and decrypt the token. Furthermore, various resources oftentimes have
  different requirements with respect to the data contained in (or referenced by) the token, and knowing the resource
  where the client intends to use the
  token allows the authorization server to mint the token accordingly.
</t>
      <t pn="section-1-3">
  Specific knowledge of the intended recipient(s) of the access token also helps facilitate improved
  security characteristics of the token itself.
  Bearer tokens, currently the most commonly utilized type of OAuth access token,
  allow any party in possession of a token to get access to the associated resources.
  To prevent misuse, several important security assumptions must hold, one of which is that
  an access token must only be valid for use at a
  specific protected resource and for a specific scope of access.
  <xref target="RFC6750" sectionFormat="of" section="5.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6750#section-5.2" derivedContent="RFC6750"/>, for example,
  prescribes including the token's intended recipients within the token to prevent token redirect.
  When the authorization server is informed of
  the resource that will process the access token, it can restrict the intended audience of that token
  to the given resource such that the token cannot be used successfully at other resources.
</t>
      <t pn="section-1-4">
  OAuth scope, from <xref target="RFC6749" sectionFormat="of" section="3.3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6749#section-3.3" derivedContent="RFC6749"/>, is sometimes overloaded to convey the location or identity
  of the protected resource, however, doing so isn't always feasible or
  desirable. Scope is typically about what access is being requested rather
  than where that access will be redeemed (e.g., <tt>email</tt>,
  <tt>admin:org</tt>, <tt>user_photos</tt>, <tt>channels:read</tt>, and
  <tt>channels:write</tt> are a small sample of scope values in use in the
  wild that convey only the type of access and not the location or identity).
</t>
      <t pn="section-1-5">
  In some circumstances and for some deployments, a means for the client to signal to the authorization server where it
  intends to use the access token it's requesting
  is important and useful. A number of implementations and deployments of OAuth 2.0 have already employed proprietary parameters
  toward that end.
  Going forward, this specification aspires to provide a standardized and interoperable alternative to the proprietary approaches.
</t>
      <section anchor="RNC" numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-requirements-notation-and-c">Requirements Notation and Conventions</name>
        <t pn="section-1.1-1">
    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 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/>
          <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals,
    as shown here.
        </t>
      </section>
      <section anchor="Terminology" numbered="true" toc="include" removeInRFC="false" pn="section-1.2">
        <name slugifiedName="name-terminology">Terminology</name>
        <t pn="section-1.2-1">
        This specification uses the terms "access token", "refresh token",
        "authorization server", "resource server", "authorization endpoint",
        "authorization request", "authorization response", "token endpoint",
        "grant type", "access token request", "access token response", and
        "client" defined by The OAuth 2.0 Authorization Framework <xref target="RFC6749" format="default" sectionFormat="of" derivedContent="RFC6749"/>.
        </t>
      </section>
    </section>
    <section anchor="ResourceParameter" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-resource-parameter">Resource Parameter</name>
      <t pn="section-2-1">
        In requests to the authorization server, a client <bcp14>MAY</bcp14>
        indicate the protected resource (a.k.a. resource server, application,
        API, etc.) to which it is requesting access by including the following
        parameter in the request.

      </t>
      <dl newline="true" spacing="normal" pn="section-2-2">
        <dt pn="section-2-2.1">resource</dt>
        <dd pn="section-2-2.2">
        Indicates the target service or resource to which access is being
        requested.  Its value <bcp14>MUST</bcp14> be an absolute URI, as
        specified by <xref target="RFC3986" sectionFormat="of" section="4.3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc3986#section-4.3" derivedContent="RFC3986"/>.  The URI <bcp14>MUST NOT</bcp14> include a fragment
        component. It <bcp14>SHOULD NOT</bcp14> include a query component, but
        it is recognized that there are cases that make a query component a
        useful and necessary part of the resource parameter, such as when one
        or more query parameters are used to scope requests to an application.
        The <tt>resource</tt> parameter URI value is an identifier
        representing the identity of the resource, which <bcp14>MAY</bcp14> be
        a locator that corresponds to a network-addressable location where the
        target resource is hosted.  Multiple <tt>resource</tt> parameters
        <bcp14>MAY</bcp14> be used to indicate that the requested token is
        intended to be used at multiple resources.
      </dd>
      </dl>
      <t pn="section-2-3">

        The parameter value identifies a resource to which the client is
        requesting access.  The parameter can carry the location of a
        protected resource, typically as an https URL or a more abstract
        identifier.  This enables the authorization server to apply policy as
        appropriate for the resource, such as determining the type and content
        of tokens to be issued, if and how tokens are encrypted, and applying
        appropriate audience restrictions.
      </t>
      <t pn="section-2-4">
        The client <bcp14>SHOULD</bcp14> provide the most specific URI that it
	can for the complete API or set of resources it intends to access.
        In practice, a client will know a base URI for the application or resource that it interacts with, which
        is appropriate to use as the value of the <tt>resource</tt> parameter.
        The client <bcp14>SHOULD</bcp14> use the base URI of the API as the <tt>resource</tt> parameter
        value unless specific knowledge of the resource dictates otherwise.
        For example, the value <tt>https://api.example.com/</tt> would be used
        for a resource that is the exclusive application on that host; however,
        if the resource is one of many applications on that host, something like
        <tt>https://api.example.com/app/</tt> would be used as a more specific
	value.

   Another example is when an API has multiple endpoints, e.g., when 
   System for Cross-domain Identity Management (SCIM) <xref target="RFC7644" format="default" sectionFormat="of" derivedContent="RFC7644"/> has 
   endpoints such as <tt>https://apps.example.com/scim/Users</tt>,
   <tt>https://apps.example.com/scim/Groups</tt>, and
   <tt>https://apps.example.com/scim/Schemas</tt>.  The client would use
   <tt>https://apps.example.com/scim/</tt> as the resource so that the issued
   access token is valid for all the endpoints of the SCIM API.
      </t>
      <t pn="section-2-5">
        The following error code is provided for an authorization server to indicate problems with the requested resource(s)
        in response to an authorization request or access token request. It can also be used to inform the client that
        it has requested an invalid combination of resource and scope.
      </t>
      <dl newline="true" spacing="normal" pn="section-2-6">
        <dt pn="section-2-6.1">invalid_target</dt>
        <dd pn="section-2-6.2">
            The requested resource is invalid, missing, unknown, or malformed.
          </dd>
      </dl>
      <t pn="section-2-7">
        The authorization server <bcp14>SHOULD</bcp14> audience-restrict
        issued access tokens to the resource(s) indicated by the
        <tt>resource</tt> parameter. Audience restrictions can be
        communicated in JSON Web Tokens <xref target="RFC7519" format="default" sectionFormat="of" derivedContent="RFC7519"/> with the <tt>aud</tt> claim and the top-level
        member of the same name provides the audience restriction information
        in a Token Introspection <xref target="RFC7662" format="default" sectionFormat="of" derivedContent="RFC7662"/> response. The authorization server may use
        the exact <tt>resource</tt> value as the audience or it may map from
        that value to a more general URI or abstract identifier for the given
        resource.
      </t>
      <section anchor="authz-req" numbered="true" toc="include" removeInRFC="false" pn="section-2.1">
        <name slugifiedName="name-authorization-request">Authorization Request</name>
        <t pn="section-2.1-1">
        When the <tt>resource</tt> parameter is used in an authorization
        request to the authorization endpoint, it indicates the identity of
        the protected resource(s) to which access is being requested.  When an
        access token will be returned directly from the authorization endpoint
        via the implicit flow (<xref target="RFC6749" sectionFormat="of" section="4.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6749#section-4.2" derivedContent="RFC6749">OAuth 2.0</xref>), the requested resource is applicable
        to that access token. In the code flow (<xref target="RFC6749" sectionFormat="of" section="4.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6749#section-4.1" derivedContent="RFC6749">OAuth 2.0</xref>) where an
        intermediate representation of the authorization grant (the
        authorization code) is returned from the authorization endpoint, the
        requested resource is applicable to the full authorization grant.
        </t>
        <t pn="section-2.1-2">
        For an authorization request sent as a JSON Web Token (JWT), such as
        when using the JWT Secured Authorization Request <xref target="I-D.ietf-oauth-jwsreq" format="default" sectionFormat="of" derivedContent="JWT-SAR"/>, a single
        <tt>resource</tt> parameter value is represented as a JSON string
        while multiple values are represented as an array of strings.
        </t>
        <t pn="section-2.1-3">
        If the client omits the <tt>resource</tt> parameter when requesting
        authorization, the authorization server <bcp14>MAY</bcp14> process the
        request with no specific resource or by using a predefined default
	resource value.
        Alternatively, the authorization server <bcp14>MAY</bcp14> require clients to specify the resource(s) they intend to
        access and <bcp14>MAY</bcp14> fail requests that omit the parameter with an <tt>invalid_target</tt> error.
        The authorization server might use this data to inform the user about the resources the client
        is going to access on their behalf, to apply policy (e.g., refuse the request due to unknown resources),
        and to determine the set of resources that can be used in subsequent
	access token requests.
        </t>
        <t pn="section-2.1-4">
        If the authorization server fails to parse the
        provided value(s) or does not consider the resource(s) acceptable, it should reject the request with
        an error response using the error code <tt>invalid_target</tt> as the value of the
        <tt>error</tt> parameter and can provide additional
        information regarding the reasons for the error using the
        <tt>error_description</tt>.
        </t>
        <t pn="section-2.1-5">
        An example of an authorization request where the client tells the authorization server that it wants an access token for use at
        <tt>https://api.example.com/app/</tt> is shown in <xref target="authz-endpoint-example-token" format="default" sectionFormat="of" derivedContent="Figure 1"/> below
        (extra line breaks and indentation are for display purposes only).

</t>
        <figure anchor="authz-endpoint-example-token" align="left" suppress-title="false" pn="figure-1">
          <name slugifiedName="name-implicit-flow-authorization">Implicit Flow Authorization Request</name>
          <artwork name="" type="" align="left" alt="" pn="section-2.1-6.1">
  GET /as/authorization.oauth2?response_type=token
     &amp;client_id=example-client
     &amp;state=XzZaJlcwYew1u0QBrRv_Gw
     &amp;redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
     &amp;resource=https%3A%2F%2Fapi.example.com%2Fapp%2F HTTP/1.1
  Host: authorization-server.example.com
</artwork>
        </figure>
        <t pn="section-2.1-7">
          Below in <xref target="authz-endpoint-example-code" format="default" sectionFormat="of" derivedContent="Figure 2"/> is an example of an authorization request
          using the <tt>code</tt> response type
          where the client is requesting access to the resource owner's contacts and calendar data at
          <tt>https://cal.example.com/</tt> and <tt>https://contacts.example.com/</tt>
          (extra line breaks and indentation are for display purposes only).

        </t>
        <figure anchor="authz-endpoint-example-code" align="left" suppress-title="false" pn="figure-2">
          <name slugifiedName="name-code-flow-authorization-req">Code Flow Authorization Request</name>
          <artwork name="" type="" align="left" alt="" pn="section-2.1-8.1">
  GET /as/authorization.oauth2?response_type=code
     &amp;client_id=s6BhdRkqt3
     &amp;state=tNwzQ87pC6llebpmac_IDeeq-mCR2wLDYljHUZUAWuI
     &amp;redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
     &amp;scope=calendar%20contacts
     &amp;resource=https%3A%2F%2Fcal.example.com%2F
     &amp;resource=https%3A%2F%2Fcontacts.example.com%2F HTTP/1.1
  Host: authorization-server.example.com
</artwork>
        </figure>
      </section>
      <section anchor="token-req" numbered="true" toc="include" removeInRFC="false" pn="section-2.2">
        <name slugifiedName="name-access-token-request">Access Token Request</name>
        <t pn="section-2.2-1">
      When the <tt>resource</tt> parameter is used on an access token request made to the token endpoint,
      for all grant types, it indicates the target service or protected resource where the client intends to use
      the requested access token.
        </t>
        <t pn="section-2.2-2">
      The resource value(s) that is acceptable to an authorization server in fulfilling an access token request is
      at its sole discretion based on local policy or configuration. In the case of a
      <tt>refresh_token</tt> or <tt>authorization_code</tt> grant type request, such policy may limit the acceptable resources
      to those that were originally granted by the resource owner
      or a subset thereof.

      In the <tt>authorization_code</tt> case where the requested resources
      are a subset of the set of resources originally granted, the
      authorization server will issue an access token based on that subset of
      requested resources, whereas any refresh token that is returned is bound to
      the full original grant.
        </t>
        <t pn="section-2.2-3">
      When requesting a token, the client can indicate the desired target
      service(s) where it intends to use that token by way of the
      <tt>resource</tt> parameter and can indicate the desired scope of the
      requested token using the <tt>scope</tt> parameter.  The semantics of
      such a request are that the client is asking for a token with the
      requested scope that is usable at all the requested target services.
      Effectively, the requested access rights of the token are the cartesian
      product of all the scopes at all the target services.  To the extent
      possible, when issuing access tokens, the authorization server should
      downscope the scope value associated with an access token to the value
      the respective resource is able to process and needs to know. (Here,
      "downscope" means give fewer permissions than originally authorized by
      the resource owner.) This
      further improves privacy as a list of scope values is an indication that
      the resource owner uses the multiple various services listed;
      downscoping a token to only that which is needed for a particular
      service can limit the extent to which such information is revealed
      across different services.  As specified in <xref target="RFC6749" sectionFormat="of" section="5.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6749#section-5.1" derivedContent="RFC6749"/>, the authorization server must
      indicate the access token's effective scope to the client in the
      <tt>scope</tt> response parameter value when it differs from the scope
      requested by the client.
        </t>
        <t pn="section-2.2-4">
        Following from the code flow authorization request shown in <xref target="authz-endpoint-example-code" format="default" sectionFormat="of" derivedContent="Figure 2"/>,
        the below examples show an <tt>authorization_code</tt> grant type access token request (<xref target="token-endpoint-example-ac" format="default" sectionFormat="of" derivedContent="Figure 3"/>)
        and response (<xref target="response-example-ac" format="default" sectionFormat="of" derivedContent="Figure 4"/>) where the client tells the authorization server that
        it wants the access token for use at <tt>https://cal.example.com/</tt>
        (extra line breaks and indentation are for display purposes only).

        </t>
        <figure anchor="token-endpoint-example-ac" align="left" suppress-title="false" pn="figure-3">
          <name slugifiedName="name-access-token-request-2">Access Token Request</name>
          <artwork name="" type="" align="left" alt="" pn="section-2.2-5.1">
  POST /as/token.oauth2 HTTP/1.1
  Host: authorization-server.example.com
  Authorization: Basic czZCaGRSa3F0Mzpoc3FFelFsVW9IQUU5cHg0RlNyNHlJ
  Content-Type: application/x-www-form-urlencoded

  grant_type=authorization_code
  &amp;redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
  &amp;code=10esc29BWC2qZB0acc9v8zAv9ltc2pko105tQauZ
  &amp;resource=https%3A%2F%2Fcal.example.com%2F</artwork>
        </figure>
        <figure anchor="response-example-ac" align="left" suppress-title="false" pn="figure-4">
          <name slugifiedName="name-access-token-response">Access Token Response</name>
          <artwork name="" type="" align="left" alt="" pn="section-2.2-6.1">
   HTTP/1.1 200 OK
   Content-Type: application/json
   Cache-Control: no-cache, no-store

   {
      "access_token":"eyJhbGciOiJFUzI1NiIsImtpZCI6Ijc3In0.eyJpc3MiOi
       JodHRwOi8vYXV0aG9yaXphdGlvbi1zZXJ2ZXIuZXhhbXBsZS5jb20iLCJzdWI
       iOiJfX2JfYyIsImV4cCI6MTU4ODQyMDgwMCwic2NvcGUiOiJjYWxlbmRhciIs
       ImF1ZCI6Imh0dHBzOi8vY2FsLmV4YW1wbGUuY29tLyJ9.nNWJ2dXSxaDRdMUK
       lzs-cYIj8MDoM6Gy7pf_sKrLGsAFf1C2bDhB60DQfW1DZL5npdko1_Mmk5sUf
       zkiQNVpYw",
      "token_type":"Bearer",
      "expires_in":3600,
      "refresh_token":"4LTC8lb0acc6Oy4esc1Nk9BWC0imAwH7kic16BDC2",
      "scope":"calendar"
   }</artwork>
        </figure>
        <t pn="section-2.2-7">
      A subsequent access token request, using the refresh token, where the client tells the authorization server that
      it wants an access token for use at
      <tt>https://contacts.example.com/</tt> is shown in <xref target="token-endpoint-example-rt" format="default" sectionFormat="of" derivedContent="Figure 5"/> below
      with the response shown in <xref target="response-example-rt" format="default" sectionFormat="of" derivedContent="Figure 6"/>
      (extra line breaks and indentation are for display purposes only).

</t>
        <figure anchor="token-endpoint-example-rt" align="left" suppress-title="false" pn="figure-5">
          <name slugifiedName="name-access-token-request-3">Access Token Request</name>
          <artwork name="" type="" align="left" alt="" pn="section-2.2-8.1">
  POST /as/token.oauth2 HTTP/1.1
  Host: authorization-server.example.com
  Authorization: Basic czZCaGRSa3F0Mzpoc3FFelFsVW9IQUU5cHg0RlNyNHlJ
  Content-Type: application/x-www-form-urlencoded

  grant_type=refresh_token
  &amp;refresh_token=4LTC8lb0acc6Oy4esc1Nk9BWC0imAwH7kic16BDC2
  &amp;resource=https%3A%2F%2Fcontacts.example.com%2F
</artwork>
        </figure>
        <figure anchor="response-example-rt" align="left" suppress-title="false" pn="figure-6">
          <name slugifiedName="name-access-token-response-2">Access Token Response</name>
          <artwork name="" type="" align="left" alt="" pn="section-2.2-9.1">
   HTTP/1.1 200 OK
   Content-Type: application/json
   Cache-Control: no-cache, no-store

   {
      "access_token":"eyJhbGciOiJFUzI1NiIsImtpZCI6Ijc3In0.eyJpc3MiOi
       JodHRwOi8vYXV0aG9yaXphdGlvbi1zZXJ2ZXIuZXhhbXBsZS5jb20iLCJzdWI
       iOiJfX2JfYyIsImV4cCI6MTU4ODQyMDgyNiwic2NvcGUiOiJjb250YWN0cyIs
       ImF1ZCI6Imh0dHBzOi8vY29udGFjdHMuZXhhbXBsZS5jb20vIn0.5f4yhqazc
       OSlJw4y94KPeWNEFQqj2cfeO8x4hr3YbHtIl3nQXnBMw5wREY5O1YbZED-GfH
       UowfmtNaA5EikYAw",
      "token_type":"Bearer",
      "expires_in":3600,
      "scope":"contacts"
   }</artwork>
        </figure>
      </section>
    </section>
    <section anchor="Security" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t pn="section-3-1">
        An audience-restricted access token that is legitimately presented to a
        resource cannot then be taken by that resource and presented elsewhere
        for illegitimate access to other resources.
        The <tt>resource</tt>
        parameter enables a client to indicate the protected resources where the requested access
        token will be used, which in turn enables the authorization server to apply the
        appropriate audience restrictions to the token.
      </t>
      <t pn="section-3-2">
        Some servers may host user content or be multi-tenant. In order to avoid attacks where one tenant uses an
        access token to illegitimately access resources owned by a different tenant,
        it is important to use a specific
        resource URI including any portion of the URI that identifies the
        tenant, such as a path component. This will allow access tokens to be audience-restricted in a way that identifies the tenant
        and prevents their use, due to an invalid audience, at resources owned by a different tenant.
      </t>
      <t pn="section-3-3">
        Although multiple occurrences of the <tt>resource</tt> parameter
        may be included in a token request, using only a single <tt>resource</tt> parameter
        is encouraged. 

   If a bearer token has multiple intended recipients 
   (audiences), then the token is valid at more than one 
   protected resource and can be used by any one of those
   resources to access any of the others.

Thus, a high degree of trust between the involved parties
        is needed when using access tokens with multiple audiences. Furthermore, an authorization server may
        be unwilling or unable to fulfill a token request with multiple resources.
      </t>
      <t pn="section-3-4">
        Whenever feasible, the <tt>resource</tt> parameter
        should correspond to the network-addressable location of the protected resource.
        This makes it possible for the client to validate that the resource being requested controls the corresponding 
        network location, reducing the risk of malicious endpoints obtaining tokens meant for other resources.
        If the <tt>resource</tt> parameter contains an abstract identifier, it is the client's 
        responsibility to validate out of band that any network endpoint to which tokens are sent are the intended audience for that identifier.
      </t>
    </section>
    <section anchor="Privacy" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-privacy-considerations">Privacy Considerations</name>
      <t pn="section-4-1">
        In typical OAuth deployments the authorization sever is in a position to observe and track a significant
        amount of user and client behavior. It is largely just inherent to the nature of OAuth, and this document
        does little to affect that. In some cases, however, such as when access token introspection is not being
        used, use of the resource parameter defined herein may allow for tracking behavior at a somewhat more
        granular and specific level than would otherwise be possible in its absence.
      </t>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-oauth-parameters-registrati">OAuth Parameters Registration</name>
        <t pn="section-5.1-1">
          This specification updates the following value
          in the IANA "OAuth Parameters" registry
          <xref target="IANA.OAuth.Parameters" format="default" sectionFormat="of" derivedContent="IANA.OAuth.Parameters"/>
          established by <xref target="RFC6749" format="default" sectionFormat="of" derivedContent="RFC6749"/>.
        </t>
        <dl spacing="compact" newline="false" pn="section-5.1-2">
          <dt pn="section-5.1-2.1">Parameter name:</dt>
          <dd pn="section-5.1-2.2">resource</dd>
          <dt pn="section-5.1-2.3">Parameter usage location:</dt>
          <dd pn="section-5.1-2.4">authorization request, token request</dd>
          <dt pn="section-5.1-2.5">Change controller:</dt>
          <dd pn="section-5.1-2.6">IESG</dd>
          <dt pn="section-5.1-2.7">Specification document(s):</dt>
          <dd pn="section-5.1-2.8">RFC 8707</dd>
        </dl>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-oauth-extensions-error-regi">OAuth Extensions Error Registration</name>
        <t pn="section-5.2-1">
          This specification updates the following error in
          the IANA "OAuth Extensions Error Registry"
          <xref target="IANA.OAuth.Parameters" format="default" sectionFormat="of" derivedContent="IANA.OAuth.Parameters"/>
          established by <xref target="RFC6749" format="default" sectionFormat="of" derivedContent="RFC6749"/>.
        </t>
        <dl spacing="compact" newline="false" pn="section-5.2-2">
          <dt pn="section-5.2-2.1">Error name:</dt>
          <dd pn="section-5.2-2.2">invalid_target</dd>
          <dt pn="section-5.2-2.3">Error usage location:</dt>
          <dd pn="section-5.2-2.4">implicit grant error response, token error response</dd>
          <dt pn="section-5.2-2.5">Related protocol extension:</dt>
          <dd pn="section-5.2-2.6">resource parameter</dd>
          <dt pn="section-5.2-2.7">Change controller:</dt>
          <dd pn="section-5.2-2.8">IESG</dd>
          <dt pn="section-5.2-2.9">Specification document(s):</dt>
          <dd pn="section-5.2-2.10">RFC 8707</dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-oauth-jwsreq" to="JWT-SAR"/>
    <references pn="section-6">
      <name slugifiedName="name-references">References</name>
      <references pn="section-6.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="IANA.OAuth.Parameters" target="https://www.iana.org/assignments/oauth-parameters" quoteTitle="true" derivedAnchor="IANA.OAuth.Parameters">
          <front>
            <title>OAuth Parameters</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <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" quoteTitle="true" derivedAnchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author initials="T." surname="Berners-Lee" fullname="T. Berners-Lee">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Fielding" fullname="R. Fielding">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Masinter" fullname="L. Masinter">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2005" month="January"/>
            <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="RFC6749" target="https://www.rfc-editor.org/info/rfc6749" quoteTitle="true" derivedAnchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author initials="D." surname="Hardt" fullname="D. Hardt" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2012" month="October"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf.  This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <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>
      </references>
      <references pn="section-6.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="I-D.ietf-oauth-jwsreq" quoteTitle="true" target="https://tools.ietf.org/html/draft-ietf-oauth-jwsreq-20" derivedAnchor="JWT-SAR">
          <front>
            <title>The OAuth 2.0 Authorization Framework: JWT Secured Authorization Request (JAR)</title>
            <author initials="N" surname="Sakimura" fullname="Nat Sakimura">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J" surname="Bradley" fullname="John Bradley">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="October" day="21" year="2019"/>
            <abstract>
              <t>The authorization request in OAuth 2.0 described in RFC 6749 utilizes query parameter serialization, which means that Authorization Request parameters are encoded in the URI of the request and sent through user agents such as web browsers.  While it is easy to implement, it means that (a) the communication through the user agents are not integrity protected and thus the parameters can be tainted, and (b) the source of the communication is not authenticated.  Because of these weaknesses, several attacks to the protocol have now been put forward.  This document introduces the ability to send request parameters in a JSON Web Token (JWT) instead, which allows the request to be signed with JSON Web Signature (JWS) and encrypted with JSON Web Encryption (JWE) so that the integrity, source authentication and confidentiality property of the Authorization Request is attained. The request can be sent by value or by reference.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-jwsreq-20"/>
          <format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-oauth-jwsreq-20.txt"/>
          <format type="PDF" target="http://www.ietf.org/internet-drafts/draft-ietf-oauth-jwsreq-20.pdf"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC6750" target="https://www.rfc-editor.org/info/rfc6750" quoteTitle="true" derivedAnchor="RFC6750">
          <front>
            <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Hardt" fullname="D. Hardt">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2012" month="October"/>
            <abstract>
              <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources.  Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key).  To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6750"/>
          <seriesInfo name="DOI" value="10.17487/RFC6750"/>
        </reference>
        <reference anchor="RFC7519" target="https://www.rfc-editor.org/info/rfc7519" quoteTitle="true" derivedAnchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="N." surname="Sakimura" fullname="N. Sakimura">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="May"/>
            <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="RFC7644" target="https://www.rfc-editor.org/info/rfc7644" quoteTitle="true" derivedAnchor="RFC7644">
          <front>
            <title>System for Cross-domain Identity Management: Protocol</title>
            <author initials="P." surname="Hunt" fullname="P. Hunt" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Grizzle" fullname="K. Grizzle">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Ansari" fullname="M. Ansari">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Wahlstroem" fullname="E. Wahlstroem">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Mortimore" fullname="C. Mortimore">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="September"/>
            <abstract>
              <t>The System for Cross-domain Identity Management (SCIM) specification is an HTTP-based protocol that makes managing identities in multi-domain scenarios easier to support via a standardized service. Examples include, but are not limited to, enterprise-to-cloud service providers and inter-cloud scenarios.  The specification suite seeks to build upon experience with existing schemas and deployments, placing specific emphasis on simplicity of development and integration, while applying existing authentication, authorization, and privacy models.  SCIM's intent is to reduce the cost and complexity of user management operations by providing a common user schema, an extension model, and a service protocol defined by this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7644"/>
          <seriesInfo name="DOI" value="10.17487/RFC7644"/>
        </reference>
        <reference anchor="RFC7662" target="https://www.rfc-editor.org/info/rfc7662" quoteTitle="true" derivedAnchor="RFC7662">
          <front>
            <title>OAuth 2.0 Token Introspection</title>
            <author initials="J." surname="Richer" fullname="J. Richer" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="October"/>
            <abstract>
              <t>This specification defines a method for a protected resource to query an OAuth 2.0 authorization server to determine the active state of an OAuth 2.0 token and to determine meta-information about this token. OAuth 2.0 deployments can use this method to convey information about the authorization context of the token from the authorization server to the protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7662"/>
          <seriesInfo name="DOI" value="10.17487/RFC7662"/>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgements" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t pn="section-appendix.a-1">
        This specification was developed within the OAuth Working Group
        under the chairmanship of <contact fullname="Hannes Tschofenig"/>
        and <contact fullname="Rifaat Shekh-Yusef"/> with <contact fullname="Eric  Rescorla"/>, <contact fullname="Benjamin Kaduk"/>, and <contact fullname="Roman Danyliw"/>
        serving as Security Area Directors.  Additionally, the following
        individuals contributed ideas, feedback, and wording
        that helped shape this specification:</t>
      <t pn="section-appendix.a-2">
        <contact fullname="Vittorio Bertocci"/>,
        <contact fullname="Sergey Beryozkin"/>,
        <contact fullname="Roman Danyliw"/>,
        <contact fullname="William Denniss"/>,
        <contact fullname="Vladimir Dzhuvinov"/>,
        <contact fullname="George Fletcher"/>,
        <contact fullname="Dick Hardt"/>,
        <contact fullname="Phil Hunt"/>,
        <contact fullname="Michael Jones"/>,
        <contact fullname="Benjamin Kaduk"/>,
        <contact fullname="Barry Leiba"/>,
        <contact fullname="Torsten Lodderstedt"/>,
        <contact fullname="Anthony Nadalin"/>,
        <contact fullname="Justin Richer"/>,
        <contact fullname="Adam Roach"/>,
        <contact fullname="Nat Sakimura"/>,
        <contact fullname="Rifaat Shekh-Yusef"/>,
        <contact fullname="Filip Skokan"/>,
        <contact fullname="Éric Vyncke"/>,
        and
        <contact fullname="Hans Zandbelt"/>.
      </t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Brian Campbell" initials="B." surname="Campbell">
        <organization showOnFrontPage="true">Ping Identity</organization>
        <address>
          <email>brian.d.campbell@gmail.com</email>
        </address>
      </author>
      <author fullname="John Bradley" initials="J." surname="Bradley">
        <organization showOnFrontPage="true">Yubico</organization>
        <address>
          <email>ve7jtb@ve7jtb.com</email>
        </address>
      </author>
      <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
        <organization showOnFrontPage="true">Arm Limited</organization>
        <address>
          <email>hannes.tschofenig@gmx.net</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
