<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version  (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tiloca-ace-workflow-and-params-00" category="std" consensus="true" submissionType="IETF" updates="9200" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title abbrev="Alternative ACE Workflow and Parameters">Alternative Workflow and OAuth Parameters for the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-tiloca-ace-workflow-and-params-00"/>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <street>Torshamnsgatan 23</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <date year="2023" month="July" day="10"/>
    <area>Security</area>
    <workgroup>ACE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document updates the Authentication and Authorization for Constrained Environments Framework (ACE, RFC 9200) as follows. First, it defines a new, alternative workflow that the Authorization Server can use for uploading an access token to a Resource Server on behalf of the Client. Second, it defines new parameters and encodings for the OAuth 2.0 token endpoint at the Authorization Server.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
  Authentication and Authorization for Constrained Environments Working Group mailing list (ace@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ace/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://gitlab.com/crimson84/draft-tiloca-ace-workflow-and-params"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>The Authentication and Authorization for Constrained Environments (ACE) framework <xref target="RFC9200"/> defines an architecture to enforce access control for constrained devices. A Client (C) requests an assertion of granted permissions from an Authorization Server (AS) in the form of an access token, then uploads the access token to the target Resource Server (RS), and finally accesses protected resources at the RS according to the permissions specified in the access token.</t>
      <t>The framework has as main building blocks the OAuth 2.0 framework <xref target="RFC6749"/>, the Constrained Application Protocol (CoAP) <xref target="RFC7252"/> for message transfer, CBOR <xref target="RFC8949"/> for compact encoding, and COSE <xref target="RFC9052"/><xref target="RFC9053"/> for self-contained protection of access tokens. In addition, separate profile documents define in detail how the participants in the ACE architecture communicate, especially as to the security protocols that they use.</t>
      <t>This document updates <xref target="RFC9200"/> as follows.</t>
      <ul spacing="normal">
        <li>
          <t>It defines a new, alternative protocol workflow for the ACE framework (see <xref target="sec-workflow"/>), according to which the AS uploads the access token to the RS on behalf of C, and then informs C about the outcome. The new workflow is especially convenient in deployments where the communication leg between C and the RS is constrained, but the communication leg between the AS and the RS is not.  </t>
          <t>
The new workflow has no ambition to replace the original workflow. The AS can use one workflow or the other depending, for example, on the specific RS for which an access token has been issued and the nature of the communication leg with that RS.</t>
        </li>
        <li>
          <t>It defines additional parameters and encodings for the OAuth 2.0 token endpoint at the AS (see <xref target="sec-parameters"/>). These include:  </t>
          <ul spacing="normal">
            <li>"token_uploaded", used by the AS to inform C about the outcome of the token uploading to the RS, as per the new ACE workflow.</li>
            <li>"rs_cnf2", used by the AS to provide C with the public keys of the RSs in the group-audience for which the access token is issued (see <xref section="6.9" sectionFormat="of" target="RFC9200"/>).</li>
            <li>"subject_ids", used by the AS together with the parameter "rs_cnf2", to provide C with the identifiers of the RSs that are associated with the public keys specified in the parameter "rs_cnf2".</li>
          </ul>
        </li>
      </ul>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>Readers are expected to be familiar with the terms and concepts described in the ACE framework for Authentication and Authorization <xref target="RFC9200"/><xref target="RFC9201"/>, as well as with terms and concepts related to CBOR Web Tokens (CWTs) <xref target="RFC8392"/> and CWT Confirmation Methods <xref target="RFC8747"/>.</t>
        <t>The terminology for entities in the considered architecture is defined in OAuth 2.0 <xref target="RFC6749"/>. In particular, this includes Client (C), Resource Server (RS), and Authorization Server (AS).</t>
        <t>Readers are also expected to be familiar with the terms and concepts related to the CoAP protocol <xref target="RFC7252"/>, CBOR <xref target="RFC8949"/>, and COSE <xref target="RFC9052"/><xref target="RFC9053"/>.</t>
        <t>Note that, unless otherwise indicated, the term "endpoint" is used here following its OAuth definition, aimed at denoting resources such as /token and /introspect at the AS, and /authz-info at the RS. This document does not use the CoAP definition of "endpoint", which is "An entity participating in the CoAP protocol."</t>
        <t>Examples throughout this document are expressed in CBOR diagnostic notation without the tag and value abbreviations.</t>
      </section>
    </section>
    <section anchor="sec-workflow">
      <name>New ACE Workflow</name>
      <t>As defined in <xref section="4" sectionFormat="of" target="RFC9200"/>, the ACE framework considers what is shown in <xref target="fig-old-workflow"/> as its basic protocol workflow.</t>
      <t>That is, the Client first sends an access token request to the token endpoint at the AS (step A), specifying permissions that it seeks to obtain for accessing protected resources at the RS, possibly together with information on its own credentials.</t>
      <t>Then, if the request has been successfully verified, authenticated, and authorized, the AS replies to the Client (step B), providing an access token and possibly additional parameters as access information including the actually granted permissions.</t>
      <t>Finally, the Client uploads the access token to the RS and, consistently with the permissions granted according to the access token, accesses a resource at the RS (step C), which replies with the result of the resource access (step F). Details about what protocol the Client and RS use to establish a secure association, mutually authenticate and secure their communications are defined in the specifically used profile of ACE, e.g., <xref target="RFC9202"/><xref target="RFC9203"/><xref target="I-D.ietf-ace-edhoc-oscore-profile"/><xref target="I-D.tiloca-ace-group-oscore-profile"/>.</t>
      <t>Further interactions are possible between the AS and RS, i.e., the exchange of an introspection request and response where the AS validates a previously issued access token for RS (steps D and E).</t>
      <figure anchor="fig-old-workflow">
        <name>ACE Basic Protocol Workflow</name>
        <artwork><![CDATA[
+--------+                               +---------------+
|        |---(A)-- Token Request ------->|               |
|        |                               | Authorization |
|        |<--(B)-- Access Token ---------|    Server     |
|        |    + Access Information       |               |
|        |    + Refresh Token (optional) +---------------+
|        |                                      ^ |
|        |            Introspection Request  (D)| |
| Client |                         Response     | |(E)
|        |            (optional exchange)       | |
|        |                                      | v
|        |                               +--------------+
|        |---(C)-- Token + Request ----->|              |
|        |                               |   Resource   |
|        |<--(F)-- Protected Resource ---|    Server    |
|        |                               |              |
+--------+                               +--------------+
]]></artwork>
      </figure>
      <t>This section defines a new, alternative protocol workflow shown in <xref target="fig-new-workflow"/>, which MAY be supported by the AS. Unlike in the original protocol workflow, the AS uploads the access token to the RS on behalf of the Client, and then informs the Client about the outcome.</t>
      <t>If the token uploading has been successfully completed, the AS does not provide the access token to the Client altogether. Instead, the Client simply establishes a secure association with the RS (if that has not happened already), and then accesses protected resources at the RS according to the permissions granted per the access token and specified by the AS as access information.</t>
      <figure anchor="fig-new-workflow">
        <name>ACE Alternative Protocol Workflow</name>
        <artwork><![CDATA[
+--------+                               +----------------------------+
|        |---(A)-- Token Request ------->|                            |
|        |                               |       Authorization        |
|        |<--(B)-- Token Response -------|           Server           |
|        |    + Access Information       |                            |
|        |    + Access Token (optional)  +----------------------------+
|        |    + Refresh Token (optional)   ^ |         | ^
|        |                                 | |         | | Token-Upload
|        |        Introspection Request (D)| |     (A1)| |      Request
| Client |                     Response    | |(E)      | |(A2) Response
|        |        (optional exchange)      | |         | |
|        |                                 | v         v |
|        |                               +----------------------------+
|        |---(C1)-- Token (Optional) --->|                            |
|        |                               |                            |
|        |---(C2)-- Protected Request -->|          Resource          |
|        |                               |           Server           |
|        |<--(F)--- Protected Resource --|                            |
|        |                               |                            |
+--------+                               +----------------------------+
]]></artwork>
      </figure>
      <t>More specifically, the new workflow consists of the following steps.</t>
      <ul spacing="normal">
        <li>Step A - This step is as in the original workflow, with the Client sending an Access Token Request to the token endpoint at the AS.</li>
        <li>Step A1 - This new step consists of the AS uploading the access token to the RS, typically at the authz-info endpoint, just like the Client does in the original workflow.</li>
        <li>Step A2 - This new step consists of the RS replying to the AS, following the uploading of the access token at step A1.</li>
        <li>
          <t>Step B - In the Access Token Response, the AS tells the Client that it has attempted to upload the access token to the RS, specifying the outcome of the token uploading based on the reply received from the RS at step A2.  </t>
          <t>
As defined in <xref target="sec-token_uploaded"/>, this information is conveyed by the "token_uploaded" parameter. If the token uploading has succeeded, the AS does not provide the Client with the access token. Otherwise, the AS provides the Client with the access token.</t>
        </li>
        <li>Step C1 - This step occurs only if the token uploading from the AS has failed, and the AS has provided the Client with the access token at step B. In such a case, the Client uploads the access token to the RS just like at step C of the original workflow.</li>
        <li>Step C2 - The Client attempts to access a protected resource at the RS, according to the permissions granted per the access token and specified by the AS as access information at step B.</li>
        <li>Steps D, E and F are as in the original workflow.</li>
      </ul>
      <t>The new workflow has no ambition to replace the original workflow defined in <xref target="RFC9200"/>. The AS can use one workflow or the other depending, for example, on the specific RS for which the access token has been issued and the nature of the communication leg with that RS.</t>
    </section>
    <section anchor="sec-parameters">
      <name>New ACE Parameters</name>
      <t>The rest of this section defines a number of additional parameters and encodings for the OAuth 2.0 token endpoint at the AS.</t>
      <section anchor="sec-token_uploaded">
        <name>token_uploaded</name>
        <t>This section defines the additional parameter "token_uploaded" for an Access Token Response, sent by the AS in reply to a request to the token endpoint from C.</t>
        <t>The parameter "token_uploaded" is REQUIRED in a successful Access Token Response with response code 2.01 (Created), if the AS has issued an access token and has attempted to upload it to the RS on behalf of C as per the ACE alternative protocol workflow defined in <xref target="sec-workflow"/>, irrespective of the result of the token upload. Otherwise, the parameter "token_uploaded" MUST NOT be present.</t>
        <t>If present, the parameter "token_uploaded" MUST encode the CBOR simple value "true" (0xf5) if the token upload at the RS was successful, or the CBOR simple value "false" (0xf4) otherwise.</t>
        <t>If the parameter "token_upload" encodes the CBOR simple value "true", the access token MUST NOT be included in the Access Token response. Otherwise, the access token MUST be included.</t>
        <section anchor="examples">
          <name>Examples</name>
          <t><xref target="fig-example-AS-to-C-token-uploaded"/> shows an example of Access Token Response from the AS to C, following the issue of an access token bound to a symmetric PoP key. The Access Token Response specifies the parameter "token_uploaded" with value "true", which indicates that the AS has successfully uploaded the access token to the RS on behalf of C.</t>
          <t>Consistently, the Access Token Response does not include the access token, while it still includes the parameter "cnf" specifying the symmetric PoP key bound to the access token.</t>
          <figure anchor="fig-example-AS-to-C-token-uploaded">
            <name>Example of Access Token Response, including the parameter "token_uploaded" but not the access token, which is bound to a symmetric key and was uploaded to the RS by the AS</name>
            <artwork><![CDATA[
   2.01 Created
   Content-Format: application/ace+cbor
   Max-Age: 3560
   Payload:
   {
     "token_uploaded" : true,
     "expires_in" : 3600,
     "cnf" : {
       "COSE_Key" : {
         "kty" : 1,
         "kid" : h'3d027833fc6267ce',
         "k" : h'73657373696f6e6b6579'
       }
     }
   }
]]></artwork>
          </figure>
          <t><xref target="fig-example-AS-to-C-token-uploaded-failed"/> shows another example of Access Token Response from the AS to C, also following the issue of an access token bound to a symmetric PoP key. In this example, the Access Token Response includes the parameter "token_uploaded" with value "false", which indicates that the AS has failed to upload the access token to the RS on behalf of C. The Access Token Response also includes the access token and the parameter "cnf" specifying the symmetric PoP key bound to the access token.</t>
          <t>Note that, even though the AS has failed to upload the access token to the RS, the response code 2.01 (Created) is used when replying to C, since the Access Token Request as such has been successfully processed at the AS, with the following issue of the access token.</t>
          <figure anchor="fig-example-AS-to-C-token-uploaded-failed">
            <name>Example of Access Token Response, including the parameter "token_uploaded" together with the access token, which is bound to a symmetric key and which the AS failed to upload to the RS</name>
            <artwork><![CDATA[
   2.01 Created
   Content-Format: application/ace+cbor
   Max-Age: 3560
   Payload:
   {
     "access_token" : h'd08343a1'/...
      (remainder of CWT omitted for brevity;
      CWT contains the symmetric PoP key in the "cnf" claim)/,
     "token_uploaded" : false,
     "expires_in" : 3600,
     "cnf" : {
       "COSE_Key" : {
         "kty" : 1,
         "kid" : h'3d027833fc6267ce',
         "k" : h'73657373696f6e6b6579'
       }
     }
   }
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="sec-rs_cnf2-subject_ids">
        <name>rs_cnf2 and subject_ids</name>
        <t>This section defines the additional parameters "rs_cnf2" and "subject_ids" for an Access Token Response, sent by the AS in reply to a request to the token endpoint from C.</t>
        <ul spacing="normal">
          <li>
            <t>The parameter "rs_cnf2" is OPTIONAL if the token type is "pop", asymmetric keys are used, and the access token is issued for an audience that includes multiple RSs (i.e., a group-audience, see <xref section="6.9" sectionFormat="of" target="RFC9200"/>). Otherwise, the parameter "rs_cnf2" MUST NOT be present.  </t>
            <t>
This parameter specifies information about the public keys used by the RSs of a group-audience for authenticating themselves to C, and is used in case the binding between the public keys and the corresponding RS identities are not established through other means. If this parameter is absent, either the RSs in the group-audience do not use a public key, or the AS knows that the RSs can authenticate themselves to C without additional information.  </t>
            <t>
If present, this parameter MUST encode a non-empty CBOR array. Each element of the CBOR array specifies the public key of one RS in the group-audience, and MUST follow the syntax and semantics of the "cnf" claim either from <xref section="3.1" sectionFormat="of" target="RFC8747"/> for CBOR-based interactions, or from <xref section="3.1" sectionFormat="of" target="RFC7800"/> for JSON-based interactions. It is not required that all the elements of the CBOR array rely on the same confirmation method.  </t>
            <t>
Each of the public keys may contain parameters specifying information such as the public key algorithm and use (e.g., by means of the parameters "alg" or "key_ops" in a COSE_Key structure). If such information is specified, a Client MUST NOT use a public key that is incompatible with the profile or PoP algorithm according to that information. An RS MUST reject a proof of possession using such a key with a response code equivalent to the CoAP code 4.00 (Bad Request).</t>
          </li>
          <li>
            <t>The parameter "subject_ids" is REQUIRED if the parameter "rs_cnf2" is present. Otherwise, the parameter "subject_ids" MUST NOT be present.  </t>
            <t>
This parameter specifies the identifiers of the RSs in the group-audience for which the access token is issued.  </t>
            <t>
If present, this parameter MUST encode a non-empty CBOR array, with the same size of the CBOR array in the "rs_cnf2" parameter. The i-th element of the CBOR array in the "subject_ids" parameter MUST be the identifier of the RS whose public key is specified as the i-th element of the CBOR array in the "rs_cnf2" parameter.  </t>
            <t>
Each element of the CBOR array in the "subject_ids" parameter MUST be either:  </t>
            <ul spacing="normal">
              <li>A CBOR text string, with value an absolute URI <xref target="RFC3986"/> without path component, query component or fragment identifier; or</li>
              <li>A CBOR array, as an absolute CRI reference <xref target="I-D.ietf-core-href"/> without path component, query component or fragment identifier.</li>
            </ul>
            <t>
In either case, C is responsible for resolving these identifiers into network addresses for communicating with the respective RS.</t>
          </li>
        </ul>
        <section anchor="example">
          <name>Example</name>
          <t><xref target="fig-example-AS-to-C-rs_cnf2"/> shows an example of Access Token Response from the AS to C, following the issue of an access token bound to C's public key as asymmetric PoP key. The Access Token Response includes the access token, as well as the parameters "rs_cnf2" and "subject_ids". These specify the public key of two RSs as intended recipients of the access token and the URIs identifying those two RSs, respectively.</t>
          <figure anchor="fig-example-AS-to-C-rs_cnf2">
            <name>Example of Access Token Response with an access token bound to an asymmetric key, using the parameters "rs_cnf2" and "subject_ids"</name>
            <artwork><![CDATA[
   2.01 Created
   Content-Format: application/ace+cbor
   Max-Age: 3600
   Payload:
   {
     "access_token" : b64'SlAV32hk'/...
      (remainder of CWT omitted for brevity;
      CWT contains the client's RPK in the "cnf" claim)/,
     "expires_in" : 3600,
     "rs_cnf2" : [
       {
         "COSE_Key" : {
           "kty" : 2,
           "crv" : 1,
           "x" : h'bbc34960526ea4d32e940cad2a234148
                   ddc21791a12afbcbac93622046dd44f0',
           "y" : h'4519e257236b2a0ce2023f0931f1f386
                   ca7afda64fcde0108c224c51eabf6072'
         }
       },
       {
         "COSE_Key" : {
           "kty" : 2,
           "crv" : 1,
           "x" : h'ac75e9ece3e50bfc8ed6039988952240
                   5c47bf16df96660a41298cb4307f7eb6',
           "y" : h'6e5de611388a4b8a8211334ac7d37ecb
                   52a387d257e6db3c2a93df21ff3affc8'
         }
       }
     ],
     "subject_ids" : [
       "coaps://rs1.example.com",
       "coaps://rs2.example.com"
     ]
   }
]]></artwork>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <section anchor="iana-oauth-params">
        <name>OAuth Parameters Registry</name>
        <t>IANA is asked to add the following entries to the "OAuth Parameters" registry.</t>
        <ul spacing="normal">
          <li>Name: "token_uploaded"</li>
          <li>Parameter Usage Location: token response</li>
          <li>Change Controller: IESG</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Name: "rs_cnf2"</li>
          <li>Parameter Usage Location: token response</li>
          <li>Change Controller: IESG</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Name: "subject_ids"</li>
          <li>Parameter Usage Location: token response</li>
          <li>Change Controller: IESG</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
      </section>
      <section anchor="iana-oauth-cbor-mappings">
        <name>OAuth Parameters CBOR Mappings Registry</name>
        <t>IANA is asked to add the following entries to the "OAuth Parameters CBOR Mappings" following the procedure specified in <xref target="RFC9200"/>.</t>
        <ul spacing="normal">
          <li>Name: "token_uploaded"</li>
          <li>CBOR Key: TBD</li>
          <li>Value Type: simple value "true" / simple type "false"</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Name: "rs_cnf2"</li>
          <li>CBOR Key: TBD</li>
          <li>Value Type: array</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Name: "subject_ids"</li>
          <li>CBOR Key: TBD</li>
          <li>Value Type: array</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8747">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8747"/>
          <seriesInfo name="DOI" value="10.17487/RFC8747"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <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>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services 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>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
        <reference anchor="RFC9201">
          <front>
            <title>Additional OAuth Parameters for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines new parameters and encodings for the OAuth 2.0 token and introspection endpoints when used with the framework for Authentication and Authorization for Constrained Environments (ACE). These are used to express the proof-of-possession (PoP) key the client wishes to use, the PoP key that the authorization server has selected, and the PoP key the resource server uses to authenticate to the client.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9201"/>
          <seriesInfo name="DOI" value="10.17487/RFC9201"/>
        </reference>
        <reference anchor="I-D.ietf-core-href">
          <front>
            <title>Constrained Resource Identifiers</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="6" month="March" year="2023"/>
            <abstract>
              <t>   The Constrained Resource Identifier (CRI) is a complement to the
   Uniform Resource Identifier (URI) that serializes the URI components
   in Concise Binary Object Representation (CBOR) instead of a sequence
   of characters.  This simplifies parsing, comparison and reference
   resolution in environments with severe limitations on processing
   power, code size, and memory size.


   // The present revision -12 of this draft adds a registry that is
   // intended to provide full coverage for representing a URI scheme
   // (and certain text strings used in their place) as negative
   // integers.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-href-12"/>
        </reference>
        <reference anchor="I-D.ietf-ace-edhoc-oscore-profile">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC) and Object Security for Constrained Environments (OSCORE) Profile for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE</organization>
            </author>
            <date day="7" month="July" year="2023"/>
            <abstract>
              <t>   This document specifies a profile for the Authentication and
   Authorization for Constrained Environments (ACE) framework.  It
   utilizes Ephemeral Diffie-Hellman Over COSE (EDHOC) for achieving
   mutual authentication between an OAuth 2.0 Client and Resource
   Server, and it binds an authentication credential of the Client to an
   OAuth 2.0 access token.  EDHOC also establishes an Object Security
   for Constrained RESTful Environments (OSCORE) Security Context, which
   is used to secure communications when accessing protected resources
   according to the authorization information indicated in the access
   token.  A resource-constrained server can use this profile to
   delegate management of authorization information to a trusted host
   with less severe limitations regarding processing power and memory.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-edhoc-oscore-profile-02"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC9202">
          <front>
            <title>Datagram Transport Layer Security (DTLS) Profile for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="S. Gerdes" initials="S." surname="Gerdes"/>
            <author fullname="O. Bergmann" initials="O." surname="Bergmann"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a profile of the Authentication and Authorization for Constrained Environments (ACE) framework that allows constrained servers to delegate client authentication and authorization. The protocol relies on DTLS version 1.2 or later for communication security between entities in a constrained network using either raw public keys or pre-shared keys. A resource-constrained server can use this protocol to delegate management of authorization information to a trusted host with less-severe limitations regarding processing power and memory.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9202"/>
          <seriesInfo name="DOI" value="10.17487/RFC9202"/>
        </reference>
        <reference anchor="RFC9203">
          <front>
            <title>The Object Security for Constrained RESTful Environments (OSCORE) Profile of the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="M. Gunnarsson" initials="M." surname="Gunnarsson"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework. It utilizes Object Security for Constrained RESTful Environments (OSCORE) to provide communication security and proof-of-possession for a key owned by the client and bound to an OAuth 2.0 access token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9203"/>
          <seriesInfo name="DOI" value="10.17487/RFC9203"/>
        </reference>
        <reference anchor="I-D.ietf-ace-revoked-token-notification">
          <front>
            <title>Notification of Revoked Access Tokens in the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Sebastian Echeverria" initials="S." surname="Echeverria">
              <organization>CMU SEI</organization>
            </author>
            <author fullname="Grace Lewis" initials="G." surname="Lewis">
              <organization>CMU SEI</organization>
            </author>
            <date day="2" month="June" year="2023"/>
            <abstract>
              <t>   This document specifies a method of the Authentication and
   Authorization for Constrained Environments (ACE) framework, which
   allows an Authorization Server to notify Clients and Resource Servers
   (i.e., registered devices) about revoked access tokens.  As specified
   in this document, the method allows Clients and Resource Servers to
   access a Token Revocation List on the Authorization Server by using
   the Constrained Application Protocol (CoAP), with the possible
   additional use of resource observation.  Resulting (unsolicited)
   notifications of revoked access tokens complement alternative
   approaches such as token introspection, while not requiring
   additional endpoints on Clients and Resource Servers.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-revoked-token-notification-06"/>
        </reference>
        <reference anchor="I-D.tiloca-ace-group-oscore-profile">
          <front>
            <title>The Group Object Security for Constrained RESTful Environments (Group OSCORE) Profile of the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Ludwig Seitz" initials="L." surname="Seitz">
              <organization>Combitech</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="8" month="March" year="2023"/>
            <abstract>
              <t>   This document specifies a profile for the Authentication and
   Authorization for Constrained Environments (ACE) framework.  The
   profile uses Group OSCORE to provide communication security between a
   Client and a (set of) Resource Server(s) as members of an OSCORE
   Group.  The profile securely binds an OAuth 2.0 Access Token with the
   public key of the Client associated with the private key used in the
   OSCORE group.  The profile uses Group OSCORE to achieve server
   authentication, as well as proof-of-possession for the Client's
   public key.  Also, it provides proof of the Client's membership to
   the OSCORE group, by binding the Access Token to information from the
   Group OSCORE Security Context, thus allowing the Resource Server(s)
   to verify the Client's membership upon receiving a message protected
   with Group OSCORE from the Client.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-ace-group-oscore-profile-10"/>
        </reference>
        <reference anchor="I-D.ietf-lake-edhoc">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="7" month="July" year="2023"/>
            <abstract>
              <t>   This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a
   very compact and lightweight authenticated Diffie-Hellman key
   exchange with ephemeral keys.  EDHOC provides mutual authentication,
   forward secrecy, and identity protection.  EDHOC is intended for
   usage in constrained scenarios and a main use case is to establish an
   OSCORE security context.  By reusing COSE for cryptography, CBOR for
   encoding, and CoAP for transport, the additional code size can be
   kept very low.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-20"/>
        </reference>
      </references>
    </references>
    <section anchor="sec-benefits-for-profiles">
      <name>Benefits for ACE Transport Profiles</name>
      <t>For any transport profile of ACE, the following holds.</t>
      <ul spacing="normal">
        <li>The new ACE workflow defined in <xref target="sec-workflow"/> is effectively possible to use. This is beneficial for deployments where the communication leg between C and the RS is constrained, but the communication leg between the AS and RS is not.</li>
        <li>When the new ACE workflow is used, the parameter "token_uploaded" defined in <xref target="sec-token_uploaded"/> is used to inform C that the AS has attempted to upload the access token to the RS, specifying whether the uploading has succeeded or failed.</li>
      </ul>
      <section anchor="dtls-profile">
        <name>DTLS Profile</name>
        <t>When the RPK mode of the DTLS profile is used (see <xref section="3.2" sectionFormat="of" target="RFC9202"/>), the parameters "rs_cnf2" and "subject_ids" defined in <xref target="sec-rs_cnf2-subject_ids"/> enable the effective issue of an access token intended to an audience that includes multiple RSs.</t>
      </section>
      <section anchor="edhoc-and-oscore-profile">
        <name>EDHOC and OSCORE Profile</name>
        <t>When the EDHOC and OSCORE profile is used <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>, the parameters "rs_cnf2" and "subject_ids" defined in <xref target="sec-rs_cnf2-subject_ids"/> enable the effective issue of an access token intended to an audience that includes multiple RSs.</t>
      </section>
    </section>
    <section anchor="sec-open-points">
      <name>Open Points</name>
      <section anchor="sec-open-points-workflow">
        <name>New Workflow</name>
        <t>The following discusses open points related to the use of the new ACE workflow defined in <xref target="sec-workflow"/>.</t>
        <section anchor="sec-open-points-workflow-dynamic-access-rights">
          <name>Allow the Dynamic Update of Access Rights</name>
          <t>In some profiles of ACE, C can request a new access token to update its access rights, while preserving the same secure association with the RS. The new access token supersedes the current one stored at the RS, as they are both part of the same "token series".</t>
          <t>A token series comprises all the access tokens issued by the same AS for the same pair (Client, Resource Server). Specific profiles can provide a more specialized definition, e.g., by further taking into account the public authentication credentials of C and the RS.</t>
          <t>When using the original ACE workflow, C uploads the new access token to the RS by protecting the message exchange through the secure association with the RS. This allows the RS to determine that the upload of such access token is for updating the access rights of C.</t>
          <t>When using the new ACE workflow, the AS uploads the new access token to the RS also when an update of access rights for C is to be performed. This message exchange would be protected through the secure association between the AS and RS. However, this secure association does not help the RS retrieve the stored access token to supersede, as that is rather bound to the secure association with C.</t>
          <t>In order for the new ACE workflow to also allow the dynamic update of access rights, it is required that the new access token updating the access rights of C includes an explicit indication for the RS. Such an indication can point the RS to the token series in question (hence to the current access token to supersede), irrespective of the secure association used to protect the token uploading.</t>
          <t>In some profiles of ACE, such an indication is in fact already present in issued access tokens:</t>
          <ul spacing="normal">
            <li>In the PSK mode of the DTLS profile <xref target="RFC9202"/>, the token series is indicated by the parameter "kid" within the claim "cnf" of the new access token. This has the same value of the parameter "kid" in the COSE_Key within the claim "cnf" from the first access token of the token series.</li>
            <li>In the OSCORE profile <xref target="RFC9203"/>, the token series is indicated by the parameter "kid" within the claim "cnf" of the new access token. This has the same value of the parameter "id" in the OSCORE_Input_Material object within the claim "cnf" from the first access token of the token series.</li>
            <li>
              <t>In the EDHOC and OSCORE profile <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>, the token series is indicated by the parameter "kid" within the claim "cnf" of the new access token. This has the same value of the parameter "id" in the EDHOC_Information object within the claim "cnf" from the first access token of the token series.  </t>
              <t>
Note: version -01 of the EDHOC and OSCORE profile says that an update of access rights is not possible when using the new workflow. However, it is actually possible as discussed above.</t>
            </li>
          </ul>
          <t>In the three cases above, the update of access rights is possible because there is a value used as de facto "token series ID". This value does not change throughout the lifetime of a token series, and it is used to associate the new access token with the previous one in the same series to be superseded.</t>
          <t>Such a token series ID is required to have a unique value from a namespace/pool that the AS exclusively control. This is in fact what happens in the profiles of ACE above, where the AS is the entity creating the mentioned objects or COSE Key included in the first access token of a token series.</t>
          <t>However, this may generally not hold and it is not what happens in other known cases, i.e., the DTLS profile in RPK mode <xref target="RFC9203"/> and the Group OSCORE profile <xref target="I-D.tiloca-ace-group-oscore-profile"/>. At the moment, the dynamic update of access rights is not possible for those, <em>neither in the original nor in the new ACE workflow</em>.</t>
          <t>In order to make the update of access rights possible also for such cases, as well as both in the original and in the new ACE workflow, those cases can rely on a new parameter and claim "token_series_id" (see <xref target="sec-more-parameters"/>), which specifies a unique identifier of the token series which an access token belongs to.</t>
          <t>As to existing profiles of ACE, the above has no intention to change the current behavior when the update of access rights occurs, irrespective of the used ACE workflow and especially when using the original workflow.</t>
          <t>If future profiles rely on a construction where the AS creates the object or key included in the claim "cnf" of the first access token in a token series, and a unique ID generated by the AS is included in such object or key, then that ID must be used as de facto "token series ID", rather than the new parameter "token_series_id".</t>
        </section>
        <section anchor="sec-open-points-workflow-token-re-uploading">
          <name>Allow the Re-uploading of the Access Token</name>
          <t>After the AS has successfully uploaded the access token to the RS when using the new ACE workflow, C does not obtain the access token altogether. It follows that C cannot re-upload the Access Token to the RS by itself, e.g., in order to perform a key update like defined for the OSCORE profile <xref target="RFC9203"/>.</t>
          <t>Even in such a case, the token re-uploading can be allowed by relying on a new parameter "token_hash", which the AS provides to C and specifies the hash of the access token (see <xref target="sec-more-parameters"/>).</t>
          <t>Then, C can practically "re-upload" the access token to the RS, by sending a request to the authz-info endpoint that includes the parameter "token_hash" instead of the parameter "access_token". Such a request may include further parameters, depending on what is defined for the used transport profile.</t>
          <t>If the RS still stores the access token in question, then the RS can identify it by means of the received token hash, and take the same actions that would have been taken in case the full access token was re-uploaded to the authz-info endpoint.</t>
        </section>
        <section anchor="sec-open-points-workflow-applicability">
          <name>Ensure Applicability to Any ACE Profile</name>
          <t>Some profiles of ACE require that C and the RS generate information to be exchanged when uploading the access token. For example:</t>
          <ul spacing="normal">
            <li>In the OSCORE profile <xref target="RFC9203"/>, C and RS are required to exchange the nonces N1 and N2, when uploading to the RS the first access token of a token series, as well as when re-uploading any access token (e.g., in order to perform a key update).</li>
            <li>In the EDHOC and OSCORE profile <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>, C and the RS are required to exchange the nonces N1 and N2, when re-uploading any access token in order to perform a key update through the function EDHOC_KeyUpdate (see <xref section="I" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>).</li>
          </ul>
          <t>Evidently, using the new ACE workflow prevents C and the RS from directly performing the required exchanges above, since the uploading of the access token does not rely on a direct interaction between C and RS like in the original ACE workflow. For some profiles of ACE, this may prevent the use of the new ACE workflow altogether.</t>
          <t>This issue can be solved by having the AS acting as intermediary also for the exchange of C- and RS-generated information, by relying on two new parameters "to_rs" and "from_rs" (see <xref target="sec-more-parameters"/>). In particular, C can use "to_rs" for providing the AS with C-generated information, to be relayed to the RS when uploading the access token. Also, the RS can use "from_rs" for providing the AS with RS-generated information when replying to the token uploading, and to be relayed to C.</t>
          <t>With reference to the two cases mentioned above, "to_rs" can specify the nonce N1 generated by C, while "from_rs" can specify the nonce N2 generated by RS.</t>
        </section>
      </section>
      <section anchor="sec-open-points-parameters">
        <name>New Parameters</name>
        <section anchor="tokenuploaded">
          <name>token_uploaded</name>
          <t>The parameter "token_uploaded" defined in <xref target="sec-token_uploaded"/> builds on the assumption that C can operate in the presence of the alternative ACE workflow defined in <xref target="sec-workflow"/>.</t>
          <t>In particular, it assumes that C accepts as valid an Access Token Response that includes the parameter "token_uploaded" encoding the CBOR simple value "true" but not the access token, and that, in such a case, C continues by sending a protected request to the RS.</t>
          <t>In turn, this assumes that the AS knows that C can operate in the presence of the alternative ACE workflow. This can be part of the information that C provided to the AS at its registration.</t>
          <t>An alternative design choice would instead require C to opt-in when sending the Access Token Request to the AS. That is, C can include the parameter "token_uploaded" in the Access Token Request, encoding the CBOR simple value "true", hence explicitly signaling its understanding of the alternative workflow.</t>
          <t>Only if the AS supports the alternative workflow and the Access Token Request includes the parameter "token_uploaded" encoding the CBOR simple value "true", can the AS attempt to upload the access token to the RS on behalf of C as per the alternative workflow.</t>
        </section>
        <section anchor="sec-more-parameters">
          <name>Further New Parameters to Consider</name>
          <t>The following discusses possible, further new parameters that can be defined for addressing the open points raised earlier in <xref target="sec-open-points"/>.</t>
          <ul spacing="normal">
            <li>
              <t>"token_series_id" - This parameter specifies the unique identifier of a token series, thus ensuring that C can dynamically update its access rights, irrespective of the used ACE workflow (see <xref target="sec-open-points-workflow-dynamic-access-rights"/>).  </t>
              <t>
When issuing the first access token of a token series, the AS specifies this parameter in the Access Token Response to C, with value TS_ID. Also, the AS includes a claim "token_series_id" with the same value in the access token.  </t>
              <t>
When C requests a new access token in the same tokes series for dynamically updating its access rights, C specifies the value TS_ID as "kid" within the parameter "req_cnf" of the Access Token Request (see <xref section="3.1" sectionFormat="of" target="RFC9201"/>). The AS specifies the same value as "kid" within the claim "cnf" of the new access token.</t>
            </li>
            <li>
              <t>"token_hash" - This parameter specifies the hash of an access token that the AS has successfully issued and uploaded to the RS as per the new ACE workflow, and thus that the AS does not provide to C (see <xref target="sec-open-points-workflow-dynamic-access-rights"/>).  </t>
              <t>
The AS specifies this parameter in a successful Access Token Response, in case the parameter "token_uploaded" is also specified as encoding the CBOR simple value "true" (see <xref target="sec-token_uploaded"/>). The parameter value is the hash computed over the value that the parameter "access_token" would have had in that same response message, if it was included therein specifying the access token.  </t>
              <t>
C specifies this parameter in the request sent to the authz-info endpoint at the RS for "re-uploading" the same access token, e.g., in order to perform a key update (see <xref target="sec-open-points-workflow-token-re-uploading"/>).  </t>
              <t>
This parameter also allows C to seamlessly use the method defined in <xref target="I-D.ietf-ace-revoked-token-notification"/> for learning of revoked access tokens, even when the new ACE workflow is used and C does not obtain the access token, which makes it impossible for C to compute the token hash by itself.</t>
            </li>
            <li>
              <t>"to_rs" - When using the new ACE workflow, this parameter specifies C-generated information that, according to the used profile of ACE, C has to provide to the RS together with the access token if using the original ACE workflow. This allows the AS to relay such information to the RS upon uploading the access token on behalf of C (see <xref target="sec-open-points-workflow-applicability"/>).  </t>
              <t>
First, C specifies this parameter in the Access Token Request sent to the AS. Then, the AS specifies this parameter in the request to the RS sent for uploading the access token on behalf of C, by simply relaying the value received from C. The used profile of ACE has to define the detailed content and semantics of the information specified in the parameter value.</t>
            </li>
            <li>
              <t>"from_rs" - When using the new ACE workflow, this parameter specifies RS-generated information that, according to the used profile of ACE, the RS has to provide to C after the uploading of an access token if using the original ACE workflow. This allows the AS to relay such information to C after having uploaded the access token on behalf of C (see <xref target="sec-open-points-workflow-applicability"/>).  </t>
              <t>
First, the RS specifies this parameter in the response sent to the AS, after the upload of an access token through a request from the AS. Then, the AS specifies this parameter in the Access Token Response to C, by simply relaying the value received from the RS. The used profile of ACE has to define the detailed content and semantics of the information specified in the parameter value.</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author sincerely thanks <contact fullname="Rikard Höglund"/> for his comments and feedback. The work on this document has been partly supported by the H2020 project SIFIS-Home (Grant agreement 952652).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
AIElsDjXigAA

-->

</rfc>
