<?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-ietf-ace-workflow-and-params-01" category="std" consensus="true" submissionType="IETF" updates="9200, 9202, 9203, 9431" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.0 -->
  <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-ietf-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="2024" month="March" day="04"/>
    <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. Third, it amends two of the requirements on profiles of the framework. Finally, it deprecates the original payload format of error responses that convey an error code, when CBOR is used to encode message payloads. For such error responses, it defines a new payload format aligned with RFC 9290, thus updating in this respect also the profiles of ACE defined in RFC 9202, RFC 9203, and RFC 9431.</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://github.com/ace-wg/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>
              <t>"token_upload", used by C to inform the AS that it opts in to use the new ACE workflow, and by the AS to inform C about the outcome of the token uploading to the RS per the new workflow.</t>
            </li>
            <li>
              <t>"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"/>).</t>
            </li>
            <li>
              <t>"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.</t>
            </li>
            <li>
              <t>"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).</t>
            </li>
          </ul>
        </li>
        <li>
          <t>It amends two of the requirements on profiles of the ACE framework (see <xref target="sec-updated-requirements"/>).</t>
        </li>
        <li>
          <t>It deprecates the original payload format of error responses that convey an error code, when CBOR is used to encode message payloads in the ACE framework. For such error responses, it defines a new payload format according to the problem-details format specified in <xref target="RFC9290"/> (see <xref target="sec-updated-error-responses"/>).  </t>
          <t>
In this respect, it also updates the profiles of the ACE framework defined in <xref target="RFC9202"/>, <xref target="RFC9203"/>, and <xref target="RFC9431"/>.</t>
        </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"/>, CDDL <xref target="RFC8610"/>, 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>Furthermore, this document uses the following term.</t>
        <ul spacing="normal">
          <li>
            <t>Token series: the set comprising all the access tokens issued by the same AS for the same pair (Client, Resource Server).  </t>
            <t>
Profiles of ACE can provide their extended and specialized definition, e.g., by further taking into account the public authentication credentials of C and the RS.</t>
          </li>
        </ul>
        <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 public authentication 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 the 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="RFC9431"/><xref target="I-D.ietf-ace-edhoc-oscore-profile"/><xref target="I-D.ietf-ace-group-oscore-profile"/><xref target="RFC9431"/>.</t>
      <t>Further interactions are possible between the AS and the RS, i.e., the exchange of an introspection request and response where the AS validates a previously issued access token for the 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>
          <t>Step A - Like in the original workflow, the Client sends an Access Token Request to the token endpoint at the AS, with the additional indication that it opts in to use the alternative workflow.  </t>
          <t>
As defined in <xref target="sec-token_upload"/>, this information is conveyed to the AS by means of the "token_upload" parameter.</t>
        </li>
        <li>
          <t>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.</t>
        </li>
        <li>
          <t>Step A2 - This new step consists of the RS replying to the AS, following the uploading of the access token at step A1.</t>
        </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_upload"/>, this information is conveyed to the Client by means of the "token_upload" 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>
          <t>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.</t>
        </li>
        <li>
          <t>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.</t>
        </li>
        <li>
          <t>Steps D, E, and F are as in the original workflow.</t>
        </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_upload">
        <name>token_upload</name>
        <t>This section defines the additional parameter "token_upload". The parameter can be used in an Access Token Request sent by C to the token endpoint at the AS, as well as in the successful Access Token Response sent as reply by the AS.</t>
        <ul spacing="normal">
          <li>
            <t>In an Access Token Request  </t>
            <t>
The parameter "token_upload" is OPTIONAL in an Access Token Request. If present, this parameter MUST encode the CBOR simple value <tt>true</tt> (0xf5). The presence of the parameter indicates that C opts in to use the new, alternative ACE workflow defined in <xref target="sec-workflow"/>, whose actual use for uploading the issued access token to the RS is an exclusive prerogative of the AS.  </t>
            <t>
If the AS supports the new ACE workflow and the Access Token Request includes the parameter "token_upload" with value the CBOR simple value <tt>true</tt> (0xf5), then the AS MAY use the new ACE workflow to upload the access token to the RS on behalf of C. Otherwise, the AS MUST NOT use the new ACE workflow.</t>
          </li>
          <li>
            <t>In an Access Token Response  </t>
            <t>
