<?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.2.13 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent" [
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3966 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3966.xml">
<!ENTITY RFC5322 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5322.xml">
<!ENTITY RFC4949 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4949.xml">
<!ENTITY RFC5646 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5646.xml">
<!ENTITY RFC6749 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml">
<!ENTITY RFC6750 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6750.xml">
<!ENTITY RFC7515 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7515.xml">
<!ENTITY RFC7516 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7516.xml">
<!ENTITY RFC7519 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml">
<!ENTITY RFC7540 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7540.xml">
<!ENTITY RFC8259 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
<!ENTITY RFC8446 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
<!ENTITY RFC7049 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7049.xml">
<!ENTITY RFC8252 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8252.xml">
<!ENTITY RFC8152 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8152.xml">
<!ENTITY RFC8323 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8323.xml">
<!ENTITY RFC8628 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8628.xml">
]>
<rfc ipr="trust200902" docName="draft-hardt-xauth-protocol-07" category="std" consensus="true" obsoletes="" updates="" submissionType="IETF" xml:lang="en" version="3">
  <front>
    <title>The Grant Negotiation and Authorization Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-hardt-xauth-protocol-07"/>
    <author initials="D." surname="Hardt" fullname="Dick Hardt" role="editor">
      <organization>SignIn.Org</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>dick.hardt@gmail.com</email>
      </address>
    </author>
    <date year="2020" month="June" day="06"/>
    <area>Security</area>
    <abstract>
      <t>Client software often desires resources or identity claims that are independent of the client. This protocol allows a user and/or resource owner to delegate resource authorization and/or release of identity claims to a server. Client software can then request access to resources and/or identity claims by calling the server. The server acquires consent and authorization from the user and/or resource owner if required, and then returns to the client software the authorization and identity claims that were approved. This protocol can be extended to support alternative authorizations, claims, interactions, and client authentication mechanisms.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>This protocol supports the widely deployed use cases supported by OAuth 2.0 <xref target="RFC6749" format="default"/> &amp; <xref target="RFC6750" format="default"/>, and OpenID Connect <xref target="OIDC" format="default"/>, an extension of OAuth 2.0, as well as other extensions, and other use cases that are not supported, such as acquiring multiple access tokens at the same time, and updating the request during user interaction. This protocol also addresses many of the security issues in OAuth 2.0 by having parameters securely sent directly between parties, rather than via a browser redirection.</t>
      <t>The technology landscape has changed since OAuth 2.0 was initially drafted. More interactions happen on mobile devices than PCs. Modern browsers now directly support asymetric cryptographic functions. Standards have emerged for signing and encrypting tokens with rich payloads (JOSE) that are widely deployed.</t>
      <t>Additional use cases are now being served with extensions to OAuth 2.0: OpenID Connect added support for authentication and releasing identity claims; <xref target="RFC8252" format="default"/> added support for native apps; <xref target="RFC8628" format="default"/> added support for smart devices; and support for <xref target="browser_based_apps" format="default"/> is being worked on. There are numerous efforts on adding proof-of-possession to resource access.</t>
      <t>This protocol simplifies the overall architectural model, takes advantage of today's technology landscape, provides support for all the widely deployed use cases, and offers numerous extension points.</t>
      <t>While this protocol is not backwards compatible with OAuth 2.0, it strives to minimize the migration effort.</t>
      <t>This protocol centers around a Grant, a representation of the collection of user identity claims and/or resource authorizations the Client is requesting, and the resulting identity claims and/or resource authorizations granted by the Grant Server.</t>
      <t>[Editor: suggestions on how to improve this are welcome!]</t>
      <t>[Editor: suggestions for other names than XAuth are welcome!]</t>
      <section anchor="parties" numbered="true" toc="default">
        <name>Parties</name>
        <t>The parties and their relationships to each other:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+                           +------------+
|  User  |                           |  Resource  |
|        |                           | Owner (RO) |
+--------+                           +------------+
    |      \                       /      |
    |       \                     /       |
    |        \                   /        |
    |         \                 /         |
+--------+     +---------------+     +------------+
| Client |---->|     Grant     | _ _ |  Resource  |
|        |<----|  Server (GS)  |     |   Server   |
|        |     +---------------+     |    (RS)    |
|        |-------------------------->|            |
|        |<--------------------------|            |
+--------+                           +------------+
]]></artwork>
        <ul spacing="normal">
          <li>
            <strong>User</strong> - the person interacting with the Client who has delegated access to identity claims about themselves to the Grant Server (GS), and can authenticate at the GS.</li>
          <li>
            <strong>Client</strong> - requests a Grant from the GS to access one or more Resource Servers (RSs), and/or identity claims about the User. The Client can create, verify, retrieve, update, and delete a Grant. When a Grant is created, the Client receives from the GS the granted access token(s) for the RS(s), and identity claims about the User. The Client uses an access token to access the RS.  There are two types of Clients: Registered Clients and Dynamic Clients. All Clients have a key to authenticate with the Grant Server.</li>
          <li>
            <strong>Registered Client</strong> - a Client that has registered with the GS and has a Client ID to identify itself, and can prove it possesses a key that is linked to the Client ID. The GS may have different policies for what different Registered Clients can request. A Registered Client MAY be interacting with a User.</li>
          <li>
            <strong>Dynamic Client</strong> - a Client that has not been registered with the GS, and each instance will generate it's own key pair so it can prove it is the same instance of the Client on subsequent requests, and to requests of a Resource Server that require proof-of-possession access. A single-page application with no active server component is an example of a Dynamic Client. A Dynamic Client MUST be interacting with a User.</li>
          <li>
            <strong>Grant Server</strong> (GS) - manages Grants for access to APIs at RSs and release of identity claims about the User. The GS may require explicit consent from the RO or User to provide these to the Client. A GS may support Registered Clients and/or Dynamic Clients. The GS is a combination of the Authorization Server (AS) in OAuth 2.0, and the OpenID Provider (OP) in OpenID Connect.</li>
          <li>
            <strong>Resource Server</strong> (RS) - has API resources that require an access token from the GS. Some, or all of the resources are owned by the Resource Owner.</li>
          <li>
            <strong>Resource Owner</strong> (RO) - owns resources at the RS, and has delegated RS access management to the GS. The RO may be the same entity as the User, or may be a different entity that the GS interacts with independently. GS and RO interactions are out of scope of this document.</li>
        </ul>
      </section>
      <section anchor="reused-terms" numbered="true" toc="default">
        <name>Reused Terms</name>
        <ul spacing="normal">
          <li>
            <strong>access token</strong> - an access token as defined in <xref target="RFC6749" format="default"/> Section 1.4.</li>
          <li>
            <strong>Claim</strong> - a Claim as defined in <xref target="OIDC" format="default"/> Section 5. Claims may be issued by the GS, or by other issuers.</li>
          <li>
            <strong>Client ID</strong> - a GS unique identifier for a Registered Client as defined in <xref target="RFC6749" format="default"/> Section 2.2.</li>
          <li>
            <strong>ID Token</strong> - an ID Token as defined in <xref target="OIDC" format="default"/> Section 2.</li>
          <li>
            <strong>NumericDate</strong> - a NumericDate as defined in <xref target="RFC7519" format="default"/> Section 2.</li>
          <li>
            <strong>authN</strong> - short for authentication.</li>
          <li>
            <strong>authZ</strong> - short for authorization.</li>
        </ul>
      </section>
      <section anchor="new-terms" numbered="true" toc="default">
        <name>New Terms</name>
        <ul spacing="normal">
          <li>
            <strong>GS URI</strong> - the endpoint at the GS the Client calls to create a Grant, and is the unique identifier for the GS.</li>
          <li>
            <strong>Grant</strong> - the user identity claims and/or RS authorizations the GS has granted to the Client.</li>
          <li>
            <strong>Grant URI</strong>  - the URI that represents the Grant. The Grant URI MUST start with the GS URI.</li>
          <li>
            <strong>Authorization</strong> - the access granted by the RO to the Client. Contains an access token.</li>
          <li>
            <strong>Authorization URI</strong> (AZ URI) - the URI that represents the Authorization the Client was granted by the RO. The AZ URI MUST start with the GS URI. The AZ URI is used to read, update, and delete an access token.</li>
          <li>
            <strong>Interaction</strong> - how the Client directs the User to interact with the GS. This document defines the interaction modes redirect, indirect, and user_code in <xref target="InteractionModes" format="default"/></li>
          <li>
            <strong>Client Handle</strong> - a GS unique identifier for a Dynamic Client for the Dynamic Client to refer to itself in subsequent requests.</li>
        </ul>
      </section>
      <section anchor="notational-conventions" numbered="true" toc="default">
        <name>Notational Conventions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
specification are to be interpreted as described in <xref target="RFC2119" format="default"/>.</t>
        <t>Certain security-related terms are to be understood in the sense
defined in <xref target="RFC4949" format="default"/>.  These terms include, but are not limited to,
"attack", "authentication", "authorization", "certificate",
"confidentiality", "credential", "encryption", "identity", "sign",
"signature", "trust", "validate", and "verify".</t>
        <t>Unless otherwise noted, all the protocol parameter names and values
are case sensitive.</t>
        <t>Some protocol parameters are parts of a JSON document, and are referred to in JavaScript notation. For example, foo.bar refers to the "bar" boolean attribute in the "foo" object in the following example JSON document:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "foo" : {
        "bar": true
    }
}
]]></artwork>
      </section>
    </section>
    <section anchor="sequences" numbered="true" toc="default">
      <name>Sequences</name>
      <t>Before any sequence, the Client needs to be manually or programmatically configured for the GS. See GS Options <xref target="GSoptions" format="default"/> for details on acquiring GS metadata.</t>
      <t>[Editor: a plethora of sequences are included to illustrate all the different use cases that are supported. Many sequences are similar, and show a slightly different sequence that can support different use cases. These could potentially be moved to a use case document in the future.]</t>
      <section anchor="CreateVerifyGrantSeq" numbered="true" toc="default">
        <name>Create and Verify Grant</name>
        <t>A Dynamic Client wants a Grant from the User using a Redirect Interaction:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+                                  +-------+
| Client |                                  |  GS   |
|        |--(1)--- Create Grant ----------->|       |
|        |                                  |       |
|        |<--- Interaction Response ---(2)--|       |         +------+
|        |                                  |       |         | User |
|        |--(3)--- Interaction Transfer --- | - - - | ------->|      |
|        |                                  |       |         |      |
|        |                                  |       |<--(4)-->|      |
|        |                                  |       |  authN  |      |
|        |                                  |       |<--(5)-->|      |
|        |                                  |       |  authZ  |      |
|        |<--- Interaction Transfer ---(6)- | - - - | --------|      |
|        |                                  |       |         |      |
|        |--(7)--- Verify Grant ----------->|       |         +------+
|        |                                  |       |
|        |<--------- Grant Response ---(8)--|       |
|        |                                  |       |
+--------+                                  +-------+
]]></artwork>
        <ol spacing="normal" type="1">
          <li>
            <strong>Create Grant</strong> The Client creates a Request JSON document <xref target="RequestJSON" format="default"/> and makes a Create Grant request (<xref target="CreateGrant" format="default"/>) by sending the JSON with an HTTP POST to the GS URI.</li>
          <li>
            <strong>Interaction Response</strong>  The GS determines that interaction with the User is required and sends an Interaction Response (<xref target="InteractionResponse" format="default"/>) containing the Grant URI and an interaction object.</li>
          <li>
            <strong>Interaction Transfer</strong> The Client redirects the User to the Redirect URI at the GS.</li>
          <li>
            <strong>User Authentication</strong> The GS authenticates the User.</li>
          <li>
            <strong>User Authorization</strong> If required, the GS interacts with the User to determine which identity claims and/or authorizations in the Grant Request are to be granted.</li>
          <li>
            <strong>Interaction Transfer</strong> The GS redirects the User to the Completion URI at the Client, passing an Interaction Nonce.</li>
          <li>
            <strong>Read Grant</strong> The Client creates a JSON document containing a verification object <xref target="VerificationObject" format="default"/> and does a Verify Grant <xref target="VerifyGrant" format="default"/> request by HTTP PATCH with the document to the Grant URI.</li>
          <li>
            <strong>Grant Response</strong> The GS responds with a Grant Response (<xref target="GrantResponse" format="default"/>).</li>
        </ol>
      </section>
      <section anchor="CreateReadGrantSeq" numbered="true" toc="default">
        <name>Create and Read Grant - Redirect</name>
        <t>A Registered Client wants a Grant from the User using a Redirect Interaction:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+                                  +-------+
| Client |                                  |  GS   |
|        |--(1)--- Create Grant ----------->|       |
|        |                                  |       |
|        |<--- Interaction Response ---(2)--|       |
|        |                                  |       |
|        |--(3)--- Read Grant ------------->|       |         +------+
|        |                                  |       |         | User |
|        |--(4)--- Interaction Transfer --- | - - - | ------->|      |
|        |                                  |       |         |      |
|        |                                  |       |<--(5)-->|      |
|        |                                  |       |  authN  |      |
|        |                                  |       |<--(6)-->|      |
|        |                                  |       |  authZ  |      |
|        |<--------- Grant Response ---(7)--|       |         |      |
|        |                                  |       |         |      |
|        |<--- Interaction Transfer ---(8)- | - - - | --------|      |
|        |                                  |       |         |      |
+--------+                                  +-------+         +------+
]]></artwork>
        <ol spacing="normal" type="1">
          <li>
            <strong>Create Grant</strong> The Client makes a Create Grant request (<xref target="CreateGrant" format="default"/>) to the GS URI.</li>
          <li>
            <strong>Interaction Response</strong>  The GS determines that interaction with the User is required and sends an Interaction Response (<xref target="InteractionResponse" format="default"/>) containing the Grant URI and an interaction object.</li>
          <li>
            <strong>Read Grant</strong> The Client does an HTTP GET of the Grant URI (<xref target="ReadGrant" format="default"/>).</li>
          <li>
            <strong>Interaction Transfer</strong> The Client transfers User interaction to the GS.</li>
          <li>
            <strong>User Authentication</strong> The GS authenticates the User.</li>
          <li>
            <strong>User Authorization</strong> If required, the GS interacts with the User to determine which identity claims and/or authorizations in the Grant Request are to be granted.</li>
          <li>
            <strong>Grant Response</strong> The GS responds with a Grant Response (<xref target="GrantResponse" format="default"/>).</li>
          <li>
            <strong>Interaction Transfer</strong> The GS redirects the User to the Completion URI of the Client. The Client verifies it is the same User that it transferred to the GS.</li>
        </ol>
      </section>
      <section anchor="CreateReadGrantIndirectSeq" numbered="true" toc="default">
        <name>Create and Read Grant - Indirect</name>
        <t>A Registered Client wants a Grant from the User using an Indirect Interaction:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+                                  +-------+
