<?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 RFC7519 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml">
<!ENTITY RFC8259 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
<!ENTITY RFC7049 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7049.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">
]>
<rfc ipr="trust200902" docName="draft-hardt-xauth-protocol-08" 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-08"/>
    <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 may 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 document describes the core Grant Negotiation and Authorization Protocol (GNAP). The protocol supports the widely deployed use cases supported by OAuth 2.0 <xref target="RFC6749" format="default"/> &amp; <xref target="RFC6750" format="default"/>, OpenID Connect <xref target="OIDC" format="default"/> - an extension of OAuth 2.0, as well as other extensions. Related documents include: GNAP - Advanced Features <xref target="GNAP_Advanced" format="default"/> and JOSE Authentication <xref target="JOSE_Authentication" format="default"/> that describes the JOSE mechanisms for client authentication.</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>GNAP simplifies the overall architectural model, takes advantage of today's technology landscape, provides support for all the widely deployed use cases, offers numerous extension points, and addresses many of the security issues in OAuth 2.0 by passing parameters securely between parties, rather than via a browser redirection. .</t>
      <t>While GNAP is not backwards compatible with OAuth 2.0, it strives to minimize the migration effort.</t>
      <t>GNAP 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 (GS).</t>
      <t>User consent is often required at the GS. GNAP enables a Client and GS to negotiate the interaction mode for the GS to obtain consent.</t>
      <t>The suggested pronunciation of GNAP is the same as the English word "nap", a silent "g" as in "gnaw".</t>
      <t><em>[Editor: suggestions on how to improve this are welcome!]</em></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  |
    |        | (1) |  Server (GS)  | _ _ |   Server   |
    |        |<----|               |     |    (RS)    |
    |        |     +---------------+     |            |
    |        |-------------------------->|            |
    |        |           (2)             |            |
    |        |<--------------------------|            |
    +--------+                           +------------+
]]></artwork>
        <t>This document specifies interactions between the Client and GS (1), and the Client and RS (2).</t>
        <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 Grant may include access tokens that the Client uses to access the RS. There are two types of Clients: Registered Clients and Dynamic Clients. All Clients have a private asymetric 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 previously registered with the GS, and each instance will generate it's own asymetric key pair so it can prove it is the same instance of the Client on subsequent requests. The GS MAY return a Dynamic Client a Client Handle for the Client to identify itself in subsequent requests. 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. The GS MAY invalidate a Grant at any time.</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 and contains an access token. The GS may invalidate an Authorization at any time.</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 refresh 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 unique identifier at the GS 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><em>[Editor: review terms]</em></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 programmatically acquiring GS metadata.</t>
      <section anchor="redirect-interaction" numbered="true" toc="default">
        <name>"redirect" Interaction</name>
        <t>The Client is a web application and wants a Grant from the User:</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)--- Read 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"/> containing an interaction.redirect object 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.redirect object.</li>
          <li>
            <strong>Interaction Transfer</strong> The Client redirects the User to the authorization_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 redirect_uri at the Client.</li>
          <li>
            <strong>Read Grant</strong> The Client makes an HTTP GET request 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="usercode-interaction" numbered="true" toc="default">
        <name>"user_code" Interaction</name>
        <t>A Client is on a device wants a Grant from the User:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+                                  +-------+
| Client |                                  |  GS   |
|        |--(1)--- Create Grant ----------->|       |
|        |                                  |       |
|        |<--- Interaction Response ---(2)--|       |         +------+
|        |                                  |       |         | User |
|        |--(3)--- Read Grant ------------->|       |         |      |
|        |                                  |       |<--(4)-->|      |
|        |                                  |       |  authN  |      |
|        |                                  |       |         |      |
|        |                                  |       |<--(5)---|      |
|        |                                  |       |  code   |      |
|        |                                  |       |         |      |
|        |                                  |       |<--(6)-->|      |
|        |                                  |       |  authZ  |      |
|        |                                  |       |         |      |
|        |<--------- Grant Response ---(7)--|       |         |      |
|        |                                  |       |         |      |
+--------+                                  |       |         |      |
                                            |       |         |      |