The parameter "token_upload" is REQUIRED in a successful Access Token Response with response code 2.01 (Created), if both the following conditions apply. Otherwise, the parameter "token_upload" MUST NOT be present.  </t>
            <ul spacing="normal">
              <li>
                <t>The corresponding Access Token Request included the parameter "token_upload", with value the CBOR simple value <tt>true</tt> (0xf5).</t>
              </li>
              <li>
                <t>The AS has attempted to upload the issued access token at the RS as per the new ACE workflow, irrespective of the result of the token upload.</t>
              </li>
            </ul>
            <t>
When the parameter "token_upload" is present in the Access Token Response, the following applies.  </t>
            <ul spacing="normal">
              <li>
                <t>If the token upload at the RS was successful, then the parameter "token_upload" MUST encode the CBOR simple value <tt>true</tt> (0xf5), and the access token MUST NOT be included in the Access Token Response.</t>
              </li>
              <li>
                <t>If the token upload at the RS was not successful, then the parameter "token_upload" MUST encode the CBOR simple value <tt>false</tt> (0xf4), and the access token MUST be included in the Access Token Response.</t>
              </li>
            </ul>
          </li>
        </ul>
        <section anchor="examples">
          <name>Examples</name>
          <t><xref target="fig-example-AS-to-C-token-upload"/> shows an example with first an Access Token Request from C to the AS, and then an Access Token Response from the AS to C, following the issue of an access token bound to a symmetric PoP key.</t>
          <t>The Access Token Response specifies the parameter "token_upload" with value the CBOR simple value <tt>true</tt> (0xf5), 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-upload">
            <name>Example of Access Token Request-Response Exchange. The Access Token Response includes the parameter "token_upload" but not the access token, which is bound to a symmetric key and was uploaded to the RS by the AS</name>
            <artwork><![CDATA[
   / Access Token Request /

   Header: POST (Code=0.02)
   Uri-Host: "as.example.com"
   Uri-Path: "token"
   Content-Format: application/ace+cbor
   Payload:
   {
         "audience" : "tempSensor4711",
            "scope" : "read",
     "token_upload" : true
   }


   / Access Token Response /

   Header: Created (Code=2.01)
   Content-Format: application/ace+cbor
   Max-Age: 3560
   Payload:
   {
     "token_upload" : 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-upload-failed"/> shows another example with first an Access Token Request from C to the AS, and then an Access Token Response from the AS to C, also following the issue of an access token bound to a symmetric PoP key.</t>
          <t>In this example, the Access Token Response includes the parameter "token_upload" with value the CBOR simple value <tt>false</tt> (0xf4), 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-upload-failed">
            <name>Example of Access Token Request-Response Exchange. The Access Token Response includes the parameter "token_upload" 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[
   / Access Token Request /

   Header: POST (Code=0.02)
   Uri-Host: "as.example.com"
   Uri-Path: "token"
   Content-Format: application/ace+cbor
   Payload:
   {
         "audience" : "tempSensor4711",
            "scope" : "read",
     "token_upload" : true
   }


   / Access Token Response /

   Header: Created (Code=2.01)
   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_upload" : 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 of 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. In such a case, 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 "aud2" and "rs_cnf2". 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 "aud2" and "rs_cnf2"</name>
            <artwork><![CDATA[
   Header: Created (Code=2.01)
   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,
             "aud2" : ["rs1", "rs2"],
          "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'
              }
            }
          ]
   }
]]></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 "rs_cnf" defined in <xref target="RFC9201"/> or the parameter "rs_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 any of the public keys specified in "anchor_cnf" to validate the public key PK_RS of any RS in the targeted audience. 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 public 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[
   Header: Created (Code=2.01)
   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="sec-updated-requirements">
      <name>Updated Requirements on Profiles</name>
      <t><xref section="C" sectionFormat="of" target="RFC9200"/> compiles a list of requirements on the profiles of ACE. This document amends two of those requirements as follows.</t>
      <t>The text of the fifth requirement</t>
      <blockquote>
        <t>Specify the security protocol the client and RS must use to protect their communication (e.g., OSCORE or DTLS). This must provide encryption and integrity and replay protection (Section 5.8.4.3).</t>
      </blockquote>
      <t>is replaced by the following text:</t>
      <blockquote>
        <t>Specify the security protocol the client and RS must use to protect their communication (e.g., OSCORE or DTLS). In combination with the used communication protocol, this must provide encryption, integrity and replay protection, and a binding between requests and responses (Section 5.8.4.3 and Section 6.5).</t>
      </blockquote>
      <t>The text of the tenth requirement</t>
      <blockquote>
        <t>Specify the communication and security protocol for interactions between the client and AS. This must provide encryption, integrity protection, replay protection, and a binding between requests and responses (Sections 5 and 5.8).</t>
      </blockquote>
      <t>is replaced by the following text:</t>
      <blockquote>
        <t>Specify the communication and security protocol for interactions between the client and AS. The combined use of those protocols must provide encryption, integrity protection, replay protection, and a binding between requests and responses (Sections 5 and 5.8).</t>
      </blockquote>
      <t>At the time of writing, all the profiles of ACE that are published as RFC (i.e., <xref target="RFC9202"/><xref target="RFC9203"/><xref target="RFC9431"/>) already comply with the two updated requirements as formulated above.</t>
    </section>
    <section anchor="sec-updated-error-responses">
      <name>Updated Payload Format of Error Responses</name>
      <t>This section deprecates the original payload format of error responses conveying an error code, when CBOR is used to encode message payloads in the ACE framework. That format is referred to, e.g., when defining the error responses of Sections <xref target="RFC9200" section="5.8.3" sectionFormat="bare"/> and <xref target="RFC9200" section="5.9.3" sectionFormat="bare"/> of <xref target="RFC9200"/>.</t>
      <t>Also, this section defines a new payload format that allows such error responses to convey an error code together with further error-specific information, according to the problem-details format specified in <xref target="RFC9290"/>.</t>
      <t>Such error responses MUST have Content-Format set to application/concise-problem-details+cbor. The payload of these error responses MUST be a CBOR map specifying a Concise Problem Details data item (see <xref section="2" sectionFormat="of" target="RFC9290"/>). The CBOR map is formatted as follows.</t>
      <ul spacing="normal">
        <li>
          <t>It MUST include the Custom Problem Detail entry "ace-error" registered in <xref target="iana-problem-details"/> of this document.  </t>
          <t>
