<?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-00" category="std" consensus="true" submissionType="IETF" updates="9200" 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-00"/>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <street>Torshamnsgatan 23</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <date year="2023" month="December" day="22"/>
    <area>Security</area>
    <workgroup>ACE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document updates the Authentication and Authorization for Constrained Environments Framework (ACE, RFC 9200) as follows. First, it defines a new, alternative workflow that the Authorization Server can use for uploading an access token to a Resource Server on behalf of the Client. Second, it defines new parameters and encodings for the OAuth 2.0 token endpoint at the Authorization Server.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Authentication and Authorization for Constrained Environments Working Group mailing list (ace@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ace/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://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_uploaded", used by the AS to inform C about the outcome of the token uploading to the RS, as per the new ACE 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>
      </ul>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>Readers are expected to be familiar with the terms and concepts described in the ACE framework for Authentication and Authorization <xref target="RFC9200"/><xref target="RFC9201"/>, as well as with terms and concepts related to CBOR Web Tokens (CWTs) <xref target="RFC8392"/> and CWT Confirmation Methods <xref target="RFC8747"/>.</t>
        <t>The terminology for entities in the considered architecture is defined in OAuth 2.0 <xref target="RFC6749"/>. In particular, this includes Client (C), Resource Server (RS), and Authorization Server (AS).</t>
        <t>Readers are also expected to be familiar with the terms and concepts related to the CoAP protocol <xref target="RFC7252"/>, CBOR <xref target="RFC8949"/>, and COSE <xref target="RFC9052"/><xref target="RFC9053"/>.</t>
        <t>Note that, unless otherwise indicated, the term "endpoint" is used here following its OAuth definition, aimed at denoting resources such as /token and /introspect at the AS, and /authz-info at the RS. This document does not use the CoAP definition of "endpoint", which is "An entity participating in the CoAP protocol."</t>
        <t>Examples throughout this document are expressed in CBOR diagnostic notation without the tag and value abbreviations.</t>
      </section>
    </section>
    <section anchor="sec-workflow">
      <name>New ACE Workflow</name>
      <t>As defined in <xref section="4" sectionFormat="of" target="RFC9200"/>, the ACE framework considers what is shown in <xref target="fig-old-workflow"/> as its basic protocol workflow.</t>
      <t>That is, the Client first sends an access token request to the token endpoint at the AS (step A), specifying permissions that it seeks to obtain for accessing protected resources at the RS, possibly together with information on its own credentials.</t>
      <t>Then, if the request has been successfully verified, authenticated, and authorized, the AS replies to the Client (step B), providing an access token and possibly additional parameters as access information including the actually granted permissions.</t>
      <t>Finally, the Client uploads the access token to the RS and, consistently with the permissions granted according to the access token, accesses a resource at the RS (step C), which replies with the result of the resource access (step F). Details about what protocol the Client and RS use to establish a secure association, mutually authenticate and secure their communications are defined in the specifically used profile of ACE, e.g., <xref target="RFC9202"/><xref target="RFC9203"/><xref target="I-D.ietf-ace-edhoc-oscore-profile"/><xref target="I-D.tiloca-ace-group-oscore-profile"/>.</t>
      <t>Further interactions are possible between the AS and RS, i.e., the exchange of an introspection request and response where the AS validates a previously issued access token for RS (steps D and E).</t>
      <figure anchor="fig-old-workflow">
        <name>ACE Basic Protocol Workflow</name>
        <artwork><![CDATA[
+--------+                               +---------------+
|        |---(A)-- Token Request ------->|               |
|        |                               | Authorization |
|        |<--(B)-- Access Token ---------|    Server     |
|        |    + Access Information       |               |
|        |    + Refresh Token (optional) +---------------+
|        |                                      ^ |
|        |            Introspection Request  (D)| |
| Client |                         Response     | |(E)
|        |            (optional exchange)       | |
|        |                                      | v
|        |                               +--------------+
|        |---(C)-- Token + Request ----->|              |
|        |                               |   Resource   |
|        |<--(F)-- Protected Resource ---|    Server    |
|        |                               |              |
+--------+                               +--------------+
]]></artwork>
      </figure>
      <t>This section defines a new, alternative protocol workflow shown in <xref target="fig-new-workflow"/>, which MAY be supported by the AS. Unlike in the original protocol workflow, the AS uploads the access token to the RS on behalf of the Client, and then informs the Client about the outcome.</t>
      <t>If the token uploading has been successfully completed, the AS does not provide the access token to the Client altogether. Instead, the Client simply establishes a secure association with the RS (if that has not happened already), and then accesses protected resources at the RS according to the permissions granted per the access token and specified by the AS as access information.</t>
      <figure anchor="fig-new-workflow">
        <name>ACE Alternative Protocol Workflow</name>
        <artwork><![CDATA[
+--------+                               +----------------------------+
|        |---(A)-- Token Request ------->|                            |
|        |                               |       Authorization        |
|        |<--(B)-- Token Response -------|           Server           |
|        |    + Access Information       |                            |
|        |    + Access Token (optional)  +----------------------------+
|        |    + Refresh Token (optional)   ^ |         | ^
|        |                                 | |         | | Token-Upload
|        |        Introspection Request (D)| |     (A1)| |      Request
| Client |                     Response    | |(E)      | |(A2) Response
|        |        (optional exchange)      | |         | |
|        |                                 | v         v |
|        |                               +----------------------------+
|        |---(C1)-- Token (Optional) --->|                            |
|        |                               |                            |
|        |---(C2)-- Protected Request -->|          Resource          |
|        |                               |           Server           |
|        |<--(F)--- Protected Resource --|                            |
|        |                               |                            |
+--------+                               +----------------------------+
]]></artwork>
      </figure>
      <t>More specifically, the new workflow consists of the following steps.</t>
      <ul spacing="normal">
        <li>
          <t>Step A - This step is as in the original workflow, with the Client sending an Access Token Request to the token endpoint at the AS.</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_uploaded"/>, this information is conveyed by the "token_uploaded" parameter. If the token uploading has succeeded, the AS does not provide the Client with the access token. Otherwise, the AS provides the Client with the access token.</t>
        </li>
        <li>
          <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_uploaded">
        <name>token_uploaded</name>
        <t>This section defines the additional parameter "token_uploaded" for an Access Token Response, sent by the AS in reply to a request to the token endpoint from C.</t>
        <t>The parameter "token_uploaded" is REQUIRED in a successful Access Token Response with response code 2.01 (Created), if the AS has issued an access token and has attempted to upload it to the RS on behalf of C as per the ACE alternative protocol workflow defined in <xref target="sec-workflow"/>, irrespective of the result of the token upload. Otherwise, the parameter "token_uploaded" MUST NOT be present.</t>
        <t>If present, the parameter "token_uploaded" MUST encode the CBOR simple value "true" (0xf5) if the token upload at the RS was successful, or the CBOR simple value "false" (0xf4) otherwise.</t>
        <t>If the parameter "token_upload" encodes the CBOR simple value "true", the access token MUST NOT be included in the Access Token response. Otherwise, the access token MUST be included.</t>
        <section anchor="examples">
          <name>Examples</name>
          <t><xref target="fig-example-AS-to-C-token-uploaded"/> shows an example of Access Token Response from the AS to C, following the issue of an access token bound to a symmetric PoP key. The Access Token Response specifies the parameter "token_uploaded" with value "true", which indicates that the AS has successfully uploaded the access token to the RS on behalf of C.</t>
          <t>Consistently, the Access Token Response does not include the access token, while it still includes the parameter "cnf" specifying the symmetric PoP key bound to the access token.</t>
          <figure anchor="fig-example-AS-to-C-token-uploaded">
            <name>Example of Access Token Response, including the parameter "token_uploaded" but not the access token, which is bound to a symmetric key and was uploaded to the RS by the AS</name>
            <artwork><![CDATA[
   2.01 Created
   Content-Format: application/ace+cbor
   Max-Age: 3560
   Payload:
   {
     "token_uploaded" : true,
     "expires_in" : 3600,
     "cnf" : {
       "COSE_Key" : {
         "kty" : 1,
         "kid" : h'3d027833fc6267ce',
         "k" : h'73657373696f6e6b6579'
       }
     }
   }
]]></artwork>
          </figure>
          <t><xref target="fig-example-AS-to-C-token-uploaded-failed"/> shows another example of Access Token Response from the AS to C, also following the issue of an access token bound to a symmetric PoP key. In this example, the Access Token Response includes the parameter "token_uploaded" with value "false", which indicates that the AS has failed to upload the access token to the RS on behalf of C. The Access Token Response also includes the access token and the parameter "cnf" specifying the symmetric PoP key bound to the access token.</t>
          <t>Note that, even though the AS has failed to upload the access token to the RS, the response code 2.01 (Created) is used when replying to C, since the Access Token Request as such has been successfully processed at the AS, with the following issue of the access token.</t>
          <figure anchor="fig-example-AS-to-C-token-uploaded-failed">
            <name>Example of Access Token Response, including the parameter "token_uploaded" together with the access token, which is bound to a symmetric key and which the AS failed to upload to the RS</name>
            <artwork><![CDATA[
   2.01 Created
   Content-Format: application/ace+cbor
   Max-Age: 3560
   Payload:
   {
     "access_token" : h'd08343a1'/...
      (remainder of CWT omitted for brevity;
      CWT contains the symmetric PoP key in the "cnf" claim)/,
     "token_uploaded" : false,
     "expires_in" : 3600,
     "cnf" : {
       "COSE_Key" : {
         "kty" : 1,
         "kid" : h'3d027833fc6267ce',
         "k" : h'73657373696f6e6b6579'
       }
     }
   }
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="sec-rs_cnf2-aud2">
        <name>rs_cnf2 and aud2</name>
        <t>This section defines the additional parameters "rs_cnf2" and "aud2" for an Access Token Response, sent by the AS in reply to a request to the token endpoint from C.</t>
        <ul spacing="normal">
          <li>
            <t>The parameter "rs_cnf2" is OPTIONAL if the token type is "pop", asymmetric keys are used, and the access token is issued for an audience that includes multiple RSs (i.e., a group-audience, see <xref section="6.9" sectionFormat="of" target="RFC9200"/>). Otherwise, the parameter "rs_cnf2" MUST NOT be present.  </t>
            <t>
This parameter specifies information about the public keys used by the RSs of a group-audience for authenticating themselves to C, and is used in case the binding between the public keys and the corresponding RS identities are not established through other means. If this parameter is absent, either the RSs in the group-audience do not use a public key, or the AS knows that the RSs can authenticate themselves to C without additional information.  </t>
            <t>
If present, this parameter MUST encode a non-empty CBOR array of N elements, where N is the number of RSs in the group-audience for which the access token is issued. Each element of the CBOR array specifies the public key of one RS in the group-audience, and MUST follow the syntax and semantics of the "cnf" claim either from <xref section="3.1" sectionFormat="of" target="RFC8747"/> for CBOR-based interactions, or from <xref section="3.1" sectionFormat="of" target="RFC7800"/> for JSON-based interactions. It is not required that all the elements of the CBOR array rely on the same confirmation method.  </t>
            <t>
Each of the public keys may contain parameters specifying information such as the public key algorithm and use (e.g., by means of the parameters "alg" or "key_ops" in a COSE_Key structure). If such information is specified, a Client MUST NOT use a public key that is incompatible with the profile or PoP algorithm according to that information. An RS MUST reject a proof of possession using such a key with a response code equivalent to the CoAP code 4.00 (Bad Request).</t>
          </li>
          <li>
            <t>The parameter "aud2" is OPTIONAL and specifies the identifiers of the RSs in the group-audience for which the access token is issued.  </t>
            <t>
If present, this parameter MUST encode a non-empty CBOR array of N elements, where N is the number of RSs in the group-audience for which the access token is issued. Each element of the CBOR array in the "aud2" parameter MUST be a CBOR text string, with value the identifier of one RS in the group-audience.  </t>
            <t>
The element of the CBOR array referring to an RS in the group-audience SHOULD have the same value that would be used to identify that RS through the parameter "aud" of an Access Token Request to the AS (see <xref section="5.8.2" sectionFormat="of" target="RFC9200"/>) and an Access Token Response from the AS (see <xref section="5.8.2" sectionFormat="of" target="RFC9200"/>), when requesting and issuing an access token for that individual RS.  </t>
            <t>
The parameter "aud2" is REQUIRED if the parameter "rs_cnf2" is present. The i-th element of the CBOR array in the "aud2" parameter MUST be the identifier of the RS whose public key is specified as the i-th element of the CBOR array in the "rs_cnf2" parameter.</t>
          </li>
        </ul>
        <section anchor="example">
          <name>Example</name>
          <t><xref target="fig-example-AS-to-C-rs_cnf2"/> shows an example of Access Token Response from the AS to C, following the issue of an access token for a group-audience composed of two RSs "rs1" and "rs2", and bound to C's public key as asymmetric PoP key. The Access Token Response includes the access token, as well as the parameters "rs_cnf2" and "aud2". These specify the public key of the two RSs as intended recipients of the access token and the identifiers of those two RSs, respectively.</t>
          <figure anchor="fig-example-AS-to-C-rs_cnf2">
            <name>Example of Access Token Response with an access token bound to an asymmetric key, using the parameters "rs_cnf2" and "aud2"</name>
            <artwork><![CDATA[
   2.01 Created
   Content-Format: application/ace+cbor
   Max-Age: 3600
   Payload:
   {
     "access_token" : b64'SlAV32hk'/...
      (remainder of CWT omitted for brevity;
      CWT contains the client's RPK in the "cnf" claim)/,
     "expires_in" : 3600,
     "rs_cnf2" : [
       {
         "COSE_Key" : {
           "kty" : 2,
           "crv" : 1,
           "x" : h'bbc34960526ea4d32e940cad2a234148
                   ddc21791a12afbcbac93622046dd44f0',
           "y" : h'4519e257236b2a0ce2023f0931f1f386
                   ca7afda64fcde0108c224c51eabf6072'
         }
       },
       {
         "COSE_Key" : {
           "kty" : 2,
           "crv" : 1,
           "x" : h'ac75e9ece3e50bfc8ed6039988952240
                   5c47bf16df96660a41298cb4307f7eb6',
           "y" : h'6e5de611388a4b8a8211334ac7d37ecb
                   52a387d257e6db3c2a93df21ff3affc8'
         }
       }
     ],
     "aud2" : ["rs1", "rs2"]
   }
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="sec-anchor_cnf">
        <name>anchor_cnf</name>
        <t>This section defines the additional parameter "anchor_cnf" for an Access Token Response, sent by the AS in reply to a request to the token endpoint from C.</t>
        <t>The parameter "anchor_cnf" is OPTIONAL if the token type is "pop" and asymmetric keys are used. Otherwise, the parameter "anchor_cnf" MUST NOT be present.</t>
        <t>This parameter specifies information about the public keys of trust anchors, which C can use to validate the public key of the RS/RSs included in the audience for which the access token is issued. This parameter can be used when the access token is issued for an audience including one RS or multiple RSs.</t>
        <t>If this parameter is absent, either the RS/RSs in the audience do not use a public key, or the AS knows that C can validate the public key of such RS/RSs without additional information (e.g., C has already obtained the required public keys of the involved trust anchors from the AS or through other means).</t>
        <t>If present, this parameter MUST encode a non-empty CBOR array that MUST be treated as a set, i.e., the order of its elements has no meaning. Each element of the CBOR array specifies the public key of one trust anchor, which can be used to validate the public key of at least one RS included in the audience for which the access token is issued. Each element of the CBOR array MUST follow the syntax and semantics of the "cnf" claim either from <xref section="3.1" sectionFormat="of" target="RFC8747"/> for CBOR-based interactions, or from <xref section="3.1" sectionFormat="of" target="RFC7800"/> for JSON-based interactions. It is not required that all the elements of the CBOR array rely on the same confirmation method.</t>
        <t>Each of the public keys specified in the parameter "anchor_cnf" may contain parameters specifying information such as the public key algorithm and use (e.g., by means of the parameters "alg" or "key_ops" in a COSE_Key structure). If such information is specified, a Client MUST NOT use a public key that is incompatible with the profile, or with the public keys to validate and the way to validate those.</t>
        <t>The presence of this parameter does not require that the Access Token Response also includes the parameter "req_cnf" defined in <xref target="RFC9201"/> or the parameter "req_cnf2" defined in <xref target="sec-rs_cnf2-aud2"/> of this document. That is, C may be able to obtain the public keys of the RS/RSs for which the access token is issued through other means.</t>
        <t>When the Access Token Response includes both the parameter "anchor_cnf" and the parameter "aud2" defined in <xref target="sec-rs_cnf2-aud2"/>, then C MUST make sure that a public key PK_RS is associated with an RS identified by an element of "aud2", before using any of the public keys specified in "anchor_cnf" to validate PK_RS.</t>
        <t>When the Access Token Response includes the parameter "anchor_cnf" but not the parameter "aud2", then C can use the issued access token with any RS in the targeted audience for which "anchor_cnf" can be used to validate PK_RS. This allows C to use the access token with an RS that is deployed later on as part of the same audience, which is particularly useful in the case of a group-audience.</t>
        <section anchor="example-1">
          <name>Example</name>
          <t><xref target="fig-example-AS-to-C-anchor_cnf"/> shows an example of Access Token Response from the AS to C, following the issue of an access token for a group-audience, and bound to C's public key as asymmetric PoP key.</t>
          <t>The identifier of the group-audience was specified by the "aud" parameter of the Access Token Request to the AS and is specified by the "aud" claim of the issued access token, and is not repeated in the Access Token Response from the AS.</t>
          <t>The Access Token Response includes the parameter "anchor_cnf". This specifies the public key of a trust anchor that C can use to validate the public keys of any RS with which the access token is going to be used. The public key of the trust anchor is here conveyed within an X.509 certificate used as authentication credential for that trust anchor, by means of the CWT confirmation method "x5chain" defined in <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>.</t>
          <figure anchor="fig-example-AS-to-C-anchor_cnf">
            <name>Example of Access Token Response with an access token bound to an asymmetric key, using the parameter "anchor_cnf"</name>
            <artwork><![CDATA[
   2.01 Created
   Content-Format: application/ace+cbor
   Max-Age: 3600
   Payload:
   {
     "access_token" : b64'SlAV32hk'/...
      (remainder of CWT omitted for brevity;
      CWT contains the client's RPK in the "cnf" claim)/,
     "expires_in" : 3600,
     "anchor_cnf" : [
       {
         "x5chain" : h'308201363081dea003020102020301f50d30
                       0a06082a8648ce3d04030230163114301206
                       035504030c0b524643207465737420434130
                       1e170d3230303130313030303030305a170d
                       3231303230323030303030305a3022312030
                       1e06035504030c1730312d32332d34352d46
                       462d46452d36372d38392d41423059301306
                       072a8648ce3d020106082a8648ce3d030107
                       03420004b1216ab96e5b3b3340f5bdf02e69
                       3f16213a04525ed44450b1019c2dfd3838ab
                       ac4e14d86c0983ed5e9eef2448c6861cc406
                       547177e6026030d051f7792ac206a30f300d
                       300b0603551d0f040403020780300a06082a
                       8648ce3d04030203470030440220445d798c
                       90e7f500dc747a654cec6cfa6f037276e14e
                       52ed07fc16294c84660d02205a33985dfbd4
                       bfdd6d4acf3804c3d46ebf3b7fa62640674f
                       c0354fa056dbaea6'
       }
     ]
   }
]]></artwork>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <section anchor="iana-oauth-params">
        <name>OAuth Parameters Registry</name>
        <t>IANA is asked to add the following entries to the "OAuth Parameters" registry.</t>
        <ul spacing="normal">
          <li>
            <t>Name: "token_uploaded"</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: "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_uploaded"</t>
          </li>
          <li>
            <t>CBOR Key: TBD</t>
          </li>
          <li>
            <t>Value Type: simple value "true" / simple type "false"</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>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8747">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8747"/>
          <seriesInfo name="DOI" value="10.17487/RFC8747"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
        <reference anchor="RFC9201">
          <front>
            <title>Additional OAuth Parameters for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines new parameters and encodings for the OAuth 2.0 token and introspection endpoints when used with the framework for Authentication and Authorization for Constrained Environments (ACE). These are used to express the proof-of-possession (PoP) key the client wishes to use, the PoP key that the authorization server has selected, and the PoP key the resource server uses to authenticate to the client.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9201"/>
          <seriesInfo name="DOI" value="10.17487/RFC9201"/>
        </reference>
        <reference anchor="I-D.ietf-ace-edhoc-oscore-profile">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC) and Object Security for Constrained Environments (OSCORE) Profile for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE</organization>
            </author>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>   This document specifies a profile for the Authentication and
   Authorization for Constrained Environments (ACE) framework.  It
   utilizes Ephemeral Diffie-Hellman Over COSE (EDHOC) for achieving
   mutual authentication between an OAuth 2.0 Client and Resource
   Server, and it binds an authentication credential of the Client to an
   OAuth 2.0 access token.  EDHOC also establishes an Object Security
   for Constrained RESTful Environments (OSCORE) Security Context, which
   is used to secure communications when accessing protected resources
   according to the authorization information indicated in the access
   token.  This profile can be used to delegate management of
   authorization information from a resource-constrained server to a
   trusted host with less severe limitations regarding processing power
   and memory.

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-22"/>
        </reference>
      </references>
    </references>
    <section anchor="sec-benefits-for-profiles">
      <name>Benefits for ACE Transport Profiles</name>
      <t>For any transport profile of ACE, the following holds.</t>
      <ul spacing="normal">
        <li>
          <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_uploaded" defined in <xref target="sec-token_uploaded"/> is used to inform C that the AS has attempted to upload the access token to the RS, specifying whether the uploading has succeeded or failed.</t>
        </li>
      </ul>
      <section anchor="dtls-profile">
        <name>DTLS Profile</name>
        <t>When the RPK mode of the DTLS profile is used (see <xref section="3.2" sectionFormat="of" target="RFC9202"/>), the parameters "rs_cnf2" and "aud2" defined in <xref target="sec-rs_cnf2-aud2"/> enable the effective issue of an access token intended to an audience that includes multiple RSs.</t>
      </section>
      <section anchor="edhoc-and-oscore-profile">
        <name>EDHOC and OSCORE Profile</name>
        <t>When the EDHOC and OSCORE profile is used <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>, the parameters "rs_cnf2" and "aud2" defined in <xref target="sec-rs_cnf2-aud2"/> enable the effective issue of an access token intended to an audience that includes multiple RSs.</t>
      </section>
    </section>
    <section anchor="sec-open-points">
      <name>Open Points</name>
      <section anchor="sec-open-points-workflow">
        <name>New Workflow</name>
        <t>The following discusses open points related to the use of the new ACE workflow defined in <xref target="sec-workflow"/>.</t>
        <section anchor="sec-open-points-workflow-dynamic-access-rights">
          <name>Allow the Dynamic Update of Access Rights</name>
          <t>In some profiles of ACE, C can request a new access token to update its access rights, while preserving the same secure association with the RS. The new access token supersedes the current one stored at the RS, as they are both part of the same "token series".</t>
          <t>A token series comprises all the access tokens issued by the same AS for the same pair (Client, Resource Server). Specific profiles can provide a more specialized definition, e.g., by further taking into account the public authentication credentials of C and the RS.</t>
          <t>When using the original ACE workflow, C uploads the new access token to the RS by protecting the message exchange through the secure association with the RS. This allows the RS to determine that the upload of such access token is for updating the access rights of C.</t>
          <t>When using the new ACE workflow, the AS uploads the new access token to the RS also when an update of access rights for C is to be performed. This message exchange would be protected through the secure association between the AS and RS. However, this secure association does not help the RS retrieve the stored access token to supersede, as that is rather bound to the secure association with C.</t>
          <t>In order for the new ACE workflow to also allow the dynamic update of access rights, it is required that the new access token updating the access rights of C includes an explicit indication for the RS. Such an indication can point the RS to the token series in question (hence to the current access token to supersede), irrespective of the secure association used to protect the token uploading.</t>
          <t>In some profiles of ACE, such an indication is in fact already present in issued access tokens:</t>
          <ul spacing="normal">
            <li>
              <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>
              <t>
Note: version -01 of the EDHOC and OSCORE profile says that an update of access rights is not possible when using the new workflow. However, it is actually possible as discussed above.</t>
            </li>
          </ul>
          <t>In the three cases above, the update of access rights is possible because there is a value used as de facto "token series ID". This value does not change throughout the lifetime of a token series, and it is used to associate the new access token with the previous one in the same series to be superseded.</t>
          <t>Such a token series ID is required to have a unique value from a namespace/pool that the AS exclusively control. This is in fact what happens in the profiles of ACE above, where the AS is the entity creating the mentioned objects or COSE Key included in the first access token of a token series.</t>
          <t>However, this may generally not hold and it is not what happens in other known cases, i.e., the DTLS profile in RPK mode <xref target="RFC9203"/> and the Group OSCORE profile <xref target="I-D.tiloca-ace-group-oscore-profile"/>. At the moment, the dynamic update of access rights is not possible for those, <em>neither in the original nor in the new ACE workflow</em>.</t>
          <t>In order to make the update of access rights possible also for such cases, as well as both in the original and in the new ACE workflow, those cases can rely on a new parameter and claim "token_series_id" (see <xref target="sec-more-parameters"/>), which specifies a unique identifier of the token series which an access token belongs to.</t>
          <t>As to existing profiles of ACE, the above has no intention to change the current behavior when the update of access rights occurs, irrespective of the used ACE workflow and especially when using the original workflow.</t>
          <t>If future profiles rely on a construction where the AS creates the object or key included in the claim "cnf" of the first access token in a token series, and a unique ID generated by the AS is included in such object or key, then that ID must be used as de facto "token series ID", rather than the new parameter "token_series_id".</t>
        </section>
        <section anchor="sec-open-points-workflow-token-re-uploading">
          <name>Allow the Re-uploading of the Access Token</name>
          <t>After the AS has successfully uploaded the access token to the RS when using the new ACE workflow, C does not obtain the access token altogether. It follows that C cannot re-upload the Access Token to the RS by itself, e.g., in order to perform a key update like defined for the OSCORE profile <xref target="RFC9203"/>.</t>
          <t>Even in such a case, the token re-uploading can be allowed by relying on a new parameter "token_hash", which the AS provides to C and specifies the hash of the access token (see <xref target="sec-more-parameters"/>).</t>
          <t>Then, C can practically "re-upload" the access token to the RS, by sending a request to the authz-info endpoint that includes the parameter "token_hash" instead of the parameter "access_token". Such a request may include further parameters, depending on what is defined for the used transport profile.</t>
          <t>If the RS still stores the access token in question, then the RS can identify it by means of the received token hash, and take the same actions that would have been taken in case the full access token was re-uploaded to the authz-info endpoint.</t>
        </section>
        <section anchor="sec-open-points-workflow-applicability">
          <name>Ensure Applicability to Any ACE Profile</name>
          <t>Some profiles of ACE require that C and the RS generate information to be exchanged when uploading the access token. For example:</t>
          <ul spacing="normal">
            <li>
              <t>In the OSCORE profile <xref target="RFC9203"/>, C and RS are required to exchange the nonces N1 and N2, when uploading to the RS the first access token of a token series, as well as when re-uploading any access token (e.g., in order to perform a key update).</t>
            </li>
            <li>
              <t>In the EDHOC and OSCORE profile <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>, C and the RS are required to exchange the nonces N1 and N2, when re-uploading any access token in order to perform a key update through the function EDHOC_KeyUpdate (see <xref section="I" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>).</t>
            </li>
          </ul>
          <t>Evidently, using the new ACE workflow prevents C and the RS from directly performing the required exchanges above, since the uploading of the access token does not rely on a direct interaction between C and RS like in the original ACE workflow. For some profiles of ACE, this may prevent the use of the new ACE workflow altogether.</t>
          <t>This issue can be solved by having the AS acting as intermediary also for the exchange of C- and RS-generated information, by relying on two new parameters "to_rs" and "from_rs" (see <xref target="sec-more-parameters"/>). In particular, C can use "to_rs" for providing the AS with C-generated information, to be relayed to the RS when uploading the access token. Also, the RS can use "from_rs" for providing the AS with RS-generated information when replying to the token uploading, and to be relayed to C.</t>
          <t>With reference to the two cases mentioned above, "to_rs" can specify the nonce N1 generated by C, while "from_rs" can specify the nonce N2 generated by RS.</t>
        </section>
      </section>
      <section anchor="sec-open-points-parameters">
        <name>New Parameters</name>
        <section anchor="tokenuploaded">
          <name>token_uploaded</name>
          <t>The parameter "token_uploaded" defined in <xref target="sec-token_uploaded"/> builds on the assumption that C can operate in the presence of the alternative ACE workflow defined in <xref target="sec-workflow"/>.</t>
          <t>In particular, it assumes that C accepts as valid an Access Token Response that includes the parameter "token_uploaded" encoding the CBOR simple value "true" but not the access token, and that, in such a case, C continues by sending a protected request to the RS.</t>
          <t>In turn, this assumes that the AS knows that C can operate in the presence of the alternative ACE workflow. This can be part of the information that C provided to the AS at its registration.</t>
          <t>An alternative design choice would instead require C to opt-in when sending the Access Token Request to the AS. That is, C can include the parameter "token_uploaded" in the Access Token Request, encoding the CBOR simple value "true", hence explicitly signaling its understanding of the alternative workflow.</t>
          <t>Only if the AS supports the alternative workflow and the Access Token Request includes the parameter "token_uploaded" encoding the CBOR simple value "true", can the AS attempt to upload the access token to the RS on behalf of C as per the alternative workflow.</t>
        </section>
        <section anchor="sec-more-parameters">
          <name>Further New Parameters to Consider</name>
          <t>The following discusses possible, further new parameters that can be defined for addressing the open points raised earlier in <xref target="sec-open-points"/>.</t>
          <ul spacing="normal">
            <li>
              <t>"token_series_id" - This parameter specifies the unique identifier of a token series, thus ensuring that C can dynamically update its access rights, irrespective of the used ACE workflow (see <xref target="sec-open-points-workflow-dynamic-access-rights"/>).  </t>
              <t>
When issuing the first access token of a token series, the AS specifies this parameter in the Access Token Response to C, with value TS_ID. Also, the AS includes a claim "token_series_id" with the same value in the access token.  </t>
              <t>
When C requests a new access token in the same tokes series for dynamically updating its access rights, C specifies the value TS_ID as "kid" within the parameter "req_cnf" of the Access Token Request (see <xref section="3.1" sectionFormat="of" target="RFC9201"/>). The AS specifies the same value as "kid" within the claim "cnf" of the new access token.</t>
            </li>
            <li>
              <t>"token_hash" - This parameter specifies the hash of an access token that the AS has successfully issued and uploaded to the RS as per the new ACE workflow, and thus that the AS does not provide to C (see <xref target="sec-open-points-workflow-dynamic-access-rights"/>).  </t>
              <t>
The AS specifies this parameter in a successful Access Token Response, in case the parameter "token_uploaded" is also specified as encoding the CBOR simple value "true" (see <xref target="sec-token_uploaded"/>). The parameter value is the hash computed over the value that the parameter "access_token" would have had in that same response message, if it was included therein specifying the access token.  </t>
              <t>
C specifies this parameter in the request sent to the authz-info endpoint at the RS for "re-uploading" the same access token, e.g., in order to perform a key update (see <xref target="sec-open-points-workflow-token-re-uploading"/>).  </t>
              <t>
This parameter also allows C to seamlessly use the method defined in <xref target="I-D.ietf-ace-revoked-token-notification"/> for learning of revoked access tokens, even when the new ACE workflow is used and C does not obtain the access token, which makes it impossible for C to compute the token hash by itself.</t>
            </li>
            <li>
              <t>"to_rs" - When using the new ACE workflow, this parameter specifies C-generated information that, according to the used profile of ACE, C has to provide to the RS together with the access token if using the original ACE workflow. This allows the AS to relay such information to the RS upon uploading the access token on behalf of C (see <xref target="sec-open-points-workflow-applicability"/>).  </t>
              <t>
First, C specifies this parameter in the Access Token Request sent to the AS. Then, the AS specifies this parameter in the request to the RS sent for uploading the access token on behalf of C, by simply relaying the value received from C. The used profile of ACE has to define the detailed content and semantics of the information specified in the parameter value.</t>
            </li>
            <li>
              <t>"from_rs" - When using the new ACE workflow, this parameter specifies RS-generated information that, according to the used profile of ACE, the RS has to provide to C after the uploading of an access token if using the original ACE workflow. This allows the AS to relay such information to C after having uploaded the access token on behalf of C (see <xref target="sec-open-points-workflow-applicability"/>).  </t>
              <t>
First, the RS specifies this parameter in the response sent to the AS, after the upload of an access token through a request from the AS. Then, the AS specifies this parameter in the Access Token Response to C, by simply relaying the value received from the RS. The used profile of ACE has to define the detailed content and semantics of the information specified in the parameter value.</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author sincerely thanks <contact fullname="Christian Amsüss"/> and <contact fullname="Rikard Höglund"/> for their comments and feedback. The work on this document has been partly supported by the H2020 project SIFIS-Home (Grant agreement 952652).</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+192XYjx3LgO76iBn2ORUoAGxsBkrbnmI1mSxyplyFbludY
130SVQmyLoEquKpANiz1fIu/wk9+8v0xx5JrLQDYTenaM5c6aoKFyszIyNgy
IjKy2+227s+CYatVxMVCngXni0JmiSjiexn8lGZ380X6EIgkCt6er4vb4J3I
xFLCK3kwT7OguJUBPpdJEYfQKE3oXXyUZvG/8BN8cZomeZGJOJFRcJHcx1ma
LKFRHhycTy8Og1fY6wMM1xKzWSbvfTjgFR8WC0UrSsMEPp8FUSbmRTeWxbwr
Qtl9UO934f3uCt/PuwtRyLxotZ4FeQGPP4hFmkDLIlvLViteZfQxLwa93mlv
0BKZFGfBtQzXWVxsWg83ZwaQOLkJvs3S9ap193AWXCYIqiy6LxGEFuDhDAaI
Wvl6tozzHFBQbFYwzuXF+1et9SpCKM6CUxim1QrTCDo7C9YA9klrFZ8F8PMs
CEUSrHMZiCwTm+AgngdisQg2Mj8MAJm3Ir8NbmUGUAdBkYZn+A18zNOsyOQ8
P6M+IjkX6wWguEj195slf41/tgQt0lkroJ+u+h0EcQJvvD4K3seLNBTmMWP5
tcjCtPxVmsEMri6vL4LzF+YhLLeUgInLXMz/mGZRfiMA6cFgYN4IAa1nwfcx
LIZ9lkYwyvVFtz8ejXrO43VSZPD29YOMZGKey6WIF2fBEqE6Kgiqv8vio1zW
z+rbI1jPBSy9zErz+vZP/5YBdJVvaWoXWRzmOVByzfTep1l+K5aJnt7wEdML
rmHx7m7TxXLfid6kACVMj6H8O6kAOwrTZauVpNmSGAbX9OrVdNDvn6qP48lI
f5wMjgf640mvpz6e9Ccj/XF4ql84mYwm+uOp6eG0Z3qAj0P9cWA6g499/HjZ
fXlkGFJGt2nYTfMwzWR3laXzGMQNsF0yL4ENrQf247DSEYiH9E5G3QL+TbpJ
WsRzJXv0q0wI9PINcmllVKfHhbhTsAEwKMZg0eD764sfXp0F7X8EILr/AD9/
aLda3W43EDMUYyEIkfe3cR6A9FmjHAsUWz+BQDSikERjB9FAsuIwEChzFyDT
8qPgVZzlRSeIC2Rz6CQPRJDIhw7ICSs3tQwEqERhQLNwXMvsXmZG2CBY69Ui
FSiSAOxAhKHMUX4AolGKiOBK5uk6C6VuCp3M5K1YzIN0TgNMFzHMAtksTJPI
AxDAC1ZWfSBaZMLyzyoT1jKDo54aVSbRKo0BwVsmcMRLs4yjaCFRuoNAztJo
HdI7z4JfnsX44BOu2dOoq7lZo19+UaT/6ZNdCeg1C2/jQobFOpOIOYlUDmhT
GAXcAEALGip0horkfQwvHAXnCpHBwfQwyOQ/r0Fvccd5LjMCExB+A8KggGYr
mSlFA4jM0iW+WLvSB+fXhyAJCZPIdthJaZ07+GWi6IDpuUwG+KwQ2Y0sKvRw
cHV92CGcAipAZW1UY8AKMB8iBMDNVKNcL+rVNb4GOgLpTg3gzilfyRCYHJoq
2F2IjnhZ7ZKAdkRWAYEJxLmOF9TrDCTCXV4isdIyopD89KnDdOysyvlqtdDk
8g5mkYawdAfT9PzdITdEkQrrj6u5BLjEDeAHliafy6wTTF+8veLXUISq10Be
r0CKGAZgnE3fggpliuphj/rjULUCuT/vIu0wXAqjihhcnAAFXcKyRlGM33ag
ITJeIQMlAY3cyhXRImIjCf0ugluSFxJZFZgkXgl8S+Ed7R+PtGEey3WCyJGd
QNI68arneh1zZT8RtIi53EijDUqdoyZJ6nKWI/lara+Dy61STw9kxZ+xVAF8
u+YHuZQwCgBojMVPn5B6XVJ8uI3DW258vZMpgI49gTjlZSWGYj2XB1NQIema
6R5+AwIlmFrwB4pHAzEgxMEmLPm9TEge0DoBGBtevQe0AqkvuxJIDwsJJC+L
BwkjTzUQCF+cuwKnAwxS7Giu5u73AVr3CI3PKuTIfQmoiuWMaA9RkwHAoIt5
yll8g5LBNODJwwBaC4FJbntTC5fCPxlOHNQBcQuuqPwolqsF0F3KQCopESKI
+D0vXVmNIXwznBcIlzUwkZ4XEA8StFJjVXQ8xMUtU+7VdYUIFaPBtL5cwV27
hGm7A9IkVOXIq+FiHaHxhBZu0KaOPjBxyqjdQTRGwWyj+4MlYOqrIz49Y4bG
qn9D0h3kPpDGjCVYauQis3oahiz/ECbzQe3gwJD3cQQyVSMReHQ9A5Ea3MlN
rgG4ujZiho02sY6A5EPpLGaF8YAU1ToqpF0rgTg+OsWOjQg5NJBCt3uDCX8m
aF7icj4JmBaKJAT1jDj7XJThTjXgbvKOGnhquAj6uBeLGEVpqbXS+cAkB/Lo
5oiXl4cz+tWQnV7YtqJ1ekNL5j5IZphzU5uB16hwhTyuxrNnwXvU8Um6SG82
wTO00wr7QFlrCPAD7h6D9usfr98Dsuh38OYtfb66+N8/Xl5dvMTP19+d//CD
+dBSb1x/9/bHH17aT7bl9O3r1xdvXnJjeBp4j1rt1+f/p80CvP323fvLt2/O
f2hXZgLqkJA9Q7YE8FeZRBNH5K1I5mEWz3j2L6bv/uNf+yNA3f9QGzPAHf+B
Oy/4AyR5wqOlCYh8/hOVZEusVlIQmtEHEIpVXIhFTuuWg7JOyBMACG1dSeB/
FDwAkvy4YmOLYZuLZbyIoRdDTohqllGgD0K5IlPAgbiqL5G+dxrPjtZ2yISA
fZAAPv4mEKrDZxL9MwQx2Uw/yRnsrtGaAWPrp/e5MrZwe4omAdpLP71HQ20e
0wYSRn8tAZZI2Q64ef30SZmHDmWx8sCdXiwNL6NSBA7IcO1cAyfOXSK2wtsx
GMnWYmtpvRBZhwlECencMeQ7W8zlRnP9yF9XWPn0sxbXwS7bt+fvrKXkWLFV
g3WnbQogvklJzgjYkq6TBQo+UtkPMamriAzEqGNgC9pa7bURwyT/yJJhKw/1
TwwwM7oJ/8qQFfESVwhVL2784T27mcjXqO7z4DnLXAT6OW380DBw9CvP5zm6
v/6li4rRbkNQw7rMHaWSbB0WqRptFiCUpXYqWgpDD+3zhElsY+1oAleRm4f+
o3ardcHGDNqWoFVubllLlwUNLHyGuykiRlqnKBY3SZrDCAgnUw+Sgdbyhbih
6YIyWAP1kHM1ptfQlH4WvFEK3bhXUQx7JnGrdZ770l/r2JGnYTs1IkNzFRqq
gORYSyzqZh7fdNNF5BjfuHq47jORw3wqdjyxMnXTcXwNsNPMQBPmsAx5xdpT
W2eza202uQq5Cs6BGdmK3OBauVtQsvxiHEbe0d4mneEujGQJj0gttu1xO8Eq
hddmIN2LFDbPaNISxxoXGBJUQhhAJIWZJPMDWJ6FGNB/zEaInpYxZoH2EYb5
GrcLIDpotwyEbsU1/QmEIJSg0ewIk0f7HEWhFg1KYBFKXgBK2Dqo8wlhh2ZS
DVZwrpu402TpSHYm2UrFmjY6NQ4NmPordiV4i77HVkyg/4koEGaSFKhUjS3l
rKwes+KB8L0ixo8hzNo67gtGFop4FgEapWZEaLNeFNqItD3wGNz8FVj4L2kT
nis7nbjG8IEzfUQ8DKssPSAFAeZdDuKP99sS/URpyIzeCZZrhV+XHqgP9TY8
jTN/08PqxjPg7BaLOiOprR0KMDHyVrJJqVX/wFoBQ/y40yGsX9rhwSWd82qd
EQ+R3SVCC7SiSFm3hUU2jI/kEROT/BjeiuRGKpvYagukUc1k2AwWbAXdS2fD
DR1qCxuJYoWCNV3ngBi9s3TJEuWEppM8eEmdXqBy/7/2p/VNV/18E2z/MS/q
91u/6q9+hT8Pzg+7XbadwOTgWag3/+evpa5+dZruGPXXkpXiNv0bGPUFjnrO
s+bBDYD0orJq6kb9Rre7dIREPVTVpldyDutzq8Y8SFcshQ63omnHXNXPPzXi
59KjFY3l4ODl4a/URjFq8zhXmqS4618PLg4bhjIzMvR6aF57xPKZ1+73b/NN
MwKRzqaWzr7xKa1MZ48is8AaykGFyl7hmO+MojVvVqnskWN60H4uK37jMfQv
Z8GzspkTUKD9b9toKb0gQ8f4lLUR1v6knKK5Iq9HeTtLJha0cEwsraBgc4tb
h3y9WqVZ4bofjoIfk0V8J7XMNx67ykjGgHisX9QqshoHqavlKp7SVuuy3l1V
bwmhm30hC8fWMRa99rA0waxBWGhbDbd5IL1F5NkheQwjbKwGpkWq6mBrCKAS
ICtOFMpXir9hi49qViwyGGBz6KDlKeInjllVnS+ZASbAYr1QtYbbUymsp9Je
Ja59NL/7Cq2mH6PXNDxKaLt6Tf046q0enkcoua3z+sZXso7C2x/P3E+j5iTN
52Drnx6jZn71mv7KvXd/JF6t6adek7IipRcOzvvms/5+l4Z1tSsrVwPPwfng
0HxfA0+jui3N63EouTef7x/T9FGMM+1bSj14axbzt2Ccnf0QPIOyrtbc7MLj
6Povg2crA2rTocF2+J3w81QCs87IcBW9a2S4mXS1psZr2Fl5W7uOifWY/tQ+
2oRBrKOOdjQUEbsmH0rQZScabWljcgCULQlrQBi1qNUpB/gogcGVcVf7+XEc
MPoaDpwGwVKegjFcrBuiznQBZGxWasurBnJchxqGTvBHjMeQ4eTMh8yNpuk7
0A52QnvFfpqNo+LRlWnXAZ/Y+ahWvqYvuOvzvh35BQx8qXbIPsJZPhrDqZCL
hWecaY8YpVsUhVyulHuZgdiKUcfJtkcocibQ06CivIQE+DeUQM8Rp7toG0jP
b8BhtrLfEt2afqyUvZZxyTeVc8B9Y82hcojVOrjAKmw2SMkWldEu81Mh1PCC
l90SvNWOdNOJapvvbmyWedr32DINwUDNOdIU18NvEAsD4lzmIl5oH6Lz2EQO
d8FiVucFxUvYWR+EQs9rf7+eZTTd5VRTzhYWmzKLWcOeSZa8nmogUWNju+7b
38nGdjCloc+Dl53ggrp5xWGgrVLlfVl6PzYpoy7a28NI1/vb3zJXo4K3J0rW
sGEOJ31dBzqcFAvGXIaKhrqu34GvlzPMfJw/cdoHh8R9QaNALAmtBucAYa8G
pKr0oqBFRcNqgZ8je1gajRMlcykBdHtAhYTGVFHgFgAAeh25p7i2s2uvh4pX
1HhhMY0akdkPDqawYwa+OzSxESWYDMVUObFJY8VF0OCwmLo5MJQEt9UDU9E6
rv8lzjLJu5176cQDnOiAK4or8n8LVnViBDp2ME6IibjkMFF/7NcB0a5STBhh
JA+HVAHENp6VaAcHvY/z48M61eG4JB60BqR17Wj5UNPpXCxy1evo0EaOrben
Aea2AjbfCm2nKldcTKlAvU16cOlPU1xlGardOV0RKz8LdEy31WJPnBKC3fNr
4OjuVCWwW1uEPHcUw1RvUlSllh1c7Yz5EmVDkKi/Jrs3mKXrJGJWzjdLwGmG
Dsj0HSbaKPFeO6DWXvkuGiJG9dGvouIqDcDmf2pW9Vx2RvTt60xEcTN1onyd
ZmPWml9qpWrifAAsIB4jvUW8WNg0jtK0KSeqZMZWEGqxXWOZuVs4MFZJmilh
hn/DlHA+3VdkFpwFwiYhPwe9/U04S+mUymvxsXt+I8+C4fGYzsu8ExvEIJ3r
+YXPj1QWic88ddS38uMqBkL/ECf4zXDc6+lvaJZnuht4gFkgH76XG+8pPL8r
6FG/4z6LaaTbr4ZRbzA5GQ7n4XgwnoTyK+8tfmcyHB9PhvDv6Xg+luMZ/HX6
lX7tU8v++lS7993OWno3fLGDrTqluLRd759LKPy5TZmzSEq1JMRZILXMhnSB
WgjFowXQ0LZRvLgz30dudNkyd8QHW2CfIUMouehJBMmlSpMzdl8zTzZx2DbB
wgpjt2Rh1Oy1KS0LlS2ykNDkgV0xMZ5cWjgJVvKeQtqYJfSZc+1oo6PRmjJZ
WZiH6DkegEzyOFEbh1ofjVCpWPUhGbCWQk5hchKyzI7Ryf/ShPdnFp089Aca
mkVV1DsZjoai/9Xzo6MjJaIOMjygh2fyiHp+eh+ky7hA8xJtbUq6KjZ/rV7G
r9UpjryBFJQtwoQTLkS8PHzeaRTmxA7/30jzrqb030Co+4lZny3a3UMjVb7U
bIgSHsxElS2tsrOigdr0qceYXz547JYvd3KwKYGZkt5/h33f10Fp52fAAOh1
FrW/b8Cz0ZQyuUpXmG/toZMTelASWc9TwwEANTmTjs/+SS2ll7C/ipFMMH//
gDOARCmDH1Gw/QzBls2YmWj9LiwI2P1mW1iL2vP9mJC3m+/vHhDACaA+rjt+
4OR3KXJf5nJxz7l96jSSluywvuh9oz5nMbvd3YQpd3yN+jDNWGvQ23gUKDKJ
1LhQaA/ZUDi2oWRW5RNaSkEn05RrxaICowQz3qHKmF7VE60/aRGlJilXOHCa
LSZQ712CtpCxB7CvkKijsAlwJfSYvFmHo/zQNyyiv5v2ZuHungUAmHTRw7Dh
fSkf5Id1exPIhaTDWx2VTPYG509eLeNZ+sJDJsGFgBfUOCbhwoJR2sx5R0PQ
pXd1XT86ExDNkxW10l6gyj6qdMKlQOyaqIWjwPTSkqywTDY86ism43x9Pn4L
sHbZ7e9m99ECN7bH0+yq/f+6fvumpv0RHtri02sk0OKMaFQUdLIC4dVrU4O0
TIIs1O5LWHJU4fbkwZJOHjCNEPZVBy4XLcVG631XVDt2oSsJdDp7aYnE4ibN
AJNLQjiygDrGA+KBGMyM7CgDaNRG3LWhhw/pKm+z103rfyxmsKbzDofEnjR0
KSRi3NcoN5UP3Yi6Micq4UunIPCka0HpmDb9VieNZmTwOFPyPewkwC0DBud0
bIlGzeQfKakf+0rJZMesT0nOeACHApMcYqATRDiyKFm8SACwn6BYlnMogr4b
HfV6wcELYWLWh3XKjbWqq9lcRz8v3W90hOz/CTmkrVzGY2kGM4SeXi7kR3TH
ZBRNcLaBPnp3CS97XrUZoEzOZZYp+uNDcvXTV2fJbsW9tAJBQwVk+5CuFxFO
gVQtHsBkODc6KmFUY1Ehqbbabm8LgNtToloOHh+dHA18c4UtygZ7z9v+7+6r
o3eCBAaH6CNa57pzARz1IPaN4vs4WoMqpUiMWoE6HrIBgYrP1zUitUlF/cTd
4kvoq0pA2nV9m+ae1HUFoBbKew5ugLcxY8893OTlUe1+H7cwGY9lIkfRnVLo
HSb3kJI0gOn01Z4iywfqfKTZDE2/yj1dlbvm/B5e5kanineAsKzdarY6+qi0
0q01dg5tQNSkKJpawG6GAr9hvIpdG6DWuVMR60gwqr9OYCM8i81v4a+ATf2+
/orZePTV9eL874eD27un81iEZADAal+9+36rs6LZG2FW7Sz4R+0acJ0QDc4J
654YdLynYXZfdlrA04/skJjNwuHodNw7HoylGEXDgTwd9UIRDcRgOOqPTtw2
+ieKwkF/ctoX/YGYz8KZCE+H48GgNxpH0Wg0733lj7ThkUbH/VM5OJ4MhuPZ
QPRCOegNhvPe6bA/78+HJ+O6kUIxEfNIjEfzMJK9fu8kHAxG4XFfitl83JsM
vrKNPhkvSuc3R5oIJ8fyVIZyKI97s3l4IqNxb3h6enJyegwA9uqmchyOJrN5
fxzNT8fjcU+M+oPTk3A2GvYm84mcjeuRNpbHkRz3+8OTEzGanYiTAXwejgCA
aDiR4ax2pIEYnkwiQLUcR7NhOBCnw2g+6M/nQzEHYGuRxh/+oGmQFQMQIIm1
Dsu0P+zvmNKumz1dUcoObfSkJyXvR0dZsiWB97PmnZ9Z5P1M8/i5rfxJtrSA
8iTZB49PHXDqFPz+aQPu4Pv5j9jkaXAhbXPfuEPVe3C+wH3zpeUa2Cp5zta4
H61+pEFemgQOr41Usu8e4V+zXlVldWP1I8fLpqP3e3l6njs7jc908zAyt2CR
9oNqqO2uHr2lnnKqCB/KUCd+VWTauA9qKpnEyX26wOREb9E944xmUPGNHVbS
NR67sSNMGPOWTQwyw4A9C/fkI2yzWfPjaWPj9VB5YggMLOwX+5Hc+Wuad0lu
R5GSIlhIgblYelf3RaS/Yy5/8Wpt82o1ubQqldkaROpfXF++64vWvLa0j8sT
erPxIDYlXklV4TStoEJpMhbtCphsF0UV1h2+b1zb3YPLf95VCKi+xaBdzYfz
YlufDOi61gXqKVXnYUqkg74gRKOtu1CnYq0m2atiVF1wotX6SavBHTvUWVpU
nTcOxddkAbC1uQMZqv7ilClsKe7wkKZeO4/Q3n3/gYux6XOGqMSVgWlCMzrh
GL0HVvbpIlgzOU/JOGInzmYni3tTdEmSgHkE+rZgzk2sKWPPYMcYTtqrUTpv
rxCxcVx4XLJSRnWKwwOgSUXxHNmGElSNEADBuG5ec4zUWQktEbhwH3SKlXio
dqogdjXqiASwDbaYYLMtLsRlFzBNVtctwhBeTThwPx+TszP4s7mZPseFxKKv
6rorObAoA7Wcds8uVktY+jTQdm+ripw29MamgDb/quRoIq8sjVdsl9UlnNbh
WE33szlKkew2a014tpprUG/fnXAomtmMKL5Z6t6kyq8+07ux9/VOORcQaEex
CXMgBwdBBZ4E/3B03DsNQqyGO+d4LjEsEoxfpMzW0bF+ad8yLdsPyt1VtoOC
9sfj8FagK8sT4ntUNfmLE7DeCeiK3QY/oME5JR/1TsDcGI7hdz+Sotcb9uBv
+H8An/rz4140rHVL4U9P9MbQXJyMRyehHEa9EbaGZuNhvz+C34NerXeO2g6P
j+n9sDc7HozGo+GgNxlRktNo0BsNR/3mcfuyPwG4YCT4r6/+N/8dC/y2qS20
wrcH6n+nFYAO3+G0m8eF+Rq4+xMceYBwDOHf0fB4EI0a5zsa47cjeAdwPYF/
sepeNOqPAIrjU8DVcAuuJg6OcXV8rEPj3qQZz4DOXm806w/6YzE7Hcvj2XA2
HI568+NZNO8N5Pi0EVfz/njQH4oegH0so9FodNyb9Xv903AQzXEGJ6LWkYg/
IhzJ/ig6GYe905OhjNDvKeeDEcA8Phn3w3DUPN/j0aQ/mchxbwDo7kW94/58
MjkdiBDoCZZpPuxtWd9eb8ar1I96c1gposkebPrgG0WvTW19OgbMTZAdRqMe
+qhHx9Hk9CRsanvakxPgll4UwvZUjI9HoQzH4VyM5z1Y7skYkCEb5zuQUW8y
DwHbp6PwZDQew6RhTKDJ4enJcTSfRaOmtrN5FI2jkQjnw5PeKBwCkcnZfDib
wNCDMSB5Mpo3tQ0BTaO56B2Po5mQYlxOKHyE39Zxkf6erlv01JqRlb/WXDBC
JcexWB6X3wKd/+IlFbM/f3Ne/c4rDXir9srWCtPlsFCMYwd8uKxyhcuVvIlh
A6yqr8YiEd0Utae6MAXgo9Fpj3HH1rCIotJYAEHmlI9rl0dpg8XDw1AOxRu6
b6OcxQpfmBbBj1RC/YdU3eoQ6Fp+qmTD18GUq3ZNuYz+QmZ4ucr1t/DNFUbw
0fg7A8X8V3iLwyeYxV8ls3z1187oOvj0Ow9Le5jfe0yrYn/bkesIjDxNr8GW
ocOQjeSGxk13qV57Gqrzh26XdiiUhR6tbd2D6lnXrbRKnX8vN2cBcunXwd9T
6sd7uuan7sDcc/2UohXq/MJnkeu2kcml93hqfMouPWL7/I6xTsdMhHcoAF/I
BKztgoUZHr58j3crYNkqLGeB9rU9zDtT73bhXW19I0G9ouDFhq9loKblwoU+
dd2miyg3KV/lqufbDnhS6f75XEf/bTFCdhSovRhmkBOood6W/Pmq+l85Ff2/
DowDpzJplTi88xTpzpoLJgXZLUxfPrrzBSUlAH0mtNRQkIFc7pSYz5rx5fsf
rjU1OU4s3NgsMdyiNob0mqYcPYtS8tTQTZ0aUOrUHgkrO32kMmEPKLrzNXk1
O1pMOouyTXYnxTMeLl5+95Yp6+319O3VRQ1OKq+U8bHXhvi/D1KCtyto+w4D
1VbOpPCsS8HrnDUfFhio1FB23nLrKb/3RE0U5+GaKrzh6wG/Xi7Xvc4NDT5G
GCkv4LmJar3cJGIJFuqPdMmKY+1exTe39fOzN+lF3LjLSO1m1AS1dRLkWL5F
y1sjU9mDZOqoEuhl/uXrXigMqb7ifvVJXIpvZPfm1By6SLfX17PXqXhj5esV
0JnUrjLoISNveAL9FWkmI6/UB720odQB8vRX3LRt1atEK6QNiD4P3CeUPJfF
VDBYReG8C3q0l1C5EanL82tTLoL+Xok4Cw50ocRS7fjDo+BaF9EwiEd068oy
AiSXtm/EAgs+e5XUTeRsrsroFuKO43BcEAXvoXOdfY1OtVwVSDDaSEcB7AbI
1Bdx6RbJw632UkccSr3NNuauI9WjvmbJFPB102l3k4d14KsRYKxI8h0BTphM
qR2dO1D2aPJ9aZE5a+MTsD6bXsJFmX1ri2huwQUF6ShXA52zho39oSnaTOnc
5G4FwkctaxJAKtgz6cq2AM4OhNbaEUfBd+mDvJf6DoSadiYmeSsXKz2nDLfN
UqdSK2YsTd+wr2JODqnAhhhp1zs527T8uBggqjjzQTNaRZoi9SOKhZGZSuw1
IZvuuENQvNB77SruIBargygIg/7fuNCnm/XNdJqIr9d8uZHzNXE/JVRZqiaP
uiuXQEtwCjemudyy/ks9idiI+cP64iU1+NbWnSInBwpjjx1t0Rt5dW4UUAeT
Dc98qHwclSaDz2tCLvkZXdLEFPrueosd5xQr79TgK7cXWGhp7Ri/dCxWBSXY
J46RIPaCOwrbL+lFTKidNs7RgXL6gupe3xmhUxYahjMRI74QwVtGr7IMz+zI
wU/JknNqtv+Xw4iDEIb6w2WyWhcfXmNMFTdT6YxOBj09khoN30cYvP81EUkz
++BWpX1qJAZBgBUMzvBuCjqi1e319auNeM3FRkn6LapOBVXNNvuhqm7tVXNG
PbHINvdOmNaAOG2PR5jMeS9ZTtGUbjPJAfecv+ooI6ERMOciglCoLAG+U0io
ZdEhy0iSbEt9szK4fKmDt/y60Z6+1aNzThfxXBbxUiUEuD2pAHThbr1N2ki9
snJSlvhmAzKV9UUQbIZrDxxXEmctgTtqVk5BaS6+lkz59JQI1kkMGknNkK8v
pUuZ8xVw0/NVSjdfWOcAGC0LWF9yrqh7VK1TReuIBy6vjWW1TV5pSc3oNfRu
dFAn4NTVPSGGZ63JmSBroO+AmCNHHwLdivQ9FWzwkxPrOUOU+cK3lzDV6UYm
MiOiJCspXUTO0uGj8tQ4fQkTYflAd+6mefoOi8Q6NBwRb0x3utG8Xrjtvo8j
OOcVWqZLU2psh+VU4V22b1JMz/6QqMTKcpnDxN44V7bdPrgGHtAXJU9tY1HL
9lz4JmPLQ2HROXFEW8AyJLQs9ZB0eBpKWPAmmPMshX8NMt/RxaKV3WRMGh9Q
Ojv3QC4J2e5lkDo9yGZ1GE6q5sV4jFh/L+ZMLlL00RfpEd34hNfKfIz5qF/F
QCP7FdlHZwyTa0WXljTCydqUWFkHhEhms8yb1oRLk9ZbmiS5PGudii3ai1If
GvadTm3MyznseKl6pJmVXRt2oqqLoz3BQKJAuQ6UcoTZ3NVwfo2arhEGlIRa
ldBmDUFasiTw7mYIYv8EAJGrB45KkCOBCX0sMc1lto+e6ei9FDS1RF1x81ry
rPiWrmS3Un/Yi6VudS5xjZfM6QNvHpsX0uT6f1apuBpzoOyEMErVSS31z/y5
d0AU+ibiwCZJcVZX1/FSe/P2HBlxgbc4a/9L7IgrtUtXR9YVf1CdW+3hM8VE
G811TNW+Z/KqVNjVAT5nlVSmI+11mc6QF/hMR0VUKQqAZbg1pbfU0tiKxKly
BfnJZtim9jjlVhFnbj2bKscWRrW5EHfbTKO9ZfXJv2VKipcPIdVU8Q58V3DJ
YnbmD+/QXSA1drWXe6X36WbspTASw3je7KQ7tm5uQBJIJ476688WXDmUZctl
AqVx9ULypdSUKHOcAEZgUDPEszmqHheVzDhTd5v7QVyowjxa13IOq0o/cM7C
k7FH5cDw1cQrP4PsXDI+RW4p1brBa5ZMJ7omlCWtrmqfxQu036DVebLhwr+K
V7bKIOG2BvFzXeOd8JPpvSicFtje+QG2jrWnTR2zaq47fxS8suWSz/bcok91
HA/d1a6F7bhHsThPAuMEb/r09ptBpwKLkVP7WrD+va63ZfGCEVef3feTeodP
ue32luhzELR9SjsluOtIna8Tti14xw0bBxWIKcUQLxHVZnYLYBieHgvFi3ti
0YWXZFRxZOK2jaLJHgJofxXB9EO8EFEBrPswmNFoMRtdW/Jv+xUDzpETbVPx
YO6JpVIMG6CqvW/Ku2ec2KLeW2i2TmrGWkQ2Bswcfa4yqThkqLRhzof3QPSh
zapQgz5uDj+oYgHoTo9FtrF7B9o4OhcKTrtqel1ryTmSoVNSt1g8wFO4OWqc
D5g/RRFRXDn6a7vOLF9GbLO4dW8Iq73SU02OPeRNkLIQw5jkxitWulOYnQNy
Oq5yIUDMVJpBacJatSClNW0MIEollYGmaAzXEVc5J6Y94J73anaXryhfYw2B
d6tJkLBAWeGZ6VMdtrRzbGg48BteqfrvGEeuKVLvqiuvYP2zSs34ncXXd+dn
zNbxIsr1sUABzLFcsTKz5wIAIqXrtJPIOYYmvQLpj4hWl4g3Lnh0aaxtJC+8
tUHkfCShub7NHqacxYku2E/vNZY9by75yxIWq7OWLe8pOaniZI1nxlxr1L1r
wrNLiRRQ+a2zREk3DwmKTSpHnz9zRZTzTAk/N87tmTE8jr3uw56MKSh4r3I8
dam888QbEJYgvgGL7zaNQx1u1Ca0NqjoLFW6KsC+Yy7XuKpsqCrHc7wDg2TD
OvW9t91DUHsChzrv7EcTnYBjaDpcB1oPZwqkqe4wX+PpirwQiaczHdQ4vom3
zn0sgFl1OWPe2MRexlKHnSel/Q6h1Sw55WbtlZm15SKFBiygSNN3+5bEIQpx
lQltRGNZBzbn12h3X8fsvEr6lohcMYK75xJRhNeuG7eSm6cjYtyMSZEtYvZW
slRzE4Q4l7Tq3+s2lwQlE6bOm1e2v4vbdQ4rCJsfhs5IA+V75ZuaG3Ns9vOy
ORbHIxKDyFYNAs4o1JXC9t9ZaCZwcOKXkth2eo5PJTq14t5ff7h86doj59eW
QUSjC9YEQZxQWo2LyJnoVIvzvC7hyQ2f4JNce+AoBbS8ZFqGlBZtWiIUZ4bI
XpXAYd0p7m2nHisJjboWAR/1PjTXAPlgOCiqg2Kf8KXDJ+xm2cEi2q9UdmZv
vWHCuUuopv6+I5+qzkKWt2tfEVfv9EIn2JfxTA2Cy8S/+9Kcjudk2X4dD+1i
vBJ3+5lEzjTLZqSiEzuuYh9n6TBJbo0mUHqvcO7UUNzmV3OdSrdC+d7x3iyk
QVPmU+U50dVAYEo+CMd7jvJfxkm5Kn+Vq6c7RZC233KnlGidc9FejYPc3nb9
Cm3Xd+Yalnu6iXdRW4133ZKaNyeb/KROt+dSLGG7nfPRc4JTHYdtPgQLG3EY
MFLDAm/wEV2QJqqUyQIUZqIMIvWyn72jrjl42JWNTiy524ev/dUYEswpmLr0
oo40U0WNzo6SiNQ47bV4om1dN9gjsa9BdDXss9UOQpSvmaN5ls8rcG0izrHS
Ukd777YWsUdm2JGaWU2R5IP+tJeulkixI69X6TZ/QNkW3EW1vj9WE+wrNB/K
WnAP06DKpLxxkMnexkZlp8bdcSLonrPmoARfG04I1W1Y9Pk3W6p7SGooQC8/
MyF1EMmC7xoI+Sx5ffEir9BOc/kegoYp3rgyvoTmGx06jyF6hfQq5cO+woQK
PQ9l5QzAb0D8enDlLmwOSz4l+Wv620mx+gIvj+47FXzVm1HsurbhK7cqxeNY
Z5ud/giGUA6SPzdXPIP5oAMG+r3hM1u4HRX+s094/piLacvob9tJ2labU0G3
zrNTnRzlGHO/y4EWfpneZph0gV6tZf6nf8/BJOQEHfjuKr4TWRR896d/u1ms
k+iT0qUAYZzRUS8CBF+eSxnh8TnGExIUO/PKh4YpHocuH3RbsLfBpht8h1UV
EL+UXnB9+eryuvsdeuAPvsW7TgNxk0muKHR6PBgfD5A+/xOb+WlYT6IAAA==

-->

</rfc>