| Client |                                  |  GS   |
|        |--(1)--- Create Grant ----------->|       |
|        |                                  |       |
|        |<--- Interaction Response ---(2)--|       |
|        |                                  |       |
|        |--(3)--- Read Grant ------------->|       |         +------+
|        |                                  |       |         | User |
|        |--(4)--- Interaction Transfer --- | - - - | ------->|      |
|        |                                  |       |         |      |
|        |                                  |       |<--(5)-->|      |
|        |                                  |       |  authN  |      |
|        |                                  |       |<--(6)-->|      |
|        |                                  |       |  authZ  |      |
|        |<--------- Grant Response ---(7)--|       |         |      |
+--------+                                  |       |         |      |
                                            |       |         |      |
+--------+                                  |       |         |      |
|  Info  |<--- Interaction Transfer ---(8)- | - - - | --------|      |
| Server |                                  |       |         |      |
+--------+                                  +-------+         +------+
]]></artwork>
        <t>The sequence is the same except:</t>
        <ul spacing="normal">
          <li>In step (4) the User either scans a bar code or uses a separate device to navigate to the Code URI and enters the User Code.</li>
          <li>In step (8) the GS redirects the User to the Information URI provided by the Client.</li>
        </ul>
      </section>
      <section anchor="reciprocal-grant" numbered="true" toc="default">
        <name>Reciprocal Grant</name>
        <t>Party A and Party B are both a Client and a GS, and each Client would like a Grant for the other GS. The sequence starts off the same as in <xref target="CreateReadGrantSeq" format="default"/>, but Party B makes a Create Grant Request before sending a Grant Response:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
                Party A                                    Party B
               +--------+                                 +--------+
               | Client |                                 |   GS   |
               ~ ~ ~ ~ ~ ~     Same as steps 1 - 6 of    ~ ~ ~ ~ ~ ~
+------+       |        |   Create and Read Grant above   |        |
| User |       |        |                                 |        |
|      |       |   GS   |<--------- Create Grant ---(1)---| Client |
|      |       |        |                                 |        |
|      |       |        |<------- Grant Response ---(2)---|        |
|      |       |        |                                 |        |
|      |<----- | - - -  | -- Interaction Transfer --(3)---|        |
|      |       |        |                                 |        |
|      |<-(4)->|        |                                 |        |
|      | AuthZ |        |                                 |        |
+------+       |   GS   |--(5)--- Grant Response -------->| Client |
               |        |                                 |        |
               +--------+                                 +--------+
]]></artwork>
        <ol spacing="normal" type="1">
          <li>
            <strong>Create Grant</strong> Party B creates a Grant Request (<xref target="CreateGrant" format="default"/>) with user.reciprocal set to the Party B Grant URI that will be in the step (2) Grant Response, and sends it with an HTTP POST to the Party A GS URI. This enables Party A to link the reciprocal Grants.</li>
          <li>
            <strong>Grant Response</strong> Party B responds to Party A's Create Grant Request with a Grant Response that includes the Party B Grant URI.</li>
          <li>
            <strong>Interaction Transfer</strong> Party B redirects the User to the Completion URI at Party A.</li>
          <li>
            <strong>User Authorization</strong> If required, Party A interacts with the User to determine which identity claims and/or authorizations in Party B's Create Grant Request are to be granted.</li>
          <li>
            <strong>Grant Response</strong> Party A responds with a Grant Response (<xref target="GrantResponse" format="default"/>).</li>
        </ol>
      </section>
      <section anchor="GSInitiatedGrantSeq" numbered="true" toc="default">
        <name>GS Initiated Grant</name>
        <t>The User is at the GS, and wants to interact with a Registered Client. The GS can redirect the User to the Client:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+                                  +-------+         +------+
| Client |                                  |  GS   |         | User |
|        |                                  |       |<--(1)-->|      |
|        |                                  |       |         |      |
|        |<----- GS Initiation Redirect --- | - - - | --(2)---|      |
|   (3)  |                                  |       |         |      |
| verify |--(4)--- Read Grant ------------->|       |         +------+
|        |                                  |       |
|        |<--------- Grant Response --(5)---|       |
|        |                                  |       |
+--------+                                  +-------+
]]></artwork>
        <ol spacing="normal" type="1">
          <li>
            <strong>User Interaction</strong> The GS interacts with the User to determine the Client and what identity claims and authorizations to provide. The GS creates a Grant and corresponding Grant URI.</li>
          <li>
            <strong>GS Initiated Redirect</strong> The GS redirects the User to the Client's interaction_uri, adding a query parameter with the name "Grant URI" and the value being the URL encoded Grant URI.</li>
          <li>
            <strong>Client Verification</strong> The Client verifies the Grant URI is from an GS the Client trusts, and starts with the GS GS URI.</li>
          <li>
            <strong>Read Grant</strong> The Client does an HTTP GET of the Grant URI (<xref target="ReadGrant" format="default"/>).</li>
          <li>
            <strong>Grant Response</strong> The GS responds with a Grant Response (<xref target="GrantResponse" format="default"/>).</li>
        </ol>
        <t>See <xref target="GSInitiatedGrant" format="default"/> for more details.</t>
      </section>
      <section anchor="CreateAndUpdate" numbered="true" toc="default">
        <name>Create and Update</name>
        <t>The Client requests an identity claim to determine who the User is. Once the Client learns who the User is, and the Client updates the Grant for additional identity claims which the GS prompts the User for and returns to the Client. Once those are received, the Client updates the Grant with the remaining identity claims required.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+                                  +-------+
| Client |                                  |  GS   |
|        |--(1)--- Create Grant ----------->|       |
|        |      interaction.keep:true       |       |
|        |                                  |       |
|        |<--- Interaction Response ---(2)--|       |
|        |                                  |       |
|        |--(3)--- Read Grant ------------->|       |         +------+
|        |                                  |       |         | User |
|        |--(4)--- Interaction Transfer --- | - - - | ------->|      |
|        |                                  |       |         |      |
|        |                                  |       |<--(5)-->|      |
|        |                                  |       |  authN  |      |
|        |<--------- Grant Response ---(6)--|       |         |      |
|  (7)   |                                  |       |         |      |
|  eval  |--(8)--- Update Grant ----------->|       |         |      |
|        |      interaction.keep:true       |       |<--(9)-->|      |
|        |                                  |       |  authZ  |      |
|        |<--------- Grant Response --(10)--|       |         |      |
|  (11)  |                                  |       |         |      |
|  eval  |--(12)-- Update Grant ----------->|       |         |      |
|        |  interaction.keep:false          |       |<--(13)->|      |
|        |                                  |       |  authZ  |      |
|        |                                  |       |         |      |
|        |<--- Interaction Transfer --(14)- | - - - | --------|      |
|        |                                  |       |         |      |
|        |<--------- Grant Response --(15)--|       |         +------+
|        |                                  |       |
+--------+                                  +-------+
]]></artwork>
        <ol spacing="normal" type="1">
          <li>
            <strong>Create Grant</strong> The Client creates a Grant Request (<xref target="CreateGrant" format="default"/>) including an identity claim and interaction.keep:true, and sends it with an HTTP POST to the GS GS URI.</li>
          <li>
            <strong>Interaction Response</strong>  The GS sends an Interaction Response (<xref target="InteractionResponse" format="default"/>) containing the Grant URI, an interaction object, and interaction.keep:true.</li>
          <li>
            <strong>Read Grant</strong> The Client does an HTTP GET of the Grant URI (<xref target="ReadGrant" format="default"/>).</li>
          <li>
            <strong>Interaction Transfer</strong> The Client transfers User interaction to the GS.</li>
          <li>
            <strong>User Authentication</strong> The GS authenticates the User.</li>
          <li>
            <strong>Grant Response</strong> The GS responds with a Grant Response (<xref target="GrantResponse" format="default"/>) including the identity claim from User authentication and interaction.keep:true.</li>
          <li>
            <strong>Grant Evaluation</strong> The Client queries its User database and does not find a User record matching the identity claim.</li>
          <li>
            <strong>Update Grant</strong> The Client creates an Update Grant Request (<xref target="UpdateGrant" format="default"/>) including the initial identity claims required and interaction.keep:true, and sends it with an HTTP PUT to the Grant URI.</li>
          <li>
            <strong>User AuthN</strong> The GS interacts with the User to determine which identity claims in the Update Grant Request are to be granted.</li>
          <li>
            <strong>Grant Response</strong> The GS responds with a Grant Response (<xref target="GrantResponse" format="default"/>) including the identity claims released by the User and interaction.keep:true.</li>
          <li>
            <strong>Grant Evaluation</strong> The Client evaluates the identity claims in the Grant Response and determines the remaining User identity claim required.</li>
          <li>
            <strong>Update Grant</strong> The Client creates an Update Grant Request (<xref target="UpdateGrant" format="default"/>) including the remaining required identity claims and interaction.keep:false, and sends it with an HTTP PUT to the Grant URI.</li>
          <li>
            <strong>User AuthZ</strong> The GS interacts with the User to determine which identity claims in the Update Grant Request are to be granted.</li>
          <li>
            <strong>Interaction Transfer</strong> The GS transfers User interaction to the Client.</li>
          <li>
            <strong>Grant Response</strong> The GS responds with a Grant Response (<xref target="GrantResponse" format="default"/>) including the identity claims released by the User.</li>
        </ol>
      </section>
      <section anchor="create-and-delete" numbered="true" toc="default">
        <name>Create and Delete</name>
        <t>The Client requests an identity claim to determine who the User is. Once the Client learns who the User is, and the Client knows it already has all the identity claims and authorizations needed for the User, the Client deletes the Grant which prompts the GS to transfer the interaction back to the Client. (If the Client did not already have what was needed, the Client would follow the Create and Update sequence <xref target="CreateAndUpdate" format="default"/> )</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+                                  +-------+
| Client |                                  |  GS   |
|        |--(1)--- Create Grant ----------->|       |
|        |      interaction.keep:true       |       |
|        |                                  |       |
|        |<--- Interaction Response ---(2)--|       |
|        |                                  |       |
|        |--(3)--- Read Grant ------------->|       |         +------+
|        |                                  |       |         | User |
|        |--(4)--- Interaction Transfer --- | - - - | ------->|      |
|        |                                  |       |         |      |
|        |                                  |       |<--(5)-->|      |
|        |                                  |       |  authN  |      |
|        |<--------- Grant Response ---(6)--|       |         |      |
|  (7)   |                                  |       |         |      |
|  eval  |--(8)--- Delete Grant ----------->|       |         |      |
|        |<------- Delete Response ---------|       |         |      |
|        |                                  |       |         |      |
|        |<--- Interaction Transfer ---(9)- | - - - | --------|      |
|        |                                  |       |         |      |
+--------+                                  +-------+         +------+
]]></artwork>
        <ol spacing="normal" type="1">
          <li>
            <strong>Create Grant</strong> The Client creates a Grant Request (<xref target="CreateGrant" format="default"/>) including an identity claim and interaction.keep:true, and sends it with an HTTP POST to the GS GS URI.</li>
          <li>
            <strong>Interaction Response</strong>  The GS sends an Interaction Response (<xref target="InteractionResponse" format="default"/>) containing the Grant URI, an interaction object, and interaction.keep:true.</li>
          <li>
            <strong>Read Grant</strong> The Client does an HTTP GET of the Grant URI (<xref target="ReadGrant" format="default"/>).</li>
          <li>
            <strong>Interaction Transfer</strong> The Client transfers User interaction to the GS.</li>
          <li>
            <strong>User Authentication</strong> The GS authenticates the User.</li>
          <li>
            <strong>Grant Response</strong> The GS responds with a Grant Response (<xref target="GrantResponse" format="default"/>) including the identity claim from User authentication and interaction.keep:true.</li>
          <li>
            <strong>Grant Evaluation</strong> The Client queries its User database and finds the User record matching the identity claim, and that no additional claims or authorizations are required.</li>
          <li>
            <strong>Delete Grant</strong> The Client no longer needs the Grant and decides to Delete Grant (<xref target="DeleteGrant" format="default"/>) by sending an HTTP DELETE to the Grant URI. If the GS responds with success the Grant no longer exists.</li>
        </ol>
      </section>
      <section anchor="create-discover-and-delete" numbered="true" toc="default">
        <name>Create, Discover, and Delete</name>
        <t>The Client wants to discover if the GS has a User with a given identifier. If not, it will abort the request and not transfer interaction to the GS.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+                                  +-------+
| Client |                                  |  GS   |
|        |--(1)--- Create Grant ----------->|       |
|        |      user.exists:true            |       |
|        |                                  |       |
|        |<--- Interaction Response ---(2)--|       |
|        |         user.exists:false        |       |
|        |                                  |       |
|        |--(3)--- Delete Grant ----------->|       |
|        |<------- Delete Response ---------|       |
|        |                                  |       |
+--------+                                  +-------+
]]></artwork>
        <ol spacing="normal" type="1">
          <li>
            <strong>Create Grant</strong> The Client creates a Grant Request (<xref target="CreateGrant" format="default"/>) including an identity claim request, a User identifier, and user.exists:true. The Client sends it with an HTTP POST to the GS GS URI.</li>
          <li>
            <strong>Interaction Response</strong>  The GS sends an Interaction Response (<xref target="InteractionResponse" format="default"/>) containing the Grant URI, an interaction object, and user.exists:false.</li>
          <li>
            <strong>Delete Grant</strong> The Client determines the GS cannot fulfil its Grant Request, and decides to Delete Grant (<xref target="DeleteGrant" format="default"/>) by sending an HTTP DELETE to the Grant URI. If the GS responds with success the Grant no longer exists.</li>
        </ol>
      </section>
      <section anchor="create-and-wait" numbered="true" toc="default">
        <name>Create and Wait</name>
        <t>The Client wants access to resources that require the GS to interact with the RO, which may not happen immediately, so the GS instructs the Client to wait and check back later.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+                                  +-------+