This entry is formatted as a CBOR map including only one field, namely "error-code". The map key for "error-code" is the CBOR unsigned integer with value 0. The value of "error-code" is a CBOR integer specifying the error code associated with the occurred error. This value is taken from the "CBOR Value" column of the "OAuth Error Code CBOR Mappings" registry <xref target="ACE.OAuth.Error.Code.CBOR.Mappings"/>.  </t>
          <t>
The new payload format MUST use the field "error-code" in order to convey the same information that the original payload format conveys through the "error" parameter (see, e.g., Sections <xref target="RFC9200" section="5.8.3" sectionFormat="bare"/> and <xref target="RFC9200" section="5.9.3" sectionFormat="bare"/> of <xref target="RFC9200"/>).  </t>
          <t>
The CDDL notation <xref target="RFC8610"/> of the "ace-error" entry is given below.</t>
        </li>
      </ul>
      <sourcecode type="CDDL"><![CDATA[
   ace-error = {
     &(error-code: 0) => int
   }
]]></sourcecode>
      <ul spacing="normal">
        <li>
          <t>It MAY include further Standard Problem Detail entries or Custom Problem Detail entries (see <xref target="RFC9290"/>). The following Standard Problem Detail entries are of particular relevance for the ACE framework.  </t>
          <ul spacing="normal">
            <li>
              <t>"detail" (map key -2): its value is a CBOR text string that specifies a human-readable, diagnostic description of the occurred error (see <xref section="2" sectionFormat="of" target="RFC9290"/>).      </t>
              <t>
The diagnostic text is intended for software engineers as well as for device and network operators, in order to aid debugging and provide context for possible intervention. The diagnostic message SHOULD be logged by the sender of the error response. The entry "detail" is unlikely relevant in an unattended setup where human intervention is not expected.      </t>
              <t>
The new payload format MUST use the Standard Problem Detail entry "detail" in order to convey the same information that the original payload format conveys through the "error_description" parameter (see, e.g., Sections <xref target="RFC9200" section="5.8.3" sectionFormat="bare"/> and <xref target="RFC9200" section="5.9.3" sectionFormat="bare"/> of <xref target="RFC9200"/>).</t>
            </li>
            <li>
              <t>"instance" (map key -3): its value is a URI reference identifying the specific occurrence of the error (see <xref section="2" sectionFormat="of" target="RFC9290"/>).      </t>
              <t>