+--------+                                  |       |         |      |
| Client |<----- Completion URI Redirect -- | - - - | --(8)---|      |
| Server |                                  |       |         |      |
+--------+                                  +-------+         +------+
]]></artwork>
        <ol spacing="normal" type="1">
          <li>
            <strong>Create Grant</strong> The Client creates a Request JSON document <xref target="RequestJSON" format="default"/> containing an interaction.user_code object 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.user_code object.</li>
          <li>
            <strong>Read Grant</strong> The Client makes an HTTP GET request to the Grant URI.</li>
          <li>
            <strong>User Authentication</strong> The User loads display_uri in their browser, and the GS authenticates the User.</li>
          <li>
            <strong>User Code</strong> The User enters the code at the GS.</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>Completion URI Redirect</strong> The GS redirects the User to the completion_uri provided by the Client.</li>
        </ol>
      </section>
      <section anchor="independent-ro-authorization" numbered="true" toc="default">
        <name>Independent RO Authorization</name>
        <t>The Client wants access to resources that require the GS to interact with the RO, who is not interacting with the Client. The authorization from the RO may take some time, 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 Wait Response (<xref target="WaitResponse" format="default"/>) containing the Grant URI and the "wait" attribute.</li>
          <li>
            <strong>Client Waits</strong> The Client waits for the time specified in the "wait" attribute.</li>
          <li>
            <strong>RO AuthZ</strong> The GS interacts with the RO to determine which identity claims and/or resource authorizations 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="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 |                             | Resource |  |  GS   |
|        |--(1)--- Access Resource --->|  Server  |  |       | 
|        |<------- Resource Response --|   (RS)   |  |       | 
|        |                             |          |  |       | 
|        |--(2)--- Access Resource --->|          |  |       | 
|        |<------- Error Response -----|          |  |       |
|        |                             |          |  |       | 
|        |                             +----------+  |       |
|        |                                           |       |
|        |--(3)--- Read AuthZ ---------------------->|       |
|        |<------- AuthZ Response -------------------|       |
|        |                                           |       |
+--------+                                           +-------+
]]></artwork>
        <ol spacing="normal" type="1">
          <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 needs to be refreshed.</li>
          <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>
        </ol>
      </section>
    </section>
    <section anchor="gs-apis" numbered="true" toc="default">
      <name>GS APIs</name>
      <t><strong>Client Authentication</strong></t>
      <t>All GS APIs except for GS Options require the Client to authenticate. Authentication mechanisms include:</t>
      <ul spacing="normal">
        <li>JOSE Authentication <xref target="JOSE_Authentication" format="default"/></li>
        <li>[Others TBD]*</li>
      </ul>
      <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">GS Options</td>
              <td align="left">OPTIONS</td>
              <td align="left">GS URI</td>
              <td align="left">metadata</td>
            </tr>
            <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">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">Read AuthZ</td>
              <td align="left">GET</td>
              <td align="left">AZ URI</td>
              <td align="left">authorization</td>
            </tr>
          </tbody>
        </table>
      </section>
      <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. This is a Greant Request.</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 of a web application Client 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 of a device Client requesting access to play music:</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/c/indirect"
        },
        "user_code": {
            "completion_uri": "https://device.example/c/user_code"
         }
    },
    "authorization": {
        "type"      : "oauth_scope",
        "scope"     : "play_music"
    }
}
]]></artwork>
      </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. The Client MAY read a Grant until it expires or has been invalidated.</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>
      </section>
      <section anchor="RequestJSON" numbered="true" toc="default">
        <name>Request JSON</name>
        <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</li>
        </ul>
        <section anchor="client-object" numbered="true" toc="default">
          <name>"client" Object</name>
          <t>The client object MUST only one of the following:</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 GS will show the the User the display.name and display.uri values when prompting for authorization.</t>
          <t><em>[Editor: a max length for the name and URI so a GS can reserve appropriate space?]</em></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> - an optional object containing parameters that are applicable for all interaction modes. 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><em>[Editor: ui_locales is taken from OIDC. Why space-separated and not a JSON array?]</em></t>
        </section>
        <section anchor="RequestUserObject" numbered="true" toc="default">
          <name>"user" Object</name>
          <ul spacing="normal">
            <li>
              <t><strong>identifiers</strong> - The identifiers MAY be used by the GS to improve the User experience. This object 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>
          </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><em>[Editor: details may change as the RAR document evolves]</em></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 per <xref target="AuthorizationObject" format="default"/>.</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> - <em>[Editor: define how W3C Verifiable Credentials  can be requested.]</em><xref target="W3C_VC" format="default"/></li>
          </ul>
        </section>
      </section>
      <section anchor="ReadAuthZ" numbered="true" toc="default">
        <name>Read Authorization</name>
        <t>The Client acquires and refreshes 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="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>
        <ul spacing="normal">
          <li>
            <strong>uri</strong> - the GS URI.</li>
          <li>
            <strong>client_authentication</strong> - a JSON array of the Client Authentication mechanisms supported by the GS</li>
          <li>
            <strong>interactions</strong> - a JSON 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 JSON array of the cryptographic algorithms supported by the GS. [details TBD]*</li>
          <li>
            <t><strong>features</strong> - an object containing feature support  </t>
            <ul spacing="normal">
              <li>
                <strong>authorizations</strong> - boolean indicating if a request for more than one authorization in a request is supported.</li>
            </ul>
          </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>
    <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>
          <li>warnings</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>Note in this example the access token can not be refreshed, and expires in an hour.</t>
        <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>
        <t>Note in this example the GS only provided the AZ URI, and Client must acquire the Authorization per <xref target="ReadAuthZ" format="default"/></t>
      </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>
          <li>warnings</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>and MAY include the following from the Response JSON <xref target="ResponseJSON" format="default"/></t>
        <ul spacing="normal">
          <li>warnings</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 MUST contain only a "uri" attribute or the following from Authorization JSON <xref target="AuthorizationJSON" format="default"/>:</t>
          <ul spacing="normal">
            <li>mechanism</li>
            <li>token</li>
          </ul>
          <t>The authorization object MAY contain any of the following from Authorization JSON <xref target="AuthorizationJSON" format="default"/>:</t>
          <ul spacing="normal">
            <li>access</li>
            <li>expires_in</li>
            <li>uri</li>
          </ul>
          <t>If there is no "uri" attribute, the access token can not be refreshed. If only the "uri" attribute is present, the Client MUST acquire the Authorization per <xref target="ReadAuthZ" format="default"/></t>
        </section>
        <section anchor="ResponseAuthorizationsObject" numbered="true" toc="default">
          <name>"authorizations" Object</name>
          <t>A key / value pair for each key in the Grant Request "authorizations" object, and the value is per 