| Client |                                  |  GS   |        
|        |--(1)--- Create Grant ----------->|       |       
|        |                                  |       |
|        |<---------- Wait Response ---(2)--|       |         +------+
|  (3)   |                                  |       |         |  RO  |
|  Wait  |                                  |       |<--(4)-->|      |
|        |                                  |       |  AuthZ  |      |
|        |--(5)--- Read Grant ------------->|       |         +------+
|        |                                  |       |
|        |<--------- Grant Response --(6)---|       |
|        |                                  |       |
+--------+                                  +-------+
]]></artwork>
        <ol spacing="normal" type="1">
          <li>
            <strong>Create Grant</strong> The Client creates a Grant Request (<xref target="CreateGrant" format="default"/>) and sends it with an HTTP POST to the GS GS URI.</li>
          <li>
            <strong>Wait Response</strong>  The GS sends an Interaction Response (<xref target="WaitResponse" format="default"/>) containing the Grant URI and wait time.</li>
          <li>
            <strong>Client Waits</strong> The Client waits the wait time.</li>
          <li>
            <strong>RO AuthZ</strong> The GS interacts with the RO to determine which identity claims in the Grant Request are to be granted.</li>
          <li>
            <strong>Read Grant</strong> The Client does an HTTP GET of the Grant URI (<xref target="ReadGrant" format="default"/>).</li>
          <li>
            <strong>Grant Response</strong> The GS responds with a Grant Response (<xref target="GrantResponse" format="default"/>).</li>
        </ol>
      </section>
      <section anchor="read-grant" numbered="true" toc="default">
        <name>Read Grant</name>
        <t>The Client wants to re-acquire the identity claims and authorizations in the Grant. No User or RO interaction is required as no new consent or authorization is required.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+                                  +-------+
| Client |                                  |  GS   |
|        |--(1)--- Read Grant ------------->|       |
|        |                                  |       |
|        |<--------- Grant Response --(2)---|       |
|        |                                  |       |
+--------+                                  +-------+
]]></artwork>
        <ol spacing="normal" type="1">
          <li>
            <strong>Read Grant</strong> The Client does an HTTP GET of the Grant URI (<xref target="ReadGrant" format="default"/>).</li>
          <li>
            <strong>Grant Response</strong> The GS responds with a Grant Response (<xref target="GrantResponse" format="default"/>) containing updated identity claims and authorizations.</li>
        </ol>
      </section>
      <section anchor="resource-server-access" numbered="true" toc="default">
        <name>Resource Server Access</name>
        <t>The Client received an AZ URI from the GS. The Client acquires an access token, calls the RS, and later the access token expires. The Client then gets a fresh access token.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+                                           +-------+
| Client |                                           |  GS   |
|        |--(1)--- Read AuthZ ---------------------->|       |
|        |<------- AuthZ Response -------------------|       |
|        |                                           |       |
|        |                             +----------+  |       | 
|        |                             | Resource |  |       | 
|        |--(2)--- Access Resource --->|  Server  |  |       | 
|        |<------- Resource Response --|   (RS)   |  |       | 
|        |                             |          |  |       | 
|        |--(3)--- Access Resource --->|          |  |       | 
|        |<------- Error Response -----|          |  |       |
|        |                             |          |  |       | 
|        |                             +----------+  |       |
|        |                                           |       |
|        |--(4)--- Read AuthZ ---------------------->|       |
|        |<------- AuthZ Response -------------------|       |
|        |                                           |       |
+--------+                                           +-------+
]]></artwork>
        <ol spacing="normal" type="1">
          <li>
            <strong>Read AuthZ</strong> The Client makes a Read AuthZ (<xref target="ReadAuthZ" format="default"/>) with an HTTP GET to the AZ URI and receives an Response JSON "authorization" object (<xref target="ResponseAuthorizationObject" format="default"/>) with a fresh access token.</li>
          <li>
            <strong>Resource Request</strong> The Client accesses the RS with the access token per <xref target="RSAccess" format="default"/> and receives a response from the RS.</li>
          <li>
            <strong>Resource Request</strong> The Client attempts to access the RS, but receives an error indicating the access token has expired.</li>
          <li>
            <strong>Read AuthZ</strong> The Client makes another Read AuthZ (<xref target="ReadAuthZ" format="default"/>) with an HTTP GET to the AZ URI and receives an Response JSON "authorization" object (<xref target="ResponseAuthorizationObject" format="default"/>) with a fresh access token.</li>
        </ol>
      </section>
      <section anchor="gs-api-table" numbered="true" toc="default">
        <name>GS API Table</name>
        <table align="center">
          <thead>
            <tr>
              <th align="left">request</th>
              <th align="left">http verb</th>
              <th align="left">uri</th>
              <th align="left">response</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Create Grant</td>
              <td align="left">POST</td>
              <td align="left">GS URI</td>
              <td align="left">interaction, wait, or grant</td>
            </tr>
            <tr>
              <td align="left">Verify Grant</td>
              <td align="left">PATCH</td>
              <td align="left">Grant URI</td>
              <td align="left">grant</td>
            </tr>
            <tr>
              <td align="left">Read Grant</td>
              <td align="left">GET</td>
              <td align="left">Grant URI</td>
              <td align="left">wait, or grant</td>
            </tr>
            <tr>
              <td align="left">Update Grant</td>
              <td align="left">PUT</td>
              <td align="left">Grant URI</td>
              <td align="left">interaction, wait, or grant</td>
            </tr>
            <tr>
              <td align="left">Delete Grant</td>
              <td align="left">DELETE</td>
              <td align="left">Grant URI</td>
              <td align="left">success</td>
            </tr>
            <tr>
              <td align="left">Read AuthZ</td>
              <td align="left">GET</td>
              <td align="left">AZ URI</td>
              <td align="left">authorization</td>
            </tr>
            <tr>
              <td align="left">Update AuthZ</td>
              <td align="left">PUT</td>
              <td align="left">AZ URI</td>
              <td align="left">authorization</td>
            </tr>
            <tr>
              <td align="left">Delete AuthZ</td>
              <td align="left">DELETE</td>
              <td align="left">AZ URI</td>
              <td align="left">success</td>
            </tr>
            <tr>
              <td align="left">GS Options</td>
              <td align="left">OPTIONS</td>
              <td align="left">GS URI</td>
              <td align="left">metadata</td>
            </tr>
            <tr>
              <td align="left">Grant Options</td>
              <td align="left">OPTIONS</td>
              <td align="left">Grant URI</td>
              <td align="left">metadata</td>
            </tr>
            <tr>
              <td align="left">AuthZ Options</td>
              <td align="left">OPTIONS</td>
              <td align="left">AZ URI</td>
              <td align="left">metadata</td>
            </tr>
          </tbody>
        </table>
        <t>[ Editor: is there value in an API for listing a Client's Grants? eg:]</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
List Grants     GET     GS URI    JSON array of Grant URIs
]]></artwork>
      </section>
    </section>
    <section anchor="grant-and-authz-life-cycle" numbered="true" toc="default">
      <name>Grant and AuthZ Life Cycle</name>
      <t>[Editor: straw man for life cycles.]</t>
      <t><strong>Grant life Cycle</strong></t>
      <t>The Client MAY create, read, update, and delete Grants. A Grant persists until it has expired, is deleted, or another Grant is created for the same GS, Client, and User tuple.</t>
      <t>At any point in time, there can only be one Grant for the GS, Client, and User tuple. When a Client creates a Grant at the same GS for the same User, the GS MUST invalidate a previous Grant for the Client at that GS for that User.</t>
      <t><strong>Authorization Life Cycle</strong></t>
      <t>An Authorization are represented by an AZ URI and are MAY be included in a Grant Response "authorization" Object (<xref target="ResponseAuthorizationObject" format="default"/>) or as a member of the Grant Response "authorizations" list. If a Client receives an Authorization, the Client MUST be able to do a Read AuthZ request <xref target="ReadAuthZ" format="default"/>, and MAY be able to update <xref target="UpdateAuthZ" format="default"/> and delete <xref target="DeleteAuthZ" format="default"/> depending on GS policy.</t>
      <t>An Authorization will persist independent of the Grant, and persist until invalidated by the GS per GS policy, or deleted by the Client.</t>
    </section>
    <section anchor="gs-apis" numbered="true" toc="default">
      <name>GS APIs</name>
      <t><strong>Client Authentication</strong></t>
      <t>All APIs except for GS Options require the Client to authenticate.</t>
      <t>This document defines the JOSE Authentication mechanism in <xref target="JOSEauthN" format="default"/>. Other mechanisms include [TBD].</t>
      <section anchor="CreateGrant" numbered="true" toc="default">
        <name>Create Grant</name>
        <t>The Client creates a Grant by doing an HTTP POST of a JSON <xref target="RFC8259" format="default"/> document to the GS URI.</t>
        <t>The JSON document MUST include the following from the Request JSON <xref target="RequestJSON" format="default"/>:</t>
        <ul spacing="normal">
          <li>iat</li>
          <li>nonce</li>
          <li>uri set to the GS URI</li>
          <li>client</li>
        </ul>
        <t>and MAY include the following from Request JSON <xref target="RequestJSON" format="default"/></t>
        <ul spacing="normal">
          <li>user</li>
          <li>interaction</li>
          <li>authorization or authorizations</li>
          <li>claims</li>
        </ul>
        <t>The GS MUST respond with one of Grant Response <xref target="GrantResponse" format="default"/>, Interaction Response <xref target="InteractionResponse" format="default"/>, Wait Response <xref target="WaitResponse" format="default"/>, or one of the following errors:</t>
        <ul spacing="normal">
          <li>TBD</li>
        </ul>
        <t>from Error Responses <xref target="ErrorResponses" format="default"/>.</t>
        <t>Following is a non-normative example where the Client is requesting identity claims about the User and read access to the User's contacts:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Example 1

{ 
    "iat"       : 15790460234,
    "uri"       : "https://as.example/endpoint",
    "nonce"     : "f6a60810-3d07-41ac-81e7-b958c0dd21e4",
    "client": {
        "display": {
            "name"  : "SPA Display Name",
            "uri"   : "https://spa.example/about"
        }
    },
    "interaction": {
        "redirect": {
            "redirect_uri"    : "https://web.example/return"
        },
        "global" : {
            "ui_locals" : "de"
        }
    },
    "authorization": {
        "type"      : "oauth_scope",
        "scope"     : "read_contacts"
    },
    "claims": {
        "oidc": {
            "id_token" : {
                "email"          : { "essential" : true },
                "email_verified" : { "essential" : true }
            },
            "userinfo" : {
                "name"           : { "essential" : true },
                "picture"        : null
            }
        }
    }
}
]]></artwork>
        <t>Following is a non-normative example where the Client is requesting the GS to keep the interaction with the User after returning the ID Token so the Client can update the Grant, and is also asking if the user exists:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Example 2

{ 
    "iat"       : 15790460234,
    "uri"       : "https://as.example/endpoint",
    "nonce"     : "5c9360a5-9065-4f7b-a330-5713909e06c6",
    "client": {
        "id"        : "di3872h34dkJW"
    },
    "interaction": {
        "indirect": {
            "completion_uri": "https://device.example/completion"
        },
        "user_code": {
            "completion_uri": "https://device.example/completion"
         }
    },
    "user": {
        "identifiers": {
            "email" : "jane.doe@example.com"
        },
        "exists"    : true
    },
    "claims"    : { "oidc": { "id_token" : {} } }
}
]]></artwork>
      </section>
      <section anchor="VerifyGrant" numbered="true" toc="default">
        <name>Verify Grant</name>
        <t>The Client verifies a Grant by doing an HTTP PATCH of a JSON document to the corresponding Grant URI.</t>
        <t>The JSON document MUST contain verification.nonce per <xref target="VerificationObject" format="default"/>. Following is a non-normative example:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "verification": { "nonce":"55e8a90f-a563-426d-8c35-d6d8ed54afeb" }
}
]]></artwork>
        <t>The GS MUST respond with one of Grant Response <xref target="GrantResponse" format="default"/> or one of the following errors:</t>
        <ul spacing="normal">
          <li>TBD</li>
        </ul>
        <t>from Error Responses <xref target="ErrorResponses" format="default"/>.</t>
      </section>
      <section anchor="ReadGrant" numbered="true" toc="default">
        <name>Read Grant</name>
        <t>The Client reads a Grant by doing an HTTP GET of the corresponding Grant URI.</t>
        <t>The GS MUST respond with one of Grant Response <xref target="GrantResponse" format="default"/>, Wait Response <xref target="WaitResponse" format="default"/>, or one of the following errors:</t>
        <ul spacing="normal">
          <li>TBD</li>
        </ul>
        <t>from Error Responses <xref target="ErrorResponses" format="default"/>.</t>
      </section>
      <section anchor="UpdateGrant" numbered="true" toc="default">
        <name>Update Grant</name>
        <t>The Client updates a Grant by doing an HTTP PUT of a JSON document to the corresponding Grant URI.</t>
        <t>The JSON document MUST include the following from the Request JSON <xref target="RequestJSON" format="default"/></t>
        <ul spacing="normal">
          <li>iat</li>
          <li>uri set to the Grant URI</li>
        </ul>
        <t>and MAY include the following from Request JSON <xref target="RequestJSON" format="default"/></t>
        <ul spacing="normal">
          <li>user</li>
          <li>interaction</li>
          <li>authorization or authorizations</li>
          <li>claims</li>
        </ul>
        <t>The GS MUST respond with one of Grant Response <xref target="GrantResponse" format="default"/>, Interaction Response <xref target="InteractionResponse" format="default"/>, Wait Response <xref target="WaitResponse" format="default"/>, or one of the following errors:</t>
        <ul spacing="normal">
          <li>TBD</li>
        </ul>
        <t>from Error Responses <xref target="ErrorResponses" format="default"/>.</t>
        <t>Following is a non-normative example where the Client made an interaction.keep:true request, and now wants to update the request with additional claims:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Example 3