The new payload format MUST use the Standard Problem Detail entry "instance" in order to convey the same information that the original payload format conveys through the "error_uri" parameter (see, e.g., Sections <xref target="RFC9200" section="5.8.3" sectionFormat="bare"/> and <xref target="RFC9200" section="5.9.3" sectionFormat="bare"/> of <xref target="RFC9200"/>).</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>An example of error response using the problem-details format is shown in <xref target="fig-example-error-response"/>.</t>
      <figure anchor="fig-example-error-response">
        <name>Example of Error Response with Problem Details</name>
        <artwork><![CDATA[
Header: Bad Request (Code=4.00)
Content-Format: application/concise-problem-details+cbor
Payload:
{
   / title /       -1: "Incompatible ACE profile",
   / detail /      -2: "The RS supports only the OSCORE profile",
   / ace-error/   TBD: {
     / error_code /       0: 8 / incompatible_ace_profiles /
   }
}
]]></artwork>
      </figure>
      <t>Note to RFC Editor: In the figure above, please replace "TBD" with the unsigned integer assigned as key value to the Custom Problem Detail entry "ace-error" (see <xref target="iana-problem-details"/>). Then, please delete this paragraph.</t>
      <t>When the ACE framework is used with CBOR for encoding message payloads, the following applies.</t>
      <ul spacing="normal">
        <li>
          <t>It is RECOMMENDED that Authorization Servers, Clients, and Resource Servers support the payload format defined in this section.</t>
        </li>
        <li>
          <t>Authorization Servers, Clients, and Resource Servers that support the payload format defined in this section MUST use it when composing an outgoing error response that conveys an error code.</t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The same security considerations from the ACE framework for Authentication and Authorization <xref target="RFC9200"/> apply to this document, together with those from the specifically used transport profile of ACE, e.g., <xref target="RFC9202"/><xref target="RFC9203"/><xref target="RFC9431"/><xref target="I-D.ietf-ace-edhoc-oscore-profile"/><xref target="I-D.ietf-ace-group-oscore-profile"/><xref target="RFC9431"/>.</t>
      <t>When using the problem-details format defined in <xref target="RFC9290"/> for error responses, then the privacy and security considerations from Sections <xref target="RFC9290" section="4" sectionFormat="bare"/> and <xref target="RFC9290" section="5" sectionFormat="bare"/> of <xref target="RFC9290"/> also apply.</t>
      <t>Editor's note: add more security considerations.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <t>Note to RFC Editor: Please replace all occurrences of "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</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>
            <t>Name: "token_upload"</t>
          </li>
          <li>
            <t>Parameter Usage Location: token request and token response</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>
            <t>Name: "rs_cnf2"</t>
          </li>
          <li>
            <t>Parameter Usage Location: token response</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>
            <t>Name: "aud2"</t>
          </li>
          <li>
            <t>Parameter Usage Location: token response</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>
            <t>Name: "anchor_cnf"</t>
          </li>
          <li>
            <t>Parameter Usage Location: token response</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </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>
            <t>Name: "token_upload"</t>
          </li>
          <li>
            <t>CBOR Key: TBD</t>
          </li>
          <li>
            <t>Value Type: simple value <tt>true</tt> / simple value <tt>false</tt></t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>
            <t>Name: "rs_cnf2"</t>
          </li>
          <li>
            <t>CBOR Key: TBD</t>
          </li>
          <li>
            <t>Value Type: array</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>
            <t>Name: "aud2"</t>
          </li>
          <li>
            <t>CBOR Key: TBD</t>
          </li>
          <li>
            <t>Value Type: array</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>
            <t>Name: "anchor_cnf"</t>
          </li>
          <li>
            <t>CBOR Key: TBD</t>
          </li>
          <li>
            <t>Value Type: array</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-problem-details">
        <name>Custom Problem Detail Keys Registry</name>
        <t>IANA is asked to register the following entry in the "Custom Problem Detail Keys" registry within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
        <ul spacing="normal">
          <li>
            <t>Key Value: TBD</t>
          </li>
          <li>
            <t>Name: ace-error</t>
          </li>
          <li>
            <t>Brief Description: Carry ACE <xref target="RFC9200"/> problem details in a Concise Problem Details data item.</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="sec-updated-error-responses"/> of [RFC-XXXX]</t>
          </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="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </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="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="RFC9290">
          <front>
            <title>Concise Problem Details for Constrained Application Protocol (CoAP) APIs</title>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="October" year="2022"/>
            <abstract>
              <t>This document defines a concise "problem detail" as a way to carry machine-readable details of errors in a Representational State Transfer (REST) response to avoid the need to define new error response formats for REST APIs for constrained environments. The format is inspired by, but intended to be more concise than, the problem details for HTTP APIs defined in RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9290"/>
          <seriesInfo name="DOI" value="10.17487/RFC9290"/>
        </reference>
        <reference anchor="RFC9430">
          <front>
            <title>Extension of the Datagram Transport Layer Security (DTLS) Profile for Authentication and Authorization for Constrained Environments (ACE) to Transport Layer Security (TLS)</title>
            <author fullname="O. Bergmann" initials="O." surname="Bergmann"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document updates "Datagram Transport Layer Security (DTLS) Profile for Authentication and Authorization for Constrained Environments (ACE)" (RFC 9202) by specifying that the profile applies to TLS as well as DTLS.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9430"/>
          <seriesInfo name="DOI" value="10.17487/RFC9430"/>
        </reference>
        <reference anchor="RFC9431">
          <front>
            <title>Message Queuing Telemetry Transport (MQTT) and Transport Layer Security (TLS) Profile of Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="C. Sengul" initials="C." surname="Sengul"/>
            <author fullname="A. Kirby" initials="A." surname="Kirby"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework to enable authorization in a publish-subscribe messaging system based on Message Queuing Telemetry Transport (MQTT). Proof-of-Possession keys, bound to OAuth 2.0 access tokens, are used to authenticate and authorize MQTT Clients. The protocol relies on TLS for confidentiality and MQTT server (Broker) authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9431"/>
          <seriesInfo name="DOI" value="10.17487/RFC9431"/>
        </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>
        <reference anchor="ACE.OAuth.Error.Code.CBOR.Mappings" target="https://www.iana.org/assignments/ace/ace.xhtml#oauth-error-code-cbor-mappings">
          <front>
            <title>OAuth Error Code CBOR Mappings</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <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.ietf-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="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="2" month="January" year="2024"/>
            <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-ietf-ace-group-oscore-profile-00"/>
        </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>
          <t>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.</t>
        </li>
        <li>
          <t>When the new ACE workflow is used, the parameter "token_upload" defined in <xref target="sec-token_upload"/> is used:  </t>
          <ul spacing="normal">
            <li>
              <t>To inform the AS that C opts in to use the new ACE workflow; and</t>
            </li>
            <li>
              <t>To inform C that the AS has attempted to upload the issued access token to the RS, specifying whether the uploading has succeeded or failed.</t>
            </li>
          </ul>
        </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"/>), it becomes possible for the AS to effectively issue an access token intended to an audience that includes multiple RSs. This is enabled by the parameters "rs_cnf2" and "aud2" defined in <xref target="sec-rs_cnf2-aud2"/>, as well as by the parameter "anchor_cnf" defined in <xref target="sec-anchor_cnf"/>. This seamlessly applies also if the profile uses Transport Layer Security (TLS) <xref target="RFC8446"/>, as defined in <xref target="RFC9430"/>.</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"/>, it becomes possible for the AS to effectively issue an access token intended to an audience that includes multiple RSs. This is enabled by the parameters "rs_cnf2" and "aud2" defined in <xref target="sec-rs_cnf2-aud2"/>, as well as by the parameter "anchor_cnf" defined in <xref target="sec-anchor_cnf"/>.</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>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 the 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>
              <t>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.</t>
            </li>
            <li>
              <t>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.</t>
            </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>
            </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 controls. 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.ietf-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 the 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.</t>
          <t>For example, in the OSCORE profile <xref target="RFC9203"/>, C and the RS exchange the nonces N1 and N2 together with their OSCORE Recipient IDs ID1 and ID2, 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).</t>
          <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 the 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 the RS.</t>
        </section>
      </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 TS_ID as value of the parameter "token_series_id" of the Access Token Request, which MUST omit the parameter "req_cnf" (see <xref section="3.1" sectionFormat="of" target="RFC9201"/>). The AS specifies the same value within the claim "token_series_id" of the new access token.  </t>
            <t>