<xref target="ResponseAuthorizationObject" format="default"/>.</t>
        </section>
        <section anchor="ResponseClaimsObject" numbered="true" toc="default">
          <name>"claims" Object</name>
          <t>The claims object is a response to the Grant 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. <em>[Editor: details TBD]</em></t>
            </li>
          </ul>
        </section>
        <section anchor="WarningsObject" numbered="true" toc="default">
          <name>"warnings" JSON Array</name>
          <t>Includes zero or more warnings from <xref target="Warnings" format="default"/>,</t>
        </section>
      </section>
      <section anchor="AuthorizationJSON" numbered="true" toc="default">
        <name>Authorization JSON</name>
        <t>The Authorization JSON is the contents of a Grant Response "authorization" object <xref target="ResponseAuthorizationsObject" format="default"/> or the response to a Read AuthZ request by the Client <xref target="ReadAuthZ" 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</li>
          <li>
            <strong>mechanism</strong> - the RS access mechanism. This document defines the "bearer" mechanism as defined in <xref target="RSAccess" format="default"/></li>
          <li>
            <strong>token</strong> - the access token for accessing an RS.</li>
          <li>
            <strong>expires_in</strong> - a numeric value specifying how many seconds until the access token expires.</li>
          <li>
            <strong>uri</strong> - the AZ URI. Used to acquire or refresh an authorization.</li>
          <li>
            <t><strong>access</strong> - an object containing the access granted:  </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"/>. This attribute is OPTIONAL if "type" is "oauth_rich".</li>
            </ul>
          </li>
        </ul>
        <t><em>[Editor: would an optional expiry for the Authorization be useful?]</em></t>
        <t>The following is a non-normative example of Authorization JSON:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "mechanism"     : "bearer",
    "token"         : "eyJJ2D6.example.access.token.mZf9p"
    "expires_in"    : 3600,
    "uri"           : "https://as.example/endpoint/authz/example2",
    "access": {
        "type"   : "oauth_scope",
        "scope"  : "read_calendar write_calendar"
    }
}
]]></artwork>
      </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 Modes</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" numbered="true" toc="default">
        <name>"redirect"</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>
        <t><strong>The request "interaction" object contains:</strong></t>
        <ul spacing="normal">
          <li>
            <strong>redirect_uri</strong>  a unique URI at the Client that the GS will return the User to. The URI MUST not contain the "nonce" from the Grant Request, and MUST not be guessable. This attribute is REQUIRED.</li>
        </ul>
        <t><strong>The response "interaction" object contains:</strong></t>
        <ul spacing="normal">
          <li>
            <strong>authorization_uri</strong> a unique URI at the GS that the Client will redirect the User to. The URI MUST not contain the "nonce" from the Grant Request, and MUST not be guessable. This attribute is REQUIRED.</li>
        </ul>
      </section>
      <section anchor="indirect" numbered="true" toc="default">
        <name>"indirect"</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 redirect 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.</t>
        <t>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>
        <t><strong>The request "interaction" object contains:</strong></t>
        <ul spacing="normal">
          <li>
            <strong>completion_uri</strong> an OPTIONAL URI that the GS will redirect the User's browser to after GS interaction.</li>
        </ul>
        <t><strong>The response "interaction" object contains:</strong></t>
        <ul spacing="normal">
          <li>
            <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. The URI MUST not contain the "nonce" from the Grant Request, and MUST not be guessable. <em>[Editor: recommend a maximum length?]</em></li>
        </ul>
      </section>
      <section anchor="usercode" numbered="true" toc="default">
        <name>"user_code"</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.  <em>[Editor: recommend a minimum entropy?]</em></t>
        <t><strong>The request "interaction" object contains:</strong></t>
        <ul spacing="normal">
          <li>
            <strong>completion_uri</strong> an OPTIONAL URI that the GS will redirect the User's browser to after GS interaction.</li>
        </ul>
        <t><strong>The response "interaction" object contains:</strong></t>
        <ul spacing="normal">
          <li>
            <strong>code</strong> the code the Client displays to the User to enter at the display_uri. This attribute is REQUIRED.</li>
          <li>
            <strong>display_uri</strong> the URI the Client displays to the User to load in a browser to enter the code.</li>
        </ul>
      </section>
    </section>
    <section anchor="RSAccess" numbered="true" toc="default">
      <name>RS Access</name>
      <t>The mechanism the Client MUST use to access an RS is in the Authorization JSON "mechanism" attribute <xref target="ResponseAuthorizationObject" format="default"/>.</t>
      <t>The "bearer" mechanism is defined in Section 2.1 of <xref target="RFC6750" format="default"/></t>
      <t>The "jose" and "jose+body" mechanisms are defined in <xref target="JOSE_Authentication" format="default"/></t>
      <t>A non-normative "bearer" 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 anchor="ErrorResponses" numbered="true" toc="default">
      <name>Error Responses</name>
      <ul spacing="normal">
        <li>TBD</li>
      </ul>
    </section>
    <section anchor="Warnings" numbered="true" toc="default">
      <name>Warnings</name>
      <t>Warnings assist a Client in detecting non-fatal errors.</t>
      <ul spacing="normal">
        <li>TBD</li>
      </ul>
    </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 that return new URIs.</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><em>[Editor: do we specify access token introspection in this document, or leave that to an extension?]</em></t>
    </section>
    <section anchor="rational" numbered="true" toc="default">
      <name>Rational</name>
      <ol spacing="normal" type="1">
        <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>
        <li>
          <t><strong>Why allow Client and GS to negotiate the user interaction mode?</strong>  </t>
          <t>