{ 
    "iat"       : 15790460234,
    "uri"       : "https://as.example/endpoint/grant/example3",
    "claims": {
        "oidc": {
            "userinfo" : {
                "email"          : { "essential" : true },
                "name"           : { "essential" : true },
                "picture"        : null
            }
        }
    }
}
]]></artwork>
      </section>
      <section anchor="DeleteGrant" numbered="true" toc="default">
        <name>Delete Grant</name>
        <t>The Client deletes a Grant by doing an HTTP DELETE of the corresponding Grant URI.</t>
        <t>The GS MUST respond with OK 200, or one of the following errors:</t>
        <ul spacing="normal">
          <li>TBD</li>
        </ul>
        <t>from Error Responses <xref target="ErrorResponses" format="default"/>.</t>
      </section>
      <section anchor="RequestJSON" numbered="true" toc="default">
        <name>Request JSON</name>
        <t>[Editor: do we want to reuse the JWT claims "iat", "jti", etc.? ]</t>
        <ul spacing="normal">
          <li>
            <strong>iat</strong> - the time of the request as a NumericDate.</li>
          <li>
            <strong>nonce</strong> - a unique identifier for this request. Note the Grant Response MUST contain a matching nonce attribute value.</li>
          <li>
            <strong>uri</strong> - the GS URI if in a Create Grant <xref target="CreateGrant" format="default"/>, or the Grant URI if in an Update Grant <xref target="UpdateGrant" format="default"/>.</li>
        </ul>
        <section anchor="client-object" numbered="true" toc="default">
          <name>"client" Object</name>
          <t>The client object MUST contain one of: the "id" attribute for a Registered Client, the "handle" attribute for a Dynamic Client, or the "display" object for Dynamic Clients.</t>
          <ul spacing="normal">
            <li>
              <strong>id</strong> - the Client ID the GS has for a Registered Client.</li>
            <li>
              <strong>handle</strong> = the Client Handle the GS previously provided a Dynamic Client</li>
            <li>
              <t><strong>display</strong> - the display object contains the following attributes:  </t>
              <ul spacing="normal">
                <li>
                  <strong>name</strong> - a string that represents the Dynamic Client</li>
                <li>
                  <strong>uri</strong> - a URI representing the Dynamic Client</li>
              </ul>
            </li>
          </ul>
          <t>The name and uri will be displayed by the GS when prompting for authorization.</t>
          <t>[Editor: a max length for the name and URI so a GS can reserve appropriate space?]</t>
        </section>
        <section anchor="interaction-object" numbered="true" toc="default">
          <name>"interaction" Object</name>
          <t>The interaction object contains one or more interaction mode objects per <xref target="InteractionModes" format="default"/> representing the interactions the Client is willing to provide the User. In addition to the interaction mode objects, the interaction object may contain the "global" object;</t>
          <ul spacing="normal">
            <li>
              <t><strong>global</strong> - and optional object containing parameters that are applicable for all types of interactions. Only one attribute is defined in this document:  </t>
              <ul spacing="normal">
                <li>
                  <strong>ui_locales</strong> - End-User's preferred languages and scripts for the user interface, represented as a space-separated list of <xref target="RFC5646" format="default"/> language tag values, ordered by preference. This attribute is OPTIONAL.</li>
              </ul>
            </li>
          </ul>
          <t>[Editor: why is this not a JSON array? Why space-separated?]</t>
        </section>
        <section anchor="RequestUserObject" numbered="true" toc="default">
          <name>"user" Object</name>
          <ul spacing="normal">
            <li>
              <strong>exists</strong> - if present, MUST contain the JSON true value. Indicates the Client requests the GS to return a user.exists value in an Interaction Response <xref target="InteractionResponse" format="default"/>. This attribute is OPTIONAL, and MAY be ignored by the GS.</li>
            <li>
              <t><strong>identifiers</strong> - REQUIRED if the exists attribute is present. The values MAY be used by the GS to improve the User experience. Contains one or more of the following identifiers for the User:  </t>
              <ul spacing="normal">
                <li>
                  <strong>phone_number</strong> - contains a phone number per Section 5 of <xref target="RFC3966" format="default"/>.</li>
                <li>
                  <strong>email</strong> - contains an email address per <xref target="RFC5322" format="default"/>.</li>
                <li>
                  <strong>oidc</strong> - is an object containing both the "iss" and "sub" attributes from an OpenID Connect ID Token <xref target="OIDC" format="default"/> Section 2.</li>
              </ul>
            </li>
            <li>
              <t><strong>claims</strong> - an optional object containing one or more assertions the Client has about the User.  </t>
              <ul spacing="normal">
                <li>
                  <strong>oidc_id_token</strong> - an OpenID Connect ID Token per <xref target="OIDC" format="default"/> Section 2.</li>
              </ul>
            </li>
            <li>
              <strong>reciprocal</strong> - indicates this Grant Request or Update is the reciprocal of another Grant. Contains the Grant URI of the reciprocal Grant.</li>
          </ul>
        </section>
        <section anchor="AuthorizationObject" numbered="true" toc="default">
          <name>"authorization" Object</name>
          <ul spacing="normal">
            <li>
              <strong>type</strong> - one of the following values: "oauth_scope" or "oauth_rich". This attribute is REQUIRED.</li>
            <li>
              <strong>scope</strong> - a string containing the OAuth 2.0 scope per <xref target="RFC6749" format="default"/> section 3.3. MUST be included if type is "oauth_scope" or "oauth_rich".</li>
            <li>
              <strong>authorization_details</strong> - an authorization_details object per <xref target="RAR" format="default"/>. MUST be included if type is "oauth_rich".</li>
          </ul>
          <t>[Editor: details may change as the <xref target="RAR" format="default"/> document evolves]</t>
        </section>
        <section anchor="authorizations-object" numbered="true" toc="default">
          <name>"authorizations" Object</name>
          <t>One or more key / value pairs, where each unique key is created by the client, and the value is an authorization object.</t>
        </section>
        <section anchor="ClaimsObject" numbered="true" toc="default">
          <name>"claims" Object</name>
          <t>Includes one or more of the following:</t>
          <ul spacing="normal">
            <li>
              <t><strong>oidc</strong> - an object that contains one or both of the following objects:  </t>
              <ul spacing="normal">
                <li>
                  <strong>userinfo</strong> - Claims that will be returned as a JSON object</li>
                <li>
                  <strong>id_token</strong> - Claims that will be included in the returned ID Token. If the null value, an ID Token will be returned containing no additional Claims.</li>
              </ul>
            </li>
          </ul>
          <t>The contents of the userinfo and id_token objects are Claims as defined in <xref target="OIDC" format="default"/> Section 5.</t>
          <ul spacing="normal">
            <li>
              <strong>oidc4ia</strong> - OpenID Connect for Identity Assurance claims request per <xref target="OIDC4IA" format="default"/>.</li>
            <li>
              <strong>vc</strong> - [Editor: define how W3C Verifiable Credentials <xref target="W3C_VC" format="default"/> can be requested.]</li>
          </ul>
        </section>
        <section anchor="VerificationObject" numbered="true" toc="default">
          <name>"verification" Object</name>
          <t>The verification Object is used with the Verify Grant <xref target="VerifyGrant" format="default"/>.</t>
          <ul spacing="normal">
            <li>
              <strong>nonce</strong> the Interaction Nonce received from the GS via the Completion URI. This attribute MUST only be used in the Verify Grant <xref target="VerifyGrant" format="default"/>.</li>
          </ul>
          <t>[Editor: parameters for the Client to request it wants the Grant Response signed and/or encrypted?]</t>
        </section>
      </section>
      <section anchor="ReadAuthZ" numbered="true" toc="default">
        <name>Read Authorization</name>
        <t>The Client acquires an Authorization by doing an HTTP GET to the corresponding AZ URI.</t>
        <t>The GS MUST respond with a Authorization JSON document <xref target="AuthorizationJSON" format="default"/>, or one of the following errors:</t>
        <ul spacing="normal">
          <li>TBD</li>
        </ul>
        <t>from Error Responses <xref target="ErrorResponses" format="default"/>.</t>
      </section>
      <section anchor="UpdateAuthZ" numbered="true" toc="default">
        <name>Update Authorization</name>
        <t>The Client updates an Authorization by doing an HTTP PUT to the corresponding AZ URI of the following JSON. All of the following MUST be included.</t>
        <ul spacing="normal">
          <li>
            <strong>iat</strong> - the time of the response as a NumericDate.</li>
          <li>
            <strong>uri</strong> - the AZ URI.</li>
          <li>
            <strong>authorization</strong> - the new authorization requested per the Request JSON "authorization" object <xref target="AuthorizationObject" format="default"/>.</li>
        </ul>
        <t>The GS MUST respond with a Authorization JSON document <xref target="AuthorizationJSON" format="default"/>, or one of the following errors:</t>
        <ul spacing="normal">
          <li>TBD</li>
        </ul>
        <t>from Error Responses <xref target="ErrorResponses" format="default"/>.</t>
      </section>
      <section anchor="DeleteAuthZ" numbered="true" toc="default">
        <name>Delete Authorization</name>
        <t>The Client deletes an Authorization by doing an HTTP DELETE to the corresponding AZ URI.</t>
        <t>The GS MUST respond with OK 200, or one of the following errors:</t>
        <ul spacing="normal">
          <li>TBD</li>
        </ul>
        <t>from Error Responses <xref target="ErrorResponses" format="default"/>.</t>
      </section>
      <section anchor="GSoptions" numbered="true" toc="default">
        <name>GS Options</name>
        <t>The Client can get the metadata for the GS by doing an HTTP OPTIONS of the corresponding GS URI. This is the only API where the GS MAY respond to an unauthenticated request.</t>
        <t>The GS MUST respond with the the following JSON document:</t>
        <t>[Editor: this section is a work in progress]</t>
        <ul spacing="normal">
          <li>
            <strong>uri</strong> - the GS URI.</li>
          <li>
            <strong>client_authentication</strong> - an array of the Client Authentication mechanisms supported by the GS</li>
          <li>
            <strong>interactions</strong> - an array of the interaction modes supported by the GS.</li>
          <li>
            <t><strong>authorization</strong> - an object containing the authorizations the Client may request from the GS, if any.  </t>
            <ul spacing="normal">
              <li>Details TBD</li>
            </ul>
          </li>
          <li>
            <t><strong>claims</strong> - an object containing the identity claims the Client may request from the GS, if any, and what public keys the claims will be signed with.  </t>
            <ul spacing="normal">
              <li>Details TBD</li>
            </ul>
          </li>
          <li>
            <strong>algorithms</strong> - a list of the cryptographic algorithms supported by the GS.</li>
          <li>
            <t><strong>features</strong> - an object containing feature support  </t>
            <ul spacing="normal">
              <li>
                <strong>user_exists</strong> - boolean indicating if user.exists is supported.</li>
              <li>
                <strong>authorizations</strong> - boolean indicating if a request for more than one authorization in a request is supported.</li>
            </ul>
          </li>
        </ul>
        <t>[Editor: keys used by Client to encrypt requests, or verify signed responses?]</t>
        <t>[Editor: namespace metadata for extensions?]</t>
        <t>or one of the following errors:</t>
        <ul spacing="normal">
          <li>TBD</li>
        </ul>
        <t>from Error Responses <xref target="ErrorResponses" format="default"/>.</t>
      </section>
      <section anchor="GrantOptions" numbered="true" toc="default">
        <name>Grant Options</name>
        <t>The Client can get the metadata for the Grant by doing an HTTP OPTIONS of the corresponding  Grant URI.</t>
        <t>The GS MUST respond with the the following JSON document:</t>
        <ul spacing="normal">
          <li>
            <strong>verbs</strong> - an array of the HTTP verbs supported at the GS URI.</li>
        </ul>
        <t>or one of the following errors:</t>
        <ul spacing="normal">
          <li>TBD</li>
        </ul>
        <t>from Error Responses <xref target="ErrorResponses" format="default"/>.</t>
      </section>
      <section anchor="AuthZOptions" numbered="true" toc="default">
        <name>AuthZ Options</name>
        <t>The Client can get the metadata for the AuthZ by doing an HTTP OPTIONS of the corresponding AZ URI.</t>
        <t>The GS MUST respond with the the following JSON document:</t>
        <ul spacing="normal">
          <li>
            <strong>verbs</strong> - an array of the HTTP verbs supported at the GS URI.</li>
        </ul>
        <t>or one of the following errors:</t>
        <ul spacing="normal">
          <li>TBD</li>
        </ul>
        <t>from Error Responses <xref target="ErrorResponses" format="default"/>.</t>
      </section>
      <section anchor="request-verification" numbered="true" toc="default">
        <name>Request Verification</name>
        <t>On receipt of a request, the GS MUST verify the following:</t>
        <ul spacing="normal">
          <li>TBD</li>
        </ul>
      </section>
    </section>
    <section anchor="GSInitiatedGrant" numbered="true" toc="default">
      <name>GS Initiated Grant</name>
      <t>[Editor: In OAuth 2.0, all flows are initiated at the Client. If the AS wanted to initiate a flow, it redirected to the Client, that redirected back to the AS to initiate a flow.</t>
      <t>Here is a proposal to support GS initiated: authentication; just-in-time (JIT) provisioning; and authorization]</t>
      <t><strong>initiation_uri</strong> A URI at the Client that contains no query or fragment. How the GS learns the Client initiation_uri is out of scope.</t>
      <t>The GS creates a Grant and Grant URI, and redirects the User to the initiation_uri with the query parameter "grant" and the value of Grant URI.</t>
      <t>See <xref target="GSInitiatedGrantSeq" format="default"/> for the sequence diagram.</t>
    </section>
    <section anchor="gs-responses" numbered="true" toc="default">
      <name>GS Responses</name>
      <t>There are three successful responses to a grant request: Grant Response, Interaction Response, or Wait Response.</t>
      <section anchor="GrantResponse" numbered="true" toc="default">
        <name>Grant Response</name>
        <t>The Grant Response MUST include the following from the Response JSON <xref target="ResponseJSON" format="default"/></t>
        <ul spacing="normal">
          <li>iat</li>
          <li>nonce</li>
          <li>uri</li>
        </ul>
        <t>and MAY include the following from the Response JSON <xref target="ResponseJSON" format="default"/></t>
        <ul spacing="normal">
          <li>client.handle</li>
          <li>authorization or authorizations</li>
          <li>claims</li>
          <li>expires_in</li>
        </ul>
        <t>Example non-normative Grant Response JSON document for Example 1 in <xref target="CreateGrant" format="default"/>:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{ 
    "iat"           : 15790460234,
    "nonce"         : "f6a60810-3d07-41ac-81e7-b958c0dd21e4",
    "uri"           : "https://as.example/endpoint/grant/example1",
    "expires_in"    : 300
    "authorization": {
        "type"          : "oauth_scope",
        "scope"         : "read_contacts",
        "expires_in"    : 3600,
        "mechanism"     : "bearer",
        "token"         : "eyJJ2D6.example.access.token.mZf9p"
    },
    "claims": {
        "oidc": {
            "id_token"      : "eyJhbUzI1N.example.id.token.YRw5DFdbW",
            "userinfo" : {
                "name"      : "John Doe",
                "picture"   : "https://photos.example/p/eyJzdkiO"
            }
        }
    }
}
]]></artwork>
        <t>Example non-normative Grant Response JSON document for Example 2 in <xref target="CreateGrant" format="default"/>:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "iat"   : 15790460234,
    "nonce" : "5c9360a5-9065-4f7b-a330-5713909e06c6",
    "uri"   : "https://as.example/endpoint/grant/example2",
    "authorization": {
        "uri"   : "https://as.example/endpoint/authz/example2"
    }
}
]]></artwork>
      </section>
      <section anchor="InteractionResponse" numbered="true" toc="default">
        <name>Interaction Response</name>
        <t>The Interaction Response MUST include the following from the Response JSON <xref target="ResponseJSON" format="default"/></t>
        <ul spacing="normal">
          <li>iat</li>
          <li>nonce</li>
          <li>uri</li>
          <li>interaction</li>
        </ul>
        <t>and MAY include the following from the Response JSON <xref target="ResponseJSON" format="default"/></t>
        <ul spacing="normal">
          <li>user</li>
          <li>wait</li>
        </ul>
        <t>A non-normative example of an Interaction Response follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "iat"       : 15790460234,
    "nonce"     : "0d1998d8-fbfa-4879-b942-85a88bff1f3b",
    "uri"       : "https://as.example/endpoint/grant/example4",
    "interaction" : {
        ""redirect" : {
            "authorization_uri"     : "https://as.example/i/example4"
        }
    },
    "user": {
        "exists" : true
    }
}
]]></artwork>
      </section>
      <section anchor="WaitResponse" numbered="true" toc="default">
        <name>Wait Response</name>
        <t>The Wait Response MUST include the following from the Response JSON <xref target="ResponseJSON" format="default"/></t>
        <ul spacing="normal">
          <li>iat</li>
          <li>nonce</li>
          <li>uri</li>
          <li>wait</li>
        </ul>
        <t>A non-normative example of Wait Response follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "iat"       : 15790460234,
    "nonce"     : "0d1998d8-fbfa-4879-b942-85a88bff1f3b",
    "uri"       : "https://as.example/endpoint/grant/example5",
    "wait"      : 300
}
]]></artwork>
      </section>
      <section anchor="ResponseJSON" numbered="true" toc="default">
        <name>Response JSON</name>
        <t>Details of the JSON document:</t>
        <ul spacing="normal">
          <li>
            <strong>iat</strong> - the time of the response as a NumericDate.</li>
          <li>
            <strong>nonce</strong> - the nonce that was included in the Request JSON <xref target="RequestJSON" format="default"/>.</li>
          <li>
            <strong>uri</strong> - the Grant URI.</li>
          <li>
            <strong>wait</strong> - a numeric value representing the number of seconds the Client should want before making a Read Grant request to the Grant URI.</li>
          <li>
            <strong>expires_in</strong> - a numeric value specifying how many seconds until the Grant expires. This attribute is OPTIONAL.</li>
        </ul>
        <section anchor="clientObject" numbered="true" toc="default">
          <name>"client" Object</name>
          <t>The GS may</t>
        </section>
        <section anchor="interactionObject" numbered="true" toc="default">
          <name>"interaction" Object</name>
          <t>If the GS wants the Client to start the interaction, the GS MUST return an interaction object containing one or more interaction mode responses per <xref target="InteractionModes" format="default"/> to one or more of the interaction mode requests provided by the Client.</t>
        </section>
        <section anchor="user-object" numbered="true" toc="default">
          <name>"user" Object</name>
          <ul spacing="normal">
            <li>
              <strong>exists</strong> - a boolean value indicating if the GS has a user with one or more of the provided identifiers in the Request user.identifiers object <xref target="RequestUserObject" format="default"/></li>
          </ul>
        </section>
        <section anchor="ResponseAuthorizationObject" numbered="true" toc="default">
          <name>"authorization" Object</name>
          <t>The authorization object contains Authorization JSON <xref target="AuthorizationJSON" format="default"/>. See Grant Response <xref target="GrantResponse" format="default"/> for non-normative examples.</t>
        </section>
        <section anchor="ResponseAuthorizationsObject" numbered="true" toc="default">
          <name>"authorizations" Object</name>
          <t>A key / value pair for each key in the client's request authorizations object, and the value is Authorization JSON <xref target="AuthorizationJSON" format="default"/>.</t>
        </section>
        <section anchor="ResponseClaimsObject" numbered="true" toc="default">
          <name>"claims" Object</name>
          <t>The claims object is a response to the Request "claims" object <xref target="AuthorizationObject" format="default"/>.</t>
          <ul spacing="normal">
            <li>
              <t><strong>oidc</strong>  </t>
              <ul spacing="normal">
                <li>
                  <strong>id_token</strong> - an OpenID Connect ID Token containing the Claims the User consented to be released.</li>
                <li>
                  <strong>userinfo</strong> - the Claims the User consented to be released.</li>
              </ul>
              <t>
