<?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-01" 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-01"/>
    <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="October" day="23"/>
    <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>"aud2", used by the AS to provide C with the identifiers of the RSs in the group-audience for which the access token is issued.</li>
            <li>"anchor_cnf", used by the AS to provide C with the public keys of trust anchors, which C can use to validate the public key of an RS (e.g., as provided in the parameter "rs_cnf" defined in <xref target="RFC9201"/> or in the parameter "rs_cnf2" defined in this document).</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-aud2">
        <name>rs_cnf2 and aud2</name>
        <t>This section defines the additional parameters "rs_cnf2" and "aud2" 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 of N elements, where N is the number of RSs in the group-audience for which the access token is issued. 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 "aud2" is OPTIONAL and 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 of N elements, where N is the number of RSs in the group-audience for which the access token is issued. Each element of the CBOR array in the "aud2" parameter MUST be a CBOR text string, with value the identifier of one RS in the group-audience.  </t>
            <t>
The element of the CBOR array referring to an RS in the group-audience SHOULD have the same value that would be used to identify that RS through the parameter "aud" of an Access Token Request to the AS (see <xref section="5.8.2" sectionFormat="of" target="RFC9200"/>) and an Access Token Response from the AS (see <xref section="5.8.2" sectionFormat="of" target="RFC9200"/>), when requesting and issuing an access token for that individual RS.  </t>
            <t>
The parameter "aud2" is REQUIRED if the parameter "rs_cnf2" is present. The i-th element of the CBOR array in the "aud2" 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>
          </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 for a group-audience composed of two RSs "rs1" and "rs2", and 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 "aud2". These specify the public key of the two RSs as intended recipients of the access token and the identifiers of 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 "aud2"</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'
         }
       }
     ],
     "aud2" : ["rs1", "rs2"]
   }
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="sec-anchor_cnf">
        <name>anchor_cnf</name>
        <t>This section defines the additional parameter "anchor_cnf" for an Access Token Response, sent by the AS in reply to a request to the token endpoint from C.</t>
        <t>The parameter "anchor_cnf" is OPTIONAL if the token type is "pop" and asymmetric keys are used. Otherwise, the parameter "anchor_cnf" MUST NOT be present.</t>
        <t>This parameter specifies information about the public keys of trust anchors, which C can use to validate the public key of the RS/RSs included in the audience for which the access token is issued. This parameter can be used when the access token is issued for an audience including one RS or multiple RSs.</t>
        <t>If this parameter is absent, either the RS/RSs in the audience do not use a public key, or the AS knows that C can validate the public key of such RS/RSs without additional information (e.g., C has already obtained the required public keys of the involved trust anchors from the AS or through other means).</t>
        <t>If present, this parameter MUST encode a non-empty CBOR array that MUST be treated as a set, i.e., the order of its elements has no meaning. Each element of the CBOR array specifies the public key of one trust anchor, which can be used to validate the public key of at least one RS included in the audience for which the access token is issued. Each element of the CBOR array 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 specified in the parameter "anchor_cnf" 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 with the public keys to validate and the way to validate those.</t>
        <t>The presence of this parameter does not require that the Access Token Response also includes the parameter "req_cnf" defined in <xref target="RFC9201"/> or the parameter "req_cnf2" defined in <xref target="sec-rs_cnf2-aud2"/> of this document. That is, C may be able to obtain the public keys of the RS/RSs for which the access token is issued through other means.</t>
        <t>When the Access Token Response includes both the parameter "anchor_cnf" and the parameter "aud2" defined in <xref target="sec-rs_cnf2-aud2"/>, then C MUST make sure that a public key PK_RS is associated with an RS identified by an element of "aud2", before using any of the public keys specified in "anchor_cnf" to validate PK_RS.</t>
        <t>When the Access Token Response includes the parameter "anchor_cnf" but not the parameter "aud2", then C can use the issued access token with any RS in the targeted audience for which "anchor_cnf" can be used to validate PK_RS. This allows C to use the access token with an RS that is deployed later on as part of the same audience, which is particularly useful in the case of a group-audience.</t>
        <section anchor="example-1">
          <name>Example</name>
          <t><xref target="fig-example-AS-to-C-anchor_cnf"/> shows an example of Access Token Response from the AS to C, following the issue of an access token for a group-audience, and bound to C's public key as asymmetric PoP key.</t>
          <t>The identifier of the group-audience was specified by the "aud" parameter of the Access Token Request to the AS and is specified by the "aud" claim of the issued access token, and is not repeated in the Access Token Response from the AS.</t>
          <t>The Access Token Response includes the parameter "anchor_cnf". This specifies the public key of a trust anchor that C can use to validate the public keys of any RS with which the access token is going to be used. The public key of the trust anchor is here conveyed within an X.509 certificate used as authentication credential for that trust anchor, by means of the CWT confirmation method "x5chain" defined in <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>.</t>
          <figure anchor="fig-example-AS-to-C-anchor_cnf">
            <name>Example of Access Token Response with an access token bound to an asymmetric key, using the parameter "anchor_cnf"</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,
     "anchor_cnf" : [
       {
         "x5chain" : h'308201363081dea003020102020301f50d30
                       0a06082a8648ce3d04030230163114301206
                       035504030c0b524643207465737420434130
                       1e170d3230303130313030303030305a170d
                       3231303230323030303030305a3022312030
                       1e06035504030c1730312d32332d34352d46
                       462d46452d36372d38392d41423059301306
                       072a8648ce3d020106082a8648ce3d030107
                       03420004b1216ab96e5b3b3340f5bdf02e69
                       3f16213a04525ed44450b1019c2dfd3838ab
                       ac4e14d86c0983ed5e9eef2448c6861cc406
                       547177e6026030d051f7792ac206a30f300d
                       300b0603551d0f040403020780300a06082a
                       8648ce3d04030203470030440220445d798c
                       90e7f500dc747a654cec6cfa6f037276e14e
                       52ed07fc16294c84660d02205a33985dfbd4
                       bfdd6d4acf3804c3d46ebf3b7fa62640674f
                       c0354fa056dbaea6'
       }
     ]
   }
]]></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: "aud2"</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: "anchor_cnf"</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: "aud2"</li>
          <li>CBOR Key: TBD</li>
          <li>Value Type: array</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Name: "anchor_cnf"</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="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-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="23" month="October" 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.  This profile can be used to delegate management of
   authorization information from a resource-constrained server 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-03"/>
        </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="10" month="July" year="2023"/>
            <abstract>
              <t>   This document specifies a profile for the Authentication and
   Authorization for Constrained Environments (ACE) framework.  The
   profile uses Group Object Security for Constrained RESTful
   Environments (Group OSCORE) to provide communication security between
   a Client and one or multiple Resource Servers that are members of an
   OSCORE group.  The profile securely binds an OAuth 2.0 Access Token
   to the public key of the Client associated with the private key used
   by that Client 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.  Effectively,
   the profile enables fine-grained access control paired with secure
   group communication, in accordance with the Zero Trust principles.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-ace-group-oscore-profile-11"/>
        </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="25" month="August" 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-22"/>
        </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 "aud2" defined in <xref target="sec-rs_cnf2-aud2"/> 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 "aud2" defined in <xref target="sec-rs_cnf2-aud2"/> 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="Christian Amsüss"/> and <contact fullname="Rikard Höglund"/> for their 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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

-->

</rfc>