The Client knows what interaction modes it is capable of, and the GS knows which interaction modes it will permit for a given Grant Request. The Client can then present the intersection to the User to choose which one is preferred. For example, while a device based Client may be willing to do both "indirect" and "user_code", a GS may not enable "indirect" for concern of a session fixation attack. Additional interaction modes will likely become available which allows new modes to be negotiated between Client and GS as each adds additional interaction modes.</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 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. For example, the "global" object in the "interaction" object allows new global parameters to be added without impacting new interaction modes.</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 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><em>[Editor: is there some other reason to have the UserInfo endpoint?]</em></t>
        </li>
        <li>
          <t><strong>Why use URIs for the Grant and Authorization?</strong>  </t>
          <ul spacing="normal">
            <li>Grant URI and AZ URI are defined to start with the GS URI, allowing the Client, and GS to determine which GS a Grant or Authorization belongs to.</li>
            <li>URIs also enable a RESTful interface to the GS functionality.</li>
            <li>A large scale GS can easily separate out the services that provide functionality as routing of requests can be done at the HTTP layer based on URI and HTTP verb. This allows a separation of concerns, independent deployment, and resiliency.</li>
          </ul>
        </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 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>
      </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>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="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="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="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>
        <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="JOSE_Authentication" target="https://tools.ietf.org/html/draft-hardt-gnap-jose">
          <front>
            <title>JOSE Authentication</title>
            <author initials="D." surname="Hardt">
              <organization/>
            </author>
            <date year="2020" month="June"/>
          </front>
        </reference>
        <reference anchor="GNAP_Advanced" target="https://tools.ietf.org/html/draft-hardt-gnap-advanced">
          <front>
            <title>The Grant Negotiation and Authorization Protocol - Advanced Features</title>
            <author initials="D." surname="Hardt">
              <organization/>
            </author>
            <date year="2020" month="June"/>
          </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="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="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="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>
      </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 anchor="draft-hardt-xauth-protocol-08" numbered="true" toc="default">
        <name>draft-hardt-xauth-protocol-08</name>
        <ul spacing="normal">
          <li>split document into three documents: core, advanced, and JOSE authentication.</li>
          <li>grouped access granted into "access" object in Authorization JSON</li>
          <li>added warnings object to the Grant Response JSON</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 GNAP and OAuth 2.0 and OpenID Connect are:</t>
      <ul spacing="normal">
        <li>The Client always uses a private asymetric key to authenticate to the GS. There is no client secret. i</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.</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>GNAP reuses the scopes, Client IDs, and access tokens of OAuth 2.0.</li>
        <li>GNAP 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>All Client calls to the GS are authenticated with asymetric cryptography</li>
        <li>A Grant represents both the user identity claims and RS access granted to the Client.</li>
        <li>Support for scannable code initiated interactions.</li>
        <li>Highly extensible per <xref target="Extensibility" format="default"/>.</li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAMMl3V4AA+19aXPbSJbgd/4KLB2x40OkbtnWTnStSnZVyVGWPJLcFV3d