Claims are defined in <xref target="OIDC" format="default"/> Section 5.</t>
            </li>
            <li>
              <strong>oidc4ia</strong> - OpenID Connect for Identity Assurance claims response per <xref target="OIDC4IA" format="default"/>.</li>
            <li>
              <t><strong>vc</strong>  </t>
              <t>
The verified claims the user consented to be released. [Editor: details TBD]</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="AuthorizationJSON" numbered="true" toc="default">
        <name>Authorization JSON</name>
        <t>The Authorization JSON is a response to a Read AuthZ request by the Client <xref target="ReadAuthZ" format="default"/>. A subset of the Authorization JSON is included in the "authorization" object <xref target="AuthorizationObject" format="default"/> and "authorizations" list members <xref target="ResponseAuthorizationsObject" format="default"/>.</t>
        <ul spacing="normal">
          <li>
            <strong>type</strong> - the type of claim request: "oauth_scope" or "oauth_rich". See the "type" object in <xref target="AuthorizationObject" format="default"/> for details.  This attribute is REQUIRED.</li>
          <li>
            <strong>scope</strong> - the scopes the Client was granted authorization for. This will be all, or a subset, of what was requested. This attribute is OPTIONAL.</li>
          <li>
            <strong>authorization_details</strong> - the authorization details granted per <xref target="RAR" format="default"/>. Included if type is "oauth_rich".</li>
          <li>
            <strong>mechanism</strong> - one of the access mechanisms: "bearer", "jose", or "jose+body". See <xref target="RSAccess" format="default"/> for details.  This attribute is REQUIRED.</li>
          <li>
            <strong>token</strong> - the access token for accessing an RS.  This attribute is REQUIRED.</li>
          <li>
            <strong>expires_in</strong> - a numeric value specifying how many seconds until the access token expires. This attribute is OPTIONAL.</li>
          <li>
            <strong>certificate</strong> - MUST be included if the mechanism is "jose" or "jose+body". Contains the jwk header values for the Client to include in the JWS header when calling the RS using the "jose" or "jose+body" mechanisms. See <xref target="JWSHeader" format="default"/>.</li>
          <li>
            <strong>uri</strong> - the AZ URI. Used to refresh an authorization. This attribute is OPTIONAL.</li>
        </ul>
        <t>[Editor: would an optional expiry for the Authorization be useful?]</t>
        <t>The following is a non-normative example of an Authorization JSON document:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "type"          : "oauth_scope",
    "scope"         : "read_calendar write_calendar",
    "mechanism"     : "jose",
    "token"         : "eyJJ2D6.example.access.token.mZf9p"
    "expires_in"    : 3600,
    "certificate": {
        "x5u"   : "https://as.example/cert/example2" 
    },
    "uri"       : "https://as.example/endpoint/authz/example2"
}
]]></artwork>
        <section anchor="signing-and-encryption" numbered="true" toc="default">
          <name>Signing and Encryption</name>
          <t>[Editor: TBD - how response is signed and/or encrypted by the GS. Is there a generalized description, or is it mechanism specific?]</t>
        </section>
      </section>
      <section anchor="response-verification" numbered="true" toc="default">
        <name>Response Verification</name>
        <t>On receipt of a response, the Client MUST verify the following:</t>
        <ul spacing="normal">
          <li>TBD</li>
        </ul>
      </section>
    </section>
    <section anchor="InteractionModes" numbered="true" toc="default">
      <name>interaction mode Objects</name>
      <t>This document defines three interaction modes: "redirect", "indirect", and "user_code". Extensions may define additional interaction modes.</t>
      <t>The "global" attribute is reserved in the interaction object for attributes that apply to all interaction modes.</t>
      <section anchor="redirect-mode" numbered="true" toc="default">
        <name>"redirect" mode</name>
        <t>A Redirect Interaction is characterized by the Client redirecting the User's browser to the GS, the GS interacting with the User, and then GS redirecting the User's browser back to the Client. The GS correlates the Grant Request with the unique authorization_uri, and the Client correlates the Grant Request with the unique redirect_uri.</t>
        <section anchor="request-interaction-object-contains" numbered="true" toc="default">
          <name>request "interaction" object contains:</name>
          <t><strong>redirect_uri</strong> a grant request request unique URI at the Client that the GS will return the User to. This attribute is REQUIRED.</t>
        </section>
        <section anchor="response-interaction-object-contains" numbered="true" toc="default">
          <name>response "interaction" object contains:</name>
          <t><strong>authorization_uri</strong> a grant request request unique URI at the GS that the Client will redirect the User to. This attribute is REQUIRED.</t>
        </section>
      </section>
      <section anchor="indirect-mode" numbered="true" toc="default">
        <name>"indirect" mode</name>
        <t>An Indirect Interaction is characterized by the Client causing the User's browser to load the short_uri at GS, the GS interacting with the User, and then the GS MAY optionally redirecting the User's Browser to a completion_uri. There is no mechanism for the GS to redirect the User's browser back to the Client. Examples of how the Client may initiate the interaction are encoding the short_uri as a code scannable by the User's mobile device, or launching a system browser from a command line interface (CLI) application.</t>
        <t>The "indirect" mode is susceptible to session fixation attacks. See TBD in the Security Considerations for details.</t>
        <section anchor="request-interaction-object-contains-1" numbered="true" toc="default">
          <name>request "interaction" object contains:</name>
          <t><strong>completion_uri</strong> an OPTIONAL URI that the GS will redirect the User's browser to after GS interaction.</t>
        </section>
        <section anchor="response-interaction-object-contains-1" numbered="true" toc="default">
          <name>response "interaction" object contains:</name>
          <t><strong>short_uri</strong> the URI the Client will cause to load in the User's browser. The URI SHOULD be short enough to be easily encoded in a scannable code. [Editor: recommend a length?]</t>
        </section>
      </section>
      <section anchor="usercode-mode" numbered="true" toc="default">
        <name>"user_code" mode</name>
        <t>An Indirect Interaction is characterized by the Client displaying a code and a URI for the User to load in a browser and then enter the code.</t>
        <section anchor="request-interaction-object-contains-2" numbered="true" toc="default">
          <name>request "interaction" object contains:</name>
          <t><strong>completion_uri</strong> an OPTIONAL URI that the GS will redirect the User's browser to after GS interaction.</t>
        </section>
        <section anchor="response-interaction-object-contains-2" numbered="true" toc="default">
          <name>response "interaction" object contains:</name>
          <t><strong>code</strong> the code the Client displays to the User to enter at the display_uri. This attribute is REQUIRED.</t>
          <t><strong>display_uri</strong> the URI the Client displays to the User to load in a browser to enter the code.</t>
        </section>
      </section>
    </section>
    <section anchor="RSAccess" numbered="true" toc="default">
      <name>RS Access</name>
      <t>This document specifies three different mechanisms for the Client to access an RS ("bearer", "jose", and "jose+body"). The "bearer" mechanism is defined in {BearerToken}. The "jose" and "jose+body" mechanisms are proof-of-possession mechanisms and are defined in <xref target="joseMech" format="default"/> and <xref target="jose_bodyMech" format="default"/> respectively. Additional proof-of-possession mechanisms may be defined in other documents. The mechanism the Client is to use with an RS is the Response JSON authorization.mechanism attribute <xref target="ResponseAuthorizationObject" format="default"/>.</t>
      <section anchor="BearerToken" numbered="true" toc="default">
        <name>Bearer Token</name>
        <t>If the access mechanism is "bearer", then the Client accesses the RS per Section 2.1 of <xref target="RFC6750" format="default"/></t>
        <t>A non-normative example of the HTTP request headers follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