When this parameter is used, the information about the token series in question has to be specified in that parameter and in the corresponding token claim. Instead, the "req_cnf" parameter and the "cnf" claim are used for their main purpose, i.e., for specifying the public authentication credential of the Client, by value or by reference.  </t>
            <t>
If a profile of ACE can use or is already using a different parameter/claim as de-facto identifier of the token series, then that profile will continue to do so, and will not use this new parameter "token_series_id".</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_upload" is also specified as encoding the CBOR simple value <tt>true</tt> (0xf5) (see <xref target="sec-token_upload"/>). 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 anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <section anchor="sec-00-01">
        <name>Version -00 to -01</name>
        <ul spacing="normal">
          <li>
            <t>Definition of the "token series" moved to the "Terminology" section.</t>
          </li>
          <li>
            <t>Clarifications and fixes on using parameters in messages.</t>
          </li>
          <li>
            <t>Amendeded two of the requirements on profiles of the framework.</t>
          </li>
          <li>
            <t>The Client has to opt-in for using the alternative workflow.</t>
          </li>
          <li>
            <t>Parameter "token_uploaded" renamed to "token_upload".</t>
          </li>
          <li>
            <t>Updated format of error response payload to use RFC 9290.</t>
          </li>
          <li>
            <t>Security considerations inherited from other documents.</t>
          </li>
          <li>
            <t>Editorial fixes and improvements.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank <contact fullname="Christian Amsüss"/>, <contact fullname="Rikard Höglund"/>, and <contact fullname="Dave Robin"/> 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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