G44kkSRRBgE2AEpm2f7v8668cJCS7eru2WjPbhcFIK+XL9/9Xg4Gg16cjzM1
18dRXKhJNZipIq4GH9Symg0WRV7l4zwd7DzrVUmVwkfXMx39WKisis71NK8S
VSV5Fqksjk6gRV4kv/OTN9K0F6sKmu3t7O0Mdo7g//XG8GCaF6vjqKziXrIo
jqOqWJbV3s7O8529niq0Oo6u9HhZJNWqN86zUmflsqSvdK+naJjjXgT/kgwe
vxhGP+Gc6UleTFUmc4Bekml2lg0viim9LHJcgY6TKi/oAa/7RTJ+73Wh5ypJ
ARrwdEjA+L9TfDIc53N6P86XWYXTf5sllY6jqwoWVPZ6WV7MYdwbfdyD7y5/
ON3b3X1+zD/3nx8dyc/D/b09+Xnw/MB8cHh0YD44emqfHj093JGfTw9tZ8/2
Dp/TGBdnL04ZELI5Fwudnb2ITvMs0+MK/lvoaHe4w5+oYqqr42hWVYvyeHs7
h2+TF8NMV9vlQo9LeTAYc2P4b6EHu+92hrNqnlIPvJPn+Y2ej3QRPduCXd09
oFf+pkTRQP4rG3Q+jK7U+2SeF6r9g1fD6PtCxaletb9/PYxe5RnAuPXt98Mo
1tFrHeukyDu+OR1Gr/OiwjloA7mDs5N1wJvkRXQW6wzerqKTslwC0o83gDOu
gzO24DwYJNLZQJnO2sB7Ma5yhO7uIYH3+WbwXg+jn/M41kUJ2Fi1fwNn5Add
4UtEoZPLcOF4cqO94U50mYxntXN8qf++1GVVRq2rrvI8LYeJriZDOHnbuJZt
JiP4bJATFSlUMdjZ8db4SmVLVayivd0tIgzfZo2ARTh/XXSiyamaL0Y6TRED
ftk/jf4cnp4/6yKZJGqU6ui00LRbKi2jF6pSgD2xTjs3/3Z/PJwm1Ww5Gib5
9s14AOtUgzm22W47OntH3ZsbNXD/apEX2arj/Y9D6Bam3PEaNv50puJbIGa4
6lcXVy9pg3FxY6aSPgha3t9345l/TDO1GPyWl9rf9mWmo6O7brkl6/D4x/OT
N9FJfIOHJg4mfF92BAAy/cCJUNWy0PdGbW+FSvqqr/Lp/VeZZJM6A3m6YznB
s91DwzWe7e/t0xejIr8tAZtGqoTVqAVMu/1YIyn7nj8efE8fn8DHX3GiZeQB
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
AA==

-->
</rfc>