GET /calendar HTTP/2
Host: calendar.example
Authorization: bearer eyJJ2D6.example.access.token.mZf9pTSpA
]]></artwork>
      </section>
    </section>
    <section anchor="ErrorResponses" numbered="true" toc="default">
      <name>Error Responses</name>
      <ul spacing="normal">
        <li>TBD</li>
      </ul>
    </section>
    <section anchor="JOSEauthN" numbered="true" toc="default">
      <name>JOSE Authentication</name>
      <t>How the Client authenticates to the GS and RS are independent of each other. One mechanism can be used to authenticate to the GS, and a different mechanism to authenticate to the RS.</t>
      <t>Other documents that specify other Client authentication mechanisms will replace this section.</t>
      <t>In the JOSE Authentication Mechanism, the Client authenticates by using its private key to sign a JSON document with JWS per <xref target="RFC7515" format="default"/> which results in a token using JOSE compact serialization.</t>
      <t>[Editor: are there advantages to using JSON serialization in the body?]</t>
      <t>Different instances of a Registered Client MAY have different private keys, but each instance has a certificate to bind its private key to to a public key the GS has for the Client ID. An instance of a Client will use the same private key for all signing operations.</t>
      <t>The Client and the GS MUST both use HTTP/2 (<xref target="RFC7540" format="default"/>) or later, and TLS 1.3 (<xref target="RFC8446" format="default"/>) or later, when communicating with each other.</t>
      <t>[Editor: too aggressive to mandate HTTP/2 and TLS 1.3?]</t>
      <t>The token may be included in an HTTP header, or as the HTTP message body.</t>
      <t>The following sections specify how the Client uses JOSE to authenticate to the GS and RS.</t>
      <section anchor="gs-access" numbered="true" toc="default">
        <name>GS Access</name>
        <t>The Client authenticates to the GS by passing either a signed header parameter, or a signed message body.
The following table shows the verb, uri and token location for each Client request to the GS:</t>
        <table align="center">
          <thead>
            <tr>
              <th align="left">request</th>
              <th align="left">http verb</th>
              <th align="left">uri</th>
              <th align="left">token in</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Create Grant</td>
              <td align="left">POST</td>
              <td align="left">GS URI</td>
              <td align="left">body</td>
            </tr>
            <tr>
              <td align="left">Verify Grant</td>
              <td align="left">PATCH</td>
              <td align="left">Grant URI</td>
              <td align="left">body</td>
            </tr>
            <tr>
              <td align="left">Read Grant</td>
              <td align="left">GET</td>
              <td align="left">Grant URI</td>
              <td align="left">header</td>
            </tr>
            <tr>
              <td align="left">Update Grant</td>
              <td align="left">PUT</td>
              <td align="left">Grant URI</td>
              <td align="left">body</td>
            </tr>
            <tr>
              <td align="left">Delete Grant</td>
              <td align="left">DELETE</td>
              <td align="left">Grant URI</td>
              <td align="left">header</td>
            </tr>
            <tr>
              <td align="left">Read AuthZ</td>
              <td align="left">GET</td>
              <td align="left">AZ URI</td>
              <td align="left">header</td>
            </tr>
            <tr>
              <td align="left">Update AuthZ</td>
              <td align="left">PUT</td>
              <td align="left">AZ URI</td>
              <td align="left">body</td>
            </tr>
            <tr>
              <td align="left">Delete AuthZ</td>
              <td align="left">DELETE</td>
              <td align="left">AZ URI</td>
              <td align="left">header</td>
            </tr>
            <tr>
              <td align="left">GS Options</td>
              <td align="left">OPTIONS</td>
              <td align="left">GS URI</td>
              <td align="left">header</td>
            </tr>
            <tr>
              <td align="left">Grant Options</td>
              <td align="left">OPTIONS</td>
              <td align="left">Grant URI</td>
              <td align="left">header</td>
            </tr>
            <tr>
              <td align="left">AuthZ Options</td>
              <td align="left">OPTIONS</td>
              <td align="left">AZ URI</td>
              <td align="left">header</td>
            </tr>
          </tbody>
        </table>
        <section anchor="authorization-header" numbered="true" toc="default">
          <name>Authorization Header</name>
          <t>For requests with the token in the header, the JWS payload MUST contain the following attributes:</t>
          <t><strong>iat</strong> - the time the token was created as a NumericDate.</t>
          <t><strong>jti</strong> - a unique identifier for the token per <xref target="RFC7519" format="default"/> section 4.1.7.</t>
          <t><strong>uri</strong> - the value of the URI being called (GS URI, Grant URI, or AZ URI).</t>
          <t><strong>verb</strong> - the HTTP verb being used in the call ("GET", "DELETE", "OPTIONS")</t>
          <t>The HTTP authorization header is set to the "jose" parameter followed by one or more white space characters, followed by the resulting token.</t>
          <t>A non-normative example of a JWS payload and the HTTP request follows:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "iat"   : 15790460234,
    "jti"   : "f6d72254-4f23-417f-b55e-14ad323b1dc1",
    "uri"   : "https://as.example/endpoint/grant/example6",
    "verb"  : "GET"
}

GET /endpoint/example.grant HTTP/2
Host: as.example
Authorization: jose eyJhbGciOiJIUzI1NiIsIn ...
]]></artwork>
          <t>[Editor: make a real example token]</t>
          <t><strong>GS Verification</strong></t>
          <t>The GS MUST verify the token by:</t>
          <ul spacing="normal">
            <li>TBD</li>
          </ul>
        </section>
        <section anchor="signed-body" numbered="true" toc="default">
          <name>Signed Body</name>
          <t>For requests with the token in the body, the Client uses the Request JSON as the payload in a JWS. The resulting token is sent with the content-type set to "application/jose".</t>
          <t>A non-normative example (line breaks added to the body for readability):</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
POST /endpoint HTTP/2
Host: as.example
Content-Type: application/jose
Content-Length: 155

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyzdWIiOiIxMjM0NTY3ODkwIiwibmF
tZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMe
Jf36POk6yJV_adQssw5c
]]></artwork>
          <t>[Editor: make a real example token]</t>
          <t><strong>GS Verification</strong></t>
          <t>The GS MUST verify the token by:</t>
          <ul spacing="normal">
            <li>TBD</li>
          </ul>
        </section>
        <section anchor="public-key-resolution" numbered="true" toc="default">
          <name>Public Key Resolution</name>
          <ul spacing="normal">
            <li>
              <strong>Registered Clients</strong> can use any of the JWS header values to direct the GS to resolve the public key matching the private key used to the Client ID. The GS MAY restrict with JWS headers a Client can use.</li>
          </ul>
          <t>[Editor: would examples help here so that implementors understand the full range of options, and how an instance can have its own asymetric key pair]</t>
          <t>A non-normative example of a JOSE header for a Registered Client with a key identifier of "12":</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "alg"   : "ES256",
    "typ"   : "JOSE",
    "kid"   : "12"
}
]]></artwork>
          <ul spacing="normal">
            <li>
              <strong>Dynamic Clients</strong> include their public key in the "jwk" JWS header.</li>
          </ul>
          <t>A non-normative example of a JOSE header for a Dynamic Client:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "alg"   : "ES256",
    "typ"   : "JOSE",
    "jwk"   : {
        "kty"   : "EC",
        "crv"   : "P-256",
        "x"     : "Kgl5DJSgLyV-G32osmLhFKxJ97FoMW0dZVEqDG-Cwo4",
        "y"     : "GsL4mOM4x2e6iON8BHvRDQ6AgXAPnw0m0SfdlREV7i4"
    }
}
]]></artwork>
        </section>
      </section>
      <section anchor="rs-access" numbered="true" toc="default">
        <name>RS Access</name>
        <t>In the "jose" mechanism <xref target="joseMech" format="default"/>, all Client requests to the RS include a proof-of-possession token in the HTTP authorization header. In the "jose+body" mechanism <xref target="jose_bodyMech" format="default"/>, the Client signs the JSON document in the request if the POST or PUT verbs are used, otherwise it is the same as the "jose" mechanism.</t>
        <section anchor="JWSHeader" numbered="true" toc="default">
          <name>JOSE header</name>
          <t>The GS provides the Client one or more JWS header parameters and values for a a certificate, or a reference to a certificate or certificate chain, that the RS can use to resolve the public key matching the private key being used by the Client.</t>
          <t>A non-normative examples JOSE header:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "alg"   : "ES256",
    "typ"   : "JOSE",
    "x5u"   : "https://as.example/cert/example2"
}
]]></artwork>
          <t>[Editor: this enables Dynamic Clients to make proof-of-possession API calls the same as Registered Clients.]</t>
        </section>
        <section anchor="joseMech" numbered="true" toc="default">
          <name>"jose" Mechanism</name>
          <t>The JWS payload MUST contain the following attributes:</t>
          <t><strong>iat</strong> - the time the token was created as a NumericDate.</t>
          <t><strong>jti</strong> - a unique identifier for the token per <xref target="RFC7519" format="default"/> section 4.1.7.</t>
          <t><strong>uri</strong> - the value of the RS URI being called.</t>
          <t><strong>verb</strong> - the HTTP verb being used in the call</t>
          <t><strong>token</strong> - the access token provided by the GS to the Client</t>
          <t>The HTTP authorization header is set to the "jose" parameter followed by one or more white space characters, followed by the resulting token.</t>
          <t>A non-normative example of a JWS payload and the HTTP request follows:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "iat"   : 15790460234,
    "jti"   : "f6d72254-4f23-417f-b55e-14ad323b1dc1",
    "uri"   : "https://calendar.example/calendar",
    "verb"  : "GET",
    "token" : "eyJJ2D6.example.access.token.mZf9pTSpA"
}

GET /calendar HTTP/2
Host: calendar.example
Authorization: jose eyJhbG.example.jose.token.adks
]]></artwork>
          <t>[Editor: make a real example token]</t>
          <t><strong>RS Verification</strong></t>
          <t>The RS MUST verify the token by:</t>
          <ul spacing="normal">
            <li>verify access token is bound to the public key - include key fingerprint in access token?</li>
            <li>TBD</li>
          </ul>
        </section>
        <section anchor="jose_bodyMech" numbered="true" toc="default">
          <name>"jose+body" Mechanism</name>
          <t>The "jose+body" mechanism can only be used if the content being sent to the RS is a JSON document.</t>
          <t>Any requests not sending a message body will use the "jose" mechanism <xref target="joseMech" format="default"/>.</t>
          <t>Requests sending a message body MUST have the following JWS payload:</t>
          <t><strong>iat</strong> - the time the token was created as a NumericDate.</t>
          <t><strong>jti</strong> - a unique identifier for the token per <xref target="RFC7519" format="default"/> section 4.1.7.</t>
          <t><strong>uri</strong> - the value of the RS URI being called.</t>
          <t><strong>verb</strong> - the HTTP verb being used in the call</t>
          <t><strong>token</strong> - the access token provided by the GS to the Client</t>
          <t><strong>body</strong> - the message body being sent to the RS</t>
          <t>A non-normative example of a JWS payload and the HTTP request follows:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "iat"   : 15790460234,
    "jti"   : "f6d72254-4f23-417f-b55e-14ad323b1dc1",
    "uri"   : "https://calendar.example/calendar",
    "verb"  : "POST",
    "token" : "eyJJ2D6.example.access.token.mZf9pTSpA",
    "payload" : {
        "event" : {
            "title"             : "meeting with joe",
            "start_date_utc"    : "2020-02-21 11:00:00",
            "end_date_utc"      : "2020-02-21 11:00:00"
        }  
    }
}

POST /calendar HTTP/2
Host: calendar.example
Content-Type: application/jose
Content-Length: 155

eyJhbGciOi.example.jose+body.adasdQssw5c
]]></artwork>
          <t>[Editor: make a real example token]</t>
          <t><strong>RS Verification</strong></t>
          <t>The RS MUST verify the token by:</t>
          <ul spacing="normal">
            <li>TBD</li>
          </ul>
        </section>
        <section anchor="public-key-resolution-1" numbered="true" toc="default">
          <name>Public Key Resolution</name>
          <t>The RS has a public key for the GS that it uses to verify the certificate or certificate chain the Client includes in the JWS header.</t>
        </section>
      </section>
      <section anchor="request-encryption" numbered="true" toc="default">
        <name>Request Encryption</name>
        <t>[Editor: to be fleshed out]</t>
        <t>The Client encrypts a request when ??? using the GS public key returned as the ??? attribute in GS Options <xref target="GSoptions" format="default"/>.</t>
      </section>
      <section anchor="response-signing" numbered="true" toc="default">
        <name>Response Signing</name>
        <t>[Editor: to be fleshed out]</t>
        <t>The Client verifies a signed response ??? using the GS public key returned as the ??? attribute in GS Options <xref target="GSoptions" format="default"/>.</t>
      </section>
      <section anchor="response-encryption" numbered="true" toc="default">
        <name>Response Encryption</name>
        <t>[Editor: to be fleshed out]</t>
        <t>The Client decrypts a response when ??? using the private key matching the public key included in the request as the ??? attribute in <xref target="RequestJSON" format="default"/>.</t>
      </section>
    </section>
    <section anchor="Extensibility" numbered="true" toc="default">
      <name>Extensibility</name>
      <t>This standard can be extended in a number of areas:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Client Authentication Mechanisms</strong>  </t>
          <ul spacing="normal">
            <li>An extension could define other mechanisms for the Client to authenticate to the GS and/or RS such as Mutual TLS or HTTP Signing. Constrained environments could use CBOR <xref target="RFC7049" format="default"/> instead of JSON, and COSE <xref target="RFC8152" format="default"/> instead of JOSE, and CoAP <xref target="RFC8323" format="default"/> instead of HTTP/2.</li>
          </ul>
        </li>
        <li>
          <t><strong>Grant</strong>  </t>
          <ul spacing="normal">
            <li>An extension can define new objects in the Grant Request and Grant Response JSON.</li>
          </ul>
        </li>
        <li>
          <t><strong>Top Level</strong>  </t>
          <ul spacing="normal">
            <li>Top level objects SHOULD only be defined to represent functionality other the existing top level objects and attributes.</li>
          </ul>
        </li>
        <li>
          <t><strong>"client" Object</strong>  </t>
          <ul spacing="normal">
            <li>Additional information about the Client that the GS would require related to an extension.</li>
          </ul>
        </li>
        <li>
          <t><strong>"user" Object</strong>  </t>
          <ul spacing="normal">
            <li>Additional information about the User that the GS would require related to an extension.</li>
          </ul>
        </li>
        <li>
          <t><strong>"authorization" Object</strong>  </t>
          <ul spacing="normal">
            <li>Additional authorization schemas in addition to OAuth 2.0 scopes and RAR.</li>
          </ul>
        </li>
        <li>
          <t><strong>"claims" Object</strong>  </t>
          <ul spacing="normal">
            <li>Additional claim schemas in addition to OpenID Connect claims and Verified Credentials.</li>
          </ul>
        </li>
        <li>
          <t><strong>interaction modes</strong>  </t>
          <ul spacing="normal">
            <li>Additional types of interactions a Client can start with the User.</li>
          </ul>
        </li>
        <li>
          <t><strong>Continuous Authentication</strong>  </t>
          <ul spacing="normal">
            <li>An extension could define a mechanism for the Client to regularly provide continuous authentication signals and receive responses.</li>
          </ul>
        </li>
      </ul>
      <t>[Editor: do we specify access token / handle introspection in this document, or leave that to an extension?]</t>
      <t>[Editor: do we specify access token / handle revocation in this document, or leave that to an extension?]</t>
    </section>
    <section anchor="rational" numbered="true" toc="default">
      <name>Rational</name>
      <ol spacing="normal" type="1">
        <li>
          <t><strong>Why is there only one mechanism for the Client to authenticate with the GS? Why not support other mechanisms?</strong>  </t>
          <t>