mjDTbaz7ZmGX0oL02q3Wq3WGBFummeyUZM46V5LZEgdpSCqRdgy4dlmMRyvs
5hXk1GZxTjge7MKyIWOsLWWs5LDn0WLRljH9vhIxsCSzc4WVlT55W4KK0GzR
Ng80FKNrUAB5lHWv/Kj4bwSw2EVlAwYGM2ciBIV4z7RC1DGkgwDX/BG+WAoz
SQYebBby9RwPCYZ5xs4JUhAMvesbNpjLMh32WIboCO172gBRLK6TNIdekAG4
J9xx2uAuxDV1BPbZGshLp3cxPYau8bPgtTLjzfkdajzPxW21TnNfn2qzd+wZ
vZ0a6awFGDqe6Elo5UDNzOPrbrqIHGcatwVuqJnIYT4Vv5ykJjXTcWDcYI4o
MzAU2nZl701BYQaFanahCrkKTkHusQGzwYV1ISXtCYEV856winSGqAoxI/dI
b2zDrDrBKoXHZqBIi/RaEguRcDTHBbhTE6IAEmknG7EWAc6MrTWLkzUuK4ga
HNl8jaAA7AcyzDpui/QrsIdQkl5LPyAJeuGoi7RsVhqDCPUCCMU7qA6ExwbN
VBt83Vy/4k6e1RNJDpIFxZrgjBrYEqZucHBndA8AXAQC/sSXMJOkQKvGOD3O
eus+K3avj30atFKYFXdASiYW6liWuJqkpkd4Z70orDeiW+A++PVX4Me/VEY2
O9K0l8zucKbvYC7KLQN2EMBFOWgcRtYkIsJpyCKgEyzXisYuTzBLqMdZQHr4
Bit9z92yaAq1RppSY4csdbX8dMxxxxh3zPCPH3ceHFYeqjsp8xrtGdXFFrEI
7UQUq8pmBAt2WE/2mNPkh/BGJNdSebZWcyMD6x2Ir2q/xsHcoFHtJyPHrFAW
p+scCKbBJZdntZ7TjJQHL6nhM1Rr/9P+aX3ZVX++DLb/MQ/q51s/6a9+gl/3
Tve7XaWrL9RM1JP/9FOpqZ+cV3f0+lPJjnRf/e/Q6wvs9ZRnzp2bAdKDyu6s
6/VL/d65I0XqR1V99ULOYY1uVJ976YrF1P5WMu2Yq/rz7430Off4RVM52Hu5
/xO9o3Zycz8Xmq246Z/2zvYbujIzMjy7bx57xPKZx24f/s6XzQREPptaPvvS
57Qynz2KzQJr/wUVLnuFfb41+tk8WeWyR/bpjfZTt+KX3ob+eBI8K1tHHNXw
xzYaWC/IPjJHS9p2a9+rs5FcsdejDj1Klhm84VhmWoN9d/pndO7y9WqVZoUL
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
CuL3zAAA

-->

</rfc>