Having choices requires implementers to understand which choice is preferable for them. Having one default mechanism in the document for the Client to authenticate simplifies most implementations. Deployments that have unique characteristics can select other mechanisms that are preferable in specific environments.</t>
        </li>
        <li>
          <t><strong>Why is the default Client authentication JOSE rather than MTLS?</strong>  </t>
          <t>
MTLS cannot be used today by a Dynamic Client. MTLS requires the application to have access below what is typically the application layer, that is often not available on some platforms. JOSE is done at the application layer. Many GS deployments will be an application behind a proxy performing TLS, and there are risks in the proxy passing on the results of MTLS.</t>
        </li>
        <li>
          <t><strong>Why is the default Client authentication JOSE rather than HTTP signing?</strong>  </t>
          <t>
There is currently no widely deployed open standard for HTTP signing. Additionally, HTTP signing requires passing all the relevant parts of the HTTP request to downstream services within an GS that may need to independently verify the Client identity.</t>
        </li>
        <li>
          <t><strong>What are the advantages of using JOSE for the Client to authenticate to the GS and a resource?</strong>  </t>
          <t>
Both Registered Clients and Dynamic Clients can have a private key, eliminating the public Client issues in OAuth 2.0, as a Dynamic Client can create an ephemeral key pair. Using asymetric cryptography also allows each instance of a Registered Client to have its own private key if it can obtain a certificate binding its public key to the public key the GS has for the Client. Signed tokens can be passed to downstream components in a GS or RS to enable independent verification of the Client and its request. The GS Initiated Sequence <xref target="GSInitiatedGrant" format="default"/> requires a URL safe parameter, and JOSE is URL safe.</t>
        </li>
        <li>
          <t><strong>Why does the GS not return parameters to the Client in the redirect url?</strong>  </t>
          <t>
Passing parameters via a browser redirection is the source of many of the security risks in OAuth 2.0. It also presents a challenge for smart devices. In this protocol, the redirection from the Client to the GS is to enable the GS to interact with the User, and the redirection back to the Client is to hand back interaction control to the Client if the redirection was a full browser redirect. Unlike OAuth 2.0, the identity of the Client is independent of the URI the GS redirects to.</t>
        </li>
        <li>
          <t><strong>Why is there not a UserInfo endpoint as there is with OpenID Connect?</strong>  </t>
          <t>
Since the Client can Read Grant at any time, it get the same functionality as the UserInfo endpoint, without the Client having to manage a separate access token and refresh token. If the Client would like additional claims, it can Update Grant, and the GS will let the Client know if an interaction is required to get any of the additional claims, which the Client can then start.  </t>
          <t>
[Editor: is there some other reason to have the UserInfo endpoint?]</t>
        </li>
        <li>
          <t><strong>Why is there still a Client ID?</strong>  </t>
          <t>
The GS needs an identifier to fetch the meta data associated with a Client such as the name and image to display to the User, and the policies on what a Client is allowed to do. The Client ID was used in OAuth 2.0 for the same purpose, which simplifies migration. Dynamic Clients do not have a Client ID.</t>
        </li>
        <li>
          <t><strong>Why have both claims and authorizations?</strong>  </t>
          <t>
There are use cases for each that are independent: authenticating a user and providing claims vs granting access to a resource. A request for an authorization returns an access token which may have full CRUD capabilities, while a request for a claim returns the claim about the User - with no create, update or delete capabilities. While the UserInfo endpoint in OIDC may be thought of as a resource, separating the concepts and how they are requested keeps each of them simpler in the Editor's opinion. :)</t>
        </li>
        <li>
          <t><strong>Why specify HTTP/2 or later and TLS 1.3 or later for Client and GS communication in ?</strong><xref target="JOSEauthN" format="default"/>  </t>
          <t>
Knowing the GS supports HTTP/2 enables a Client to set up a connection faster. HTTP/2 will be more efficient when Clients have large numbers of access tokens and are frequently refreshing them at the GS as there will be less network traffic. Mandating TLS 1.3 similarly improves the performance and security of Clients and GS when setting up a TLS connection.</t>
        </li>
        <li>
          <t><strong>Why do some of the JSON objects only have one child, such as the identifiers object in the user object in the Grant Request?</strong>  </t>
          <t>
It is difficult to forecast future use cases. Having more resolution may mean the difference between a simple extension, and a convoluted extension.</t>
        </li>
        <li>
          <t><strong>Why is the "iss" included in the "oidc" identifier object? Would the "sub" not be enough for the GS to identify the User?</strong>  </t>
          <t>
This decouples the GS from the OpenID Provider (OP). The GS identifier is the GS URI, which is the endpoint at the GS. The OP issuer identifier will likely not be the same as the GS URI. The GS may also provide claims from multiple OPs.</t>
        </li>
        <li>
          <t><strong>Why complicate things with interaction.keep?</strong>  </t>
          <t>
The common sequence has a back and forth between the Client and the GS, and the Client can update the Grant and have a new interaction. Keeping the interaction provides a more seamless user experience where the results from the first request determine subsequent requests. For example, a common pattern is to use a GS to authenticate the User at the Client, and to register the User at the Client using additional claims from the GS. The Client does not know a priori if the User is a new User, or a returning User. Asking a returning User to consent releasing claims they have already provided is a poor User experience, as is sending the User back to the GS. The Client requesting identity first enables the Client to get a response from the GS while the GS is still interacting with the User, so that the Client can request additional claims only if needed. Additionally, the claims a Client may want about a User may be dependent on some initial Claims. For example, if a User is in a particular country, additional or different Claims my be required by the Client.  </t>
          <t>
There are also benefits for the GS. Today, a GS usually keeps track of which claims a Client has requested for a User. Storing this information for all Clients a User uses may be undesirable for a GS that does not want to have that information about the User. Keeping the interaction allows the Client to track what information it has about the User, and the GS can remain stateless.</t>
        </li>
        <li>
          <t><strong>Why is there a "jose+body" RS access mechanism method  for the Client?</strong><xref target="jose_bodyMech" format="default"/>  </t>
          <t>
There are numerous use cases where the RS wants non-repudiation and providence of the contents of an API call. For example, the UGS Service Supplier Framework for Authentication and Authorization <xref target="UTM" format="default"/>.</t>
        </li>
        <li>
          <t><strong>Why use URIs to instead of handles for the Grant and Authorization?</strong>  </t>
          <t>
A URI is an identifier just like a handle that can contain GS information that is opaque to the Client - so it has all the features of a handle, plus it can be the URL that is resolved to manipulate a Grant or an Authorization. As the Grant URI and AZ URI are defined to start with the GS URI, the Client (and GS) can easily determine which GS a Grant or Authorization belong to. URIs also enable a RESTful interface to the GS functionality.</t>
        </li>
        <li>
          <t><strong>Why use the OPTIONS verb on the GS URI? Why not use a .well-known mechanism?</strong>  </t>
          <t>
Having the GS URI endpoint respond to the metadata allows the GS to provide Client specific results using the same Client authentication used for other requests to the GS. It also reduces the risk of a mismatch between what the advertised metadata, and the actual metadata. A .well-known discovery mechanism may be defined to resolve from a hostname to the GS URI.</t>
        </li>
        <li>
          <t><strong>Why support UPDATE, DELETE, and OPTIONS verbs on the AZ URI?</strong>  </t>
          <t>
Maybe there are no use cases for them [that the editor knows of], but the GS can not implement, and they are available if use cases come up.</t>
        </li>
        <li>
          <t><strong>Why have both Client ID and Client Handle?</strong>  </t>
          <t>
While they both refer to a Client in the protocol, the Client ID refers to a pre-registered client,and the Client Handle is specific to an instance of a Dynamic Client. Using separate terms clearly differentiates which identifier is being presented to the GS.</t>
        </li>
      </ol>
    </section>
    <section anchor="acknowledgments" numbered="true" toc="default">
      <name>Acknowledgments</name>
      <t>This draft derives many of its concepts from Justin Richer's Transactional Authorization draft <xref target="TxAuth" format="default"/>.</t>
      <t>Additional thanks to Justin Richer and Annabelle Richard Backman for their strong critique of earlier drafts.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>[ JOSE parameter for Authorization HTTP header ]</t>
      <t>TBD</t>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>TBD</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </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>
        </reference>
        <reference anchor="RFC3966" target="https://www.rfc-editor.org/info/rfc3966" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3966.xml">
          <front>
            <title>The tel URI for Telephone Numbers</title>
            <seriesInfo name="DOI" value="10.17487/RFC3966"/>
            <seriesInfo name="RFC" value="3966"/>
            <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne">
              <organization/>
            </author>
            <date year="2004" month="December"/>
            <abstract>
              <t>This document specifies the URI (Uniform Resource Identifier) scheme "tel".  The "tel" URI describes resources identified by telephone numbers.  This document obsoletes RFC 2806.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC5322" target="https://www.rfc-editor.org/info/rfc5322" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5322.xml">
          <front>
            <title>Internet Message Format</title>
            <seriesInfo name="DOI" value="10.17487/RFC5322"/>
            <seriesInfo name="RFC" value="5322"/>
            <author initials="P." surname="Resnick" fullname="P. Resnick" role="editor">
              <organization/>
            </author>
            <date year="2008" month="October"/>
            <abstract>
              <t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages.  This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC4949" target="https://www.rfc-editor.org/info/rfc4949" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4949.xml">
          <front>
            <title>Internet Security Glossary, Version 2</title>
            <seriesInfo name="DOI" value="10.17487/RFC4949"/>
            <seriesInfo name="RFC" value="4949"/>
            <seriesInfo name="FYI" value="36"/>
            <author initials="R." surname="Shirey" fullname="R. Shirey">
              <organization/>
            </author>
            <date year="2007" month="August"/>
            <abstract>
              <t>This Glossary provides definitions, abbreviations, and explanations of terminology for information system security. The 334 pages of entries offer recommendations to improve the comprehensibility of written material that is generated in the Internet Standards Process (RFC 2026). The recommendations follow the principles that such writing should (a) use the same term or definition whenever the same concept is mentioned; (b) use terms in their plainest, dictionary sense; (c) use terms that are already well-established in open publications; and (d) avoid terms that either favor a particular vendor or favor a particular technology or mechanism over other, competing techniques that already exist or could be developed.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC5646" target="https://www.rfc-editor.org/info/rfc5646" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5646.xml">
          <front>
            <title>Tags for Identifying Languages</title>
            <seriesInfo name="DOI" value="10.17487/RFC5646"/>
            <seriesInfo name="RFC" value="5646"/>
            <seriesInfo name="BCP" value="47"/>
            <author initials="A." surname="Phillips" fullname="A. Phillips" role="editor">
              <organization/>
            </author>
            <author initials="M." surname="Davis" fullname="M. Davis" role="editor">
              <organization/>
            </author>
            <date year="2009" month="September"/>
            <abstract>
              <t>This document describes the structure, content, construction, and semantics of language tags for use in cases where it is desirable to indicate the language used in an information object.  It also describes how to register values for use in language tags and the creation of user-defined extensions for private interchange.  This document  specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6749" target="https://www.rfc-editor.org/info/rfc6749" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <seriesInfo name="DOI" value="10.17487/RFC6749"/>
            <seriesInfo name="RFC" value="6749"/>
            <author initials="D." surname="Hardt" fullname="D. Hardt" role="editor">
              <organization/>
            </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>
        </reference>
        <reference anchor="RFC6750" target="https://www.rfc-editor.org/info/rfc6750" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6750.xml">
          <front>
            <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
            <seriesInfo name="DOI" value="10.17487/RFC6750"/>
            <seriesInfo name="RFC" value="6750"/>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="D." surname="Hardt" fullname="D. Hardt">
              <organization/>
            </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>
        </reference>
        <reference anchor="RFC7515" target="https://www.rfc-editor.org/info/rfc7515" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7515.xml">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7515"/>
            <seriesInfo name="RFC" value="7515"/>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization/>
            </author>
            <author initials="N." surname="Sakimura" fullname="N. Sakimura">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures.  Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification.  Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC7516" target="https://www.rfc-editor.org/info/rfc7516" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7516.xml">
          <front>
            <title>JSON Web Encryption (JWE)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7516"/>
            <seriesInfo name="RFC" value="7516"/>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="J." surname="Hildebrand" fullname="J. Hildebrand">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>JSON Web Encryption (JWE) represents encrypted content using JSON-based data structures.  Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries defined by that specification.  Related digital signature and Message Authentication Code (MAC) capabilities are described in the separate JSON Web Signature (JWS) specification.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC7519" target="https://www.rfc-editor.org/info/rfc7519" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml">
          <front>
            <title>JSON Web Token (JWT)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7519"/>
            <seriesInfo name="RFC" value="7519"/>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization/>
            </author>
            <author initials="N." surname="Sakimura" fullname="N. Sakimura">
              <organization/>
            </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>
        </reference>
        <reference anchor="RFC7540" target="https://www.rfc-editor.org/info/rfc7540" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7540.xml">
          <front>
            <title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7540"/>
            <seriesInfo name="RFC" value="7540"/>
            <author initials="M." surname="Belshe" fullname="M. Belshe">
              <organization/>
            </author>
            <author initials="R." surname="Peon" fullname="R. Peon">
              <organization/>
            </author>
            <author initials="M." surname="Thomson" fullname="M. Thomson" role="editor">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t>
              <t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <seriesInfo name="DOI" value="10.17487/RFC8259"/>
            <seriesInfo name="RFC" value="8259"/>
            <seriesInfo name="STD" value="90"/>
            <author initials="T." surname="Bray" fullname="T. Bray" role="editor">
              <organization/>
            </author>
            <date year="2017" month="December"/>
            <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>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <seriesInfo name="DOI" value="10.17487/RFC8446"/>
            <seriesInfo name="RFC" value="8446"/>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization/>
            </author>
            <date year="2018" month="August"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="OIDC" target="https://openiD.net/specs/openiD-connect-core-1_0.html">
          <front>
            <title>OpenID Connect Core 1.0</title>
            <author initials="N." surname="Sakimora">
              <organization/>
            </author>
            <author initials="J." surname="Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones">
              <organization/>
            </author>
            <author initials="B." surname="de Medeiros">
              <organization/>
            </author>
            <author initials="C." surname="Mortimore">
              <organization/>
            </author>
            <date year="2014" month="November"/>
          </front>
        </reference>
        <reference anchor="OIDC4IA" target="https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html">
          <front>
            <title>OpenID Connect for Identity Assurance 1.0</title>
            <author initials="T." surname="Lodderstedt">
              <organization/>
            </author>
            <author initials="D." surname="Fett">
              <organization/>
            </author>
            <date year="2019" month="October"/>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7049" target="https://www.rfc-editor.org/info/rfc7049" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7049.xml">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7049"/>
            <seriesInfo name="RFC" value="7049"/>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization/>
            </author>
            <author initials="P." surname="Hoffman" fullname="P. Hoffman">
              <organization/>
            </author>
            <date year="2013" month="October"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation.  These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8252" target="https://www.rfc-editor.org/info/rfc8252" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8252.xml">
          <front>
            <title>OAuth 2.0 for Native Apps</title>
            <seriesInfo name="DOI" value="10.17487/RFC8252"/>
            <seriesInfo name="RFC" value="8252"/>
            <seriesInfo name="BCP" value="212"/>
            <author initials="W." surname="Denniss" fullname="W. Denniss">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization/>
            </author>
            <date year="2017" month="October"/>
            <abstract>
              <t>OAuth 2.0 authorization requests from native apps should only be made through external user-agents, primarily the user's browser.  This specification details the security and usability reasons why this is the case and how native apps and authorization servers can implement this best practice.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8152" target="https://www.rfc-editor.org/info/rfc8152" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8152.xml">
          <front>
            <title>CBOR Object Signing and Encryption (COSE)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8152"/>
            <seriesInfo name="RFC" value="8152"/>
            <author initials="J." surname="Schaad" fullname="J. Schaad">
              <organization/>
            </author>
            <date year="2017" month="July"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need for the ability to have basic security services defined for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol.  This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization.  This specification additionally describes how to represent cryptographic keys using CBOR.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8323" target="https://www.rfc-editor.org/info/rfc8323" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8323.xml">
          <front>
            <title>CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</title>
            <seriesInfo name="DOI" value="10.17487/RFC8323"/>
            <seriesInfo name="RFC" value="8323"/>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization/>
            </author>
            <author initials="S." surname="Lemay" fullname="S. Lemay">
              <organization/>
            </author>
            <author initials="H." surname="Tschofenig" fullname="H. Tschofenig">
              <organization/>
            </author>
            <author initials="K." surname="Hartke" fullname="K. Hartke">
              <organization/>
            </author>
            <author initials="B." surname="Silverajan" fullname="B. Silverajan">
              <organization/>
            </author>
            <author initials="B." surname="Raymor" fullname="B. Raymor" role="editor">
              <organization/>
            </author>
            <date year="2018" month="February"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP), although inspired by HTTP, was designed to use UDP instead of TCP.  The message layer of CoAP over UDP includes support for reliable delivery, simple congestion control, and flow control.</t>
              <t>Some environments benefit from the availability of CoAP carried over reliable transports such as TCP or Transport Layer Security (TLS). This document outlines the changes required to use CoAP over TCP, TLS, and WebSockets transports.  It also formally updates RFC 7641 for use with these transports and RFC 7959 to enable the use of larger messages over a reliable transport.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8628" target="https://www.rfc-editor.org/info/rfc8628" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8628.xml">
          <front>
            <title>OAuth 2.0 Device Authorization Grant</title>
            <seriesInfo name="DOI" value="10.17487/RFC8628"/>
            <seriesInfo name="RFC" value="8628"/>
            <author initials="W." surname="Denniss" fullname="W. Denniss">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="H." surname="Tschofenig" fullname="H. Tschofenig">
              <organization/>
            </author>
            <date year="2019" month="August"/>
            <abstract>
              <t>The OAuth 2.0 device authorization grant is designed for Internet- connected devices that either lack a browser to perform a user-agent- based authorization or are input constrained to the extent that requiring the user to input text in order to authenticate during the authorization flow is impractical.  It enables OAuth clients on such devices (like smart TVs, media consoles, digital picture frames, and printers) to obtain user authorization to access protected resources by using a user agent on a separate device.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="browser_based_apps" target="https://tools.ietf.org/html/draft-ietf-oauth-browser-based-apps-04">
          <front>
            <title>OAuth 2.0 for Browser-Based Apps</title>
            <author initials="A." surname="Parecki">
              <organization/>
            </author>
            <author initials="D." surname="Waite">
              <organization/>
            </author>
            <date year="2019" month="September"/>
          </front>
        </reference>
        <reference anchor="RAR" target="https://tools.ietf.org/html/draft-ietf-oauth-rar-00">
          <front>
            <title>OAuth 2.0 Rich Authorization Requests</title>
            <author initials="T." surname="Lodderstedt">
              <organization/>
            </author>
            <author initials="J." surname="Richer">
              <organization/>
            </author>
            <author initials="B." surname="Campbell">
              <organization/>
            </author>
            <date year="2020" month="January"/>
          </front>
        </reference>
        <reference anchor="W3C_VC" target="https://w3c.github.io/vc-data-model/">
          <front>
            <title>Verifiable Credentials Data Model 1.0</title>
            <author initials="M." surname="Sporny">
              <organization/>
            </author>
            <author initials="G." surname="Noble">
              <organization/>
            </author>
            <author initials="D." surname="Chadwick">
              <organization/>
            </author>
            <date year="2019" month="November"/>
          </front>
        </reference>
        <reference anchor="QR_Code" target="https://www.iso.org/standard/62021.html">
          <front>
            <title>ISO/IEC 18004:2015 - Information technology - Automatic identification and data capture techniques - QR Code bar code symbology specification</title>
            <author>
              <organization/>
            </author>
            <date year="2015" month="February"/>
          </front>
        </reference>
        <reference anchor="TxAuth" target="https://tools.ietf.org/html/draft-richer-transactional-authz-04">
          <front>
            <title>Transactional AuthN</title>
            <author initials="J." surname="Richer">
              <organization/>
            </author>
            <date year="2019" month="December"/>
          </front>
        </reference>
        <reference anchor="UTM" target="https://utm.arc.nasa.gov/docs/2019-UTM_Framework-NGSA-TM220364.pdf">
          <front>
            <title>UGS Service Supplier Framework for Authentication and AuthN</title>
            <author initials="J." surname="Rios">
              <organization/>
            </author>
            <author initials="I." surname="Smith">
              <organization/>
            </author>
            <author initials="P." surname="Venkatesen">
              <organization/>
            </author>
            <date year="2019" month="September"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="document-history" numbered="true" toc="default">
      <name>Document History</name>
      <section anchor="draft-hardt-xauth-protocol-00" numbered="true" toc="default">
        <name>draft-hardt-xauth-protocol-00</name>
        <ul spacing="normal">
          <li>Initial version</li>
        </ul>
      </section>
      <section anchor="draft-hardt-xauth-protocol-01" numbered="true" toc="default">
        <name>draft-hardt-xauth-protocol-01</name>
        <ul spacing="normal">
          <li>text clean up</li>
          <li>added OIDC4IA claims</li>
          <li>added "jws" method for accessing a resource.</li>
          <li>renamed Initiation Request -&gt; Grant Request</li>
          <li>renamed Initiation Response -&gt; Interaction Response</li>
          <li>renamed Completion Request -&gt; Authorization Request</li>
          <li>renamed Completion Response -&gt; Grant Request</li>
          <li>renamed completion handle -&gt; authorization handle</li>
          <li>added Authentication Request, Authentication Response, authentication handle</li>
        </ul>
      </section>
      <section anchor="draft-hardt-xauth-protocol-02" numbered="true" toc="default">
        <name>draft-hardt-xauth-protocol-02</name>
        <ul spacing="normal">
          <li>major rewrite</li>
          <li>handles are now URIs</li>
          <li>the collection of claims and authorizations are a Grant</li>
          <li>an Authorization is its own type</li>
          <li>lots of sequences added</li>
        </ul>
      </section>
      <section anchor="draft-hardt-xauth-protocol-03" numbered="true" toc="default">
        <name>draft-hardt-xauth-protocol-03</name>
        <ul spacing="normal">
          <li>fixed RO definition</li>
          <li>improved language in Rationals</li>
          <li>added user code interaction method, and aligned qrcode interaction method</li>
          <li>added completion_uri for code flows</li>
        </ul>
      </section>
      <section anchor="draft-hardt-xauth-protocol-04" numbered="true" toc="default">
        <name>draft-hardt-xauth-protocol-04</name>
        <ul spacing="normal">
          <li>renamed interaction uris to have purpose specific names</li>
        </ul>
      </section>
      <section anchor="draft-hardt-xauth-protocol-05" numbered="true" toc="default">
        <name>draft-hardt-xauth-protocol-05</name>
        <ul spacing="normal">
          <li>separated claims from identifiers in request user object</li>
          <li>simplified reciprocal grant flow</li>
          <li>reduced interactions to redirect and indirect</li>
          <li>simplified interaction parameters</li>
          <li>added in language for Client to verify interaction completion</li>
          <li>added Verify Grant API and Interaction Nonce</li>
          <li>replaced Refresh AuthZ with Read AuthZ. Read and refresh are same operation.</li>
        </ul>
      </section>
      <section anchor="draft-hardt-xauth-protocol-06" numbered="true" toc="default">
        <name>draft-hardt-xauth-protocol-06</name>
        <ul spacing="normal">
          <li>fixup examples to match specification</li>
        </ul>
      </section>
      <section anchor="draft-hardt-xauth-protocol-07" numbered="true" toc="default">
        <name>draft-hardt-xauth-protocol-07</name>
        <ul spacing="normal">
          <li>refactored interaction request and response syntax, and enabled interaction mode negotiation</li>
          <li>generation of client handle by GS for dynamic clients</li>
          <li>renamed title to Grant Negotiation and Authorization Protocol. Preserved draft-hardt-xauth-protocol filename to ease tracking changes.</li>
          <li>changed Authorizations to be key / value pairs (aka dictionary) instead of a JSON array</li>
        </ul>
      </section>
    </section>
    <section anchor="comparison-with-oauth-20-and-openid-connect" numbered="true" toc="default">
      <name>Comparison with OAuth 2.0 and OpenID Connect</name>
      <t><strong>Changed Features</strong></t>
      <t>The major changes between this protocol and OAuth 2.0 and OpenID Connect are:</t>
      <ul spacing="normal">
        <li>The Client allows uses a private key to authenticate in this protocol instead of the client secret in OAuth 2.0 and OpenID Connect.</li>
        <li>The Client initiates the protocol by making a signed request directly to the GS instead of redirecting the User to the GS.</li>
        <li>The Client does not pass any parameters in redirecting the User to the GS, and optionally only receives an interaction nonce in the redirection back from the GS.</li>
        <li>The refresh_token has been replaced with a AZ URI that both represents the authorization, and is the URI for obtaining a fresh access token.</li>
        <li>The Client can request identity claims to be returned independent of the ID Token. There is no UserInfo endpoint to query claims as there is in OpenID Connect.</li>
        <li>The GS URI is the token endpoint.</li>
      </ul>
      <t><strong>Preserved Features</strong></t>
      <ul spacing="normal">
        <li>This protocol reuses the OAuth 2.0 scopes, Client IDs, and access tokens of OAuth 2.0.</li>
        <li>This protocol reuses the Client IDs, Claims and ID Token of OpenID Connect.</li>
        <li>No change is required by the Client or the RS for accessing existing bearer token protected APIs.</li>
      </ul>
      <t><strong>New Features</strong></t>
      <ul spacing="normal">
        <li>A Grant represents both the user identity claims and RS access granted to the Client.</li>
        <li>The Client can verify, update, retrieve, and delete a Grant.</li>
        <li>The GS can initiate a flow by creating a Grant and redirecting the User to the Client with the Grant URI.</li>
        <li>The Client can discovery if a GS has a User with an identifier before the GS interacts with the User.</li>
        <li>The Client can request the GS to first authenticate the User and return User identity claims, and then the Client can update Grant request based on the User identity.</li>
        <li>Support for scannable code initiated interactions.</li>
        <li>Each Client instance can have its own private / public key pair.</li>
        <li>Highly extensible per <xref target="Extensibility" format="default"/>.</li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->
</rfc>
