<?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 1.7.29 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tiloca-ace-bidi-access-control-02" category="std" consensus="true" submissionType="IETF" updates="9200" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Bidirectional Access Control in ACE">Bidirectional Access Control in the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-tiloca-ace-bidi-access-control-02"/>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>164 40</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>164 40</code>
          <country>Sweden</country>
        </postal>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="02"/>
    <area>Security</area>
    <workgroup>ACE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 62?>

<t>This document updates the Authentication and Authorization for Constrained Environments (ACE) framework, for which it defines a method to enforce bidirectional access control by means of a single access token. Therefore, this document updates RFC 9200.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
  Authentication and Authorization for Constrained Environments Working Group mailing list (ace@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ace/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://gitlab.com/crimson84/draft-tiloca-ace-bidi-access-control"/>.</t>
    </note>
  </front>
  <middle>
    <?line 66?>

<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 ACE 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, Concise Binary Object Representation (CBOR) <xref target="RFC8949"/> for compact encoding, and CBOR Object Signing and Encryption (COSE) <xref target="RFC9052"/><xref target="RFC9053"/> for self-contained protection of access tokens.</t>
      <t>Separate profile documents define in detail how the participants in the ACE architecture communicate, especially as to the security protocols that they use. Profiles of ACE include, for instance, those described in <xref target="RFC9202"/>, <xref target="RFC9203"/>, <xref target="RFC9431"/>, <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>, and <xref target="I-D.ietf-ace-group-oscore-profile"/></t>
      <t>In some deployments using the ACE framework, two devices DEV1 and DEV2 might wish to access each other's protected resources. That is, DEV1 wishes to access protected resources hosted at DEV2 and DEV2 wishes to access protected resources hosted at DEV1.</t>
      <t>In such a case, bidirectional access control can clearly be achieved by means of two separate access tokens, each of which is used to enforce access control in one direction. That is:</t>
      <ul spacing="normal">
        <li>
          <t>A first access token is requested by and issued to DEV1, for accessing protected resources at DEV2. With respect to this access token, DEV1 is an ACE client, while DEV2 is an ACE RS.</t>
        </li>
        <li>
          <t>A second access token is requested by and issued to DEV2, for accessing protected resources at DEV1. With respect to this access token, DEV2 is an ACE client, while DEV1 is an ACE RS.</t>
        </li>
      </ul>
      <t>The two access tokens have to be separately requested and handled by DEV1 and DEV2, separately uploaded at DEV1 and DEV2, and separately managed by the AS (e.g., for providing token introspection, retiring access tokens when they become invalid, or notifying about early token revocation <xref target="RFC9770"/>).</t>
      <t>While this model results in a clean split between the two directions of access control, it also yields substantial interactions and communication overhead for both DEV1 and DEV2.</t>
      <t>Therefore, it can be desirable to achieve the same bidirectional access control without such downsides, by means of a single access token that is requested by and issued to a single device.</t>
      <t>In order to enable that, this document updates <xref target="RFC9200"/> as follows:</t>
      <ul spacing="normal">
        <li>
          <t>It defines additional parameters and encodings for the OAuth 2.0 token endpoint at the AS (see <xref target="sec-parameters"/>). These parameters include:  </t>
          <ul spacing="normal">
            <li>
              <t>"rev_audience", used by C to provide the AS with an identifier of itself as a reverse audience, and by the AS to optionally confirm that identifier in a response to C.      </t>
              <t>
A corresponding access token claim, namely "rev_aud", is also defined in this document.</t>
            </li>
            <li>
              <t>"rev_scope", used by C to ask the AS that the requested access token specifies additional access rights as a reverse scope, allowing the access token's audience to accordingly access protected resources at C. This parameter is also used by the AS to provide C with the access rights that are actually granted as reverse scope to the access token's audience.      </t>
              <t>
A corresponding access token claim, namely "rev_scope", is also defined in this document.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>It defines a method for the ACE framework to enforce bidirectional access control by means of a single access token (see <xref target="sec-bidirectional-access-control"/>), building on the two new parameters "rev_audience" and "rev_scope" as well as on the corresponding new access token claims "rev_aud" and "rev_scope".</t>
        </li>
      </ul>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
        <?line -18?>

<t>Readers are expected to be familiar with the terms and concepts related to the ACE framework for Authentication and Authorization <xref target="RFC9200"/><xref target="RFC9201"/>, as well as with the terms and concepts related to CBOR Web Tokens (CWTs) <xref target="RFC8392"/>.</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 CoAP <xref target="RFC7252"/>, Concise Data Definition Language (CDDL) <xref target="RFC8610"/>, CBOR <xref target="RFC8949"/>, and COSE <xref target="RFC9052"/><xref target="RFC9053"/>.</t>
        <t>Note that the term "endpoint" is used here following its OAuth definition <xref target="RFC6749"/>, aimed at denoting resources such as /token and /introspect at the AS, and /authz-info at the RS. The CoAP definition, which is "[a]n entity participating in the CoAP protocol" <xref target="RFC7252"/>, is not used in this document.</t>
        <t>Furthermore, this document uses the following term originally defined in <xref target="I-D.ietf-ace-workflow-and-params"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Token series: a set of access tokens, all of which are bound to the same proof-of-possession (PoP) key and are sequentially issued by the same AS for the same pair (client, audience) per the same profile of ACE. A token series ends when the latest access token of that token series becomes invalid (e.g., when it expires or gets revoked).  </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>CBOR <xref target="RFC8949"/> and CDDL <xref target="RFC8610"/> are used in this document. CDDL predefined type names, especially bstr for CBOR byte strings and tstr for CBOR text strings, are used extensively in this document.</t>
        <t>Examples throughout this document are expressed in CBOR diagnostic notation as defined in <xref section="8" sectionFormat="of" target="RFC8949"/> and <xref section="G" sectionFormat="of" target="RFC8610"/>. Diagnostic notation comments are often used to provide a textual representation of the parameters' keys and values.</t>
        <t>In the CBOR diagnostic notation used in this document, constructs of the form e'SOME_NAME' are replaced by the value assigned to SOME_NAME in the CDDL model shown in <xref target="fig-cddl-model"/> of <xref target="sec-cddl-model"/>. For example, {e'rev_audience' : "rs1", e'rev_scope_param' : h'00ff'} stands for {56 : "rs1", 57 : h'00ff'}.</t>
        <t>Note to RFC Editor: Please delete the paragraph immediately preceding this note. Also, in the CBOR diagnostic notation used in this document, please replace the constructs of the form e'SOME_NAME' with the value assigned to SOME_NAME in the CDDL model shown in <xref target="fig-cddl-model"/> of <xref target="sec-cddl-model"/>. Finally, please delete this note.</t>
      </section>
    </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-rev_audience">
        <name>rev_audience</name>
        <t>The "rev_audience" parameter can be used in an access token request sent by C to the token endpoint at the AS (see <xref section="5.8.1" sectionFormat="of" target="RFC9200"/>) as well as in an access token response sent as reply by the AS (see <xref section="5.8.2" sectionFormat="of" target="RFC9200"/>). In particular, the following applies:</t>
        <ul spacing="normal">
          <li>
            <t>The "rev_audience" parameter is <bcp14>OPTIONAL</bcp14> in an access token request. The presence of this parameter indicates that C wishes the requested access token to specify additional access rights. These access rights are intended for the access token's audience to access protected resources at C. That is, C is the access token's reverse audience.  </t>
            <t>
This parameter specifies such reverse audience as a text string identifier of C. When the access token request is encoded in CBOR, the value of this parameter is encoded as a CBOR text string. When the access token request is encoded in JSON, the value of this parameter is encoded as a JSON string.</t>
          </li>
          <li>
            <t>The "rev_audience" parameter is <bcp14>OPTIONAL</bcp14> in an access token response. If present, it has the same meaning and encoding that it has in the access token request.</t>
          </li>
        </ul>
        <t>Fundamentally, this parameter has the same semantics of the "audience" parameter used in the ACE framework, with the difference that it conveys an identifier of C as a host of protected resources to access, according to the access rights granted as reverse scope to the access token's audience.</t>
        <t>The use of this parameter is further detailed in <xref target="sec-bidirectional-access-control"/>.</t>
      </section>
      <section anchor="sec-rev_scope">
        <name>rev_scope</name>
        <t>The "rev_scope" parameter can be used in an access token request sent by C to the token endpoint at the AS (see <xref section="5.8.1" sectionFormat="of" target="RFC9200"/>) as well as in an access token response sent as reply by the AS (see <xref section="5.8.2" sectionFormat="of" target="RFC9200"/>). In particular, the following applies:</t>
        <ul spacing="normal">
          <li>
            <t>The "rev_scope" parameter is <bcp14>OPTIONAL</bcp14> in an access token request. The presence of this parameter indicates that C wishes the requested access token to specify additional access rights. These access rights are intended for the access token's audience to access protected resources at C. That is, C is the access token's reverse audience.  </t>
            <t>
This parameter specifies such access rights as a reverse scope. When the access token request is encoded in CBOR, the value of this parameter is encoded as a CBOR text string or a CBOR byte string. When the access token request is encoded in JSON, the value of this parameter is encoded as a JSON string.</t>
          </li>
          <li>
            <t>The "rev_scope" parameter is <bcp14>OPTIONAL</bcp14> in an access token response. If present, this parameter specifies the access rights that the AS has actually granted as a reverse scope to the access token's audience, for accessing protected resources at C (i.e., at the access token's reverse audience).</t>
          </li>
        </ul>
        <t>Fundamentally, this parameter has the same semantics of the "scope" parameter used in the ACE framework, with the difference that it conveys the access rights requested/granted as reverse scope for/to the access token's audience to access protected resources at the access token's reverse audience.</t>
        <t>The use of this parameter is further detailed in <xref target="sec-bidirectional-access-control"/>.</t>
      </section>
    </section>
    <section anchor="sec-bidirectional-access-control">
      <name>Bidirectional Access Control</name>
      <t>The rest of this document considers two devices DEV1 and DEV2 that wish to access each other's protected resources, and it defines a method that DEV1 and DEV2 can use to enforce bidirectional access control by means of a single access token.</t>
      <t>It is assumed that the access token is requested by and issued to DEV1 acting as ACE client. The access token is intended to specify access rights concerning both the access of DEV1 to protected resources hosted at DEV2 and the access of DEV2 to protected resources hosted at DEV1. In particular:</t>
      <ul spacing="normal">
        <li>
          <t>The access token expresses access rights according to which the requesting ACE client DEV1 can access protected resources hosted at the ACE RS DEV2.  </t>
          <t>
For this first direction of access control, the target DEV2 is specified by means of the "audience" parameter and the corresponding access token claim "aud", while the access rights are specified by means of the "scope" parameter and the corresponding access token claim "scope".  </t>
          <t>
This is the original, primary direction of access control, over which the ACE client DEV1 that requests the access token wishes to obtain access rights for accessing protected resources at the ACE RS DEV2.  </t>
          <t>
This requires the ACE client DEV1 to act as CoAP client, and the ACE RS DEV2 to act as CoAP server.</t>
        </li>
        <li>
          <t>The same access token can additionally express access rights according to which the ACE RS DEV2 can access protected resources hosted at the ACE client DEV1.  </t>
          <t>
For this second direction of access control, the target DEV1 is specified by means of the "rev_audience" parameter defined in <xref target="sec-rev_audience"/> and the corresponding access token claim "rev_aud" (see <xref target="sec-bidirectional-access-control-one-as-resp"/>). Also, the access rights are specified by means of the "rev_scope" parameter defined in <xref target="sec-rev_scope"/> and the corresponding access token claim "rev_scope" (see <xref target="sec-bidirectional-access-control-one-as-resp"/>).  </t>
          <t>
This is the new, secondary direction of access control, over which the ACE client DEV1 that requests the access token also wishes that access rights are granted for the ACE RS DEV2 to access resources at DEV1.  </t>
          <t>
This requires the ACE client DEV1 to also act as CoAP server, and the ACE RS DEV2 to also act as CoAP client.</t>
        </li>
      </ul>
      <t>Like for the original case with a single access control direction, the access token is uploaded to the ACE RS DEV2, which processes the access token as per <xref section="5.10" sectionFormat="of" target="RFC9200"/> and according to the profile of ACE used by DEV1 and DEV2.</t>
      <t>The protocol workflow is detailed in the following <xref target="sec-bidirectional-access-control-one-as"/> and <xref target="sec-bidirectional-access-control-two-as"/>, in case only one authorization server or two authorization servers are involved, respectively.</t>
    </section>
    <section anchor="sec-bidirectional-access-control-one-as">
      <name>Scenario with One Authorization Server</name>
      <t>This section considers the scenario shown in <xref target="fig-bidirectional-one-as"/>, with a single authorization server AS. Both devices DEV1 and DEV2 are registered at AS, with permissions to access protected resources at the other device. In the following, DEV1 acts as ACE client by requesting an access token from AS.</t>
      <figure anchor="fig-bidirectional-one-as">
        <name>Bidirectional Access Control with One Authorization Server.</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="432" viewBox="0 0 432 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,304 L 8,336" fill="none" stroke="black"/>
              <path d="M 48,304 L 48,336" fill="none" stroke="black"/>
              <path d="M 384,32 L 384,160" fill="none" stroke="black"/>
              <path d="M 392,304 L 392,336" fill="none" stroke="black"/>
              <path d="M 408,192 L 408,256" fill="none" stroke="black"/>
              <path d="M 424,32 L 424,160" fill="none" stroke="black"/>
              <path d="M 424,304 L 424,336" fill="none" stroke="black"/>
              <path d="M 384,32 L 424,32" fill="none" stroke="black"/>
              <path d="M 384,160 L 424,160" fill="none" stroke="black"/>
              <path d="M 8,304 L 48,304" fill="none" stroke="black"/>
              <path d="M 392,304 L 424,304" fill="none" stroke="black"/>
              <path d="M 64,320 L 376,320" fill="none" stroke="black"/>
              <path d="M 8,336 L 48,336" fill="none" stroke="black"/>
              <path d="M 392,336 L 424,336" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="416,256 404,250.4 404,261.6" fill="black" transform="rotate(90,408,256)"/>
              <polygon class="arrowhead" points="416,192 404,186.4 404,197.6" fill="black" transform="rotate(270,408,192)"/>
              <polygon class="arrowhead" points="384,320 372,314.4 372,325.6" fill="black" transform="rotate(0,376,320)"/>
              <polygon class="arrowhead" points="72,320 60,314.4 60,325.6" fill="black" transform="rotate(180,64,320)"/>
              <g class="text">
                <text x="8" y="36">-</text>
                <text x="36" y="36">DEV1</text>
                <text x="68" y="36">is</text>
                <text x="124" y="36">registered</text>
                <text x="184" y="36">as:</text>
                <text x="24" y="52">-</text>
                <text x="60" y="52">Device</text>
                <text x="132" y="52">authorized</text>
                <text x="188" y="52">to</text>
                <text x="228" y="52">access</text>
                <text x="280" y="52">DEV2;</text>
                <text x="320" y="52">and</text>
                <text x="24" y="68">-</text>
                <text x="60" y="68">Device</text>
                <text x="108" y="68">that</text>
                <text x="144" y="68">can</text>
                <text x="172" y="68">be</text>
                <text x="220" y="68">accessed</text>
                <text x="268" y="68">by</text>
                <text x="300" y="68">DEV2</text>
                <text x="8" y="100">-</text>
                <text x="36" y="100">DEV2</text>
                <text x="68" y="100">is</text>
                <text x="124" y="100">registered</text>
                <text x="184" y="100">as:</text>
                <text x="404" y="100">AS</text>
                <text x="24" y="116">-</text>
                <text x="60" y="116">Device</text>
                <text x="108" y="116">that</text>
                <text x="144" y="116">can</text>
                <text x="172" y="116">be</text>
                <text x="220" y="116">accessed</text>
                <text x="268" y="116">by</text>
                <text x="304" y="116">DEV1;</text>
                <text x="344" y="116">and</text>
                <text x="24" y="132">-</text>
                <text x="60" y="132">Device</text>
                <text x="132" y="132">authorized</text>
                <text x="188" y="132">to</text>
                <text x="228" y="132">access</text>
                <text x="276" y="132">DEV1</text>
                <text x="28" y="292">DEV2</text>
                <text x="404" y="292">DEV1</text>
                <text x="28" y="324">RS</text>
                <text x="408" y="324">C</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
- DEV1 is registered as:                       +----+
  - Device authorized to access DEV2; and      |    |
  - Device that can be accessed by DEV2        |    |
                                               |    |
- DEV2 is registered as:                       | AS |
  - Device that can be accessed by DEV1; and   |    |
  - Device authorized to access DEV1           |    |
                                               |    |
                                               +----+

                                                  ^
                                                  |
                                                  |
                                                  |
                                                  v

 DEV2                                           DEV1
+----+                                          +---+
| RS | <--------------------------------------> | C |
+----+                                          +---+
]]></artwork>
        </artset>
      </figure>
      <section anchor="sec-bidirectional-access-control-one-as-req">
        <name>Access Token Request</name>
        <t>As to the access token request that DEV1 sends to AS, the following applies.</t>
        <ul spacing="normal">
          <li>
            <t>The "audience" and "scope" parameters are used as defined in <xref target="RFC9200"/>, according to the profile of ACE used by DEV1 and DEV2.  </t>
            <t>
In particular, "audience" specifies an identifier of DEV2, while "scope" specifies access rights that DEV1 wishes to obtain for accessing protected resources at DEV2.  </t>
            <t>
That is, the two parameters pertain to the primary direction of access control.</t>
          </li>
          <li>
            <t>The "req_cnf" parameter defined in <xref target="RFC9201"/> can be included. When present, it specifies the key that DEV1 wishes to bind to the requested access token.</t>
          </li>
          <li>
            <t>The "rev_audience" and "rev_scope" parameters defined in <xref target="sec-rev_audience"/> and <xref target="sec-rev_scope"/> can be included.  </t>
            <t>
In particular, "rev_audience" specifies an identifier of DEV1, while "rev_scope" specifies access rights that DEV1 wishes DEV2 to obtain for accessing protecting resources at DEV1.  </t>
            <t>
That is, the two parameters pertain to the secondary direction of access control.</t>
          </li>
        </ul>
        <t>If DEV1 wishes that the requested access token also provides DEV2 with access rights pertaining to the secondary direction of access control, then the access token request has to include at least one of the two parameters "rev_audience" and "rev_scope".</t>
      </section>
      <section anchor="sec-bidirectional-access-control-one-as-resp">
        <name>Access Token Response</name>
        <t>When receiving an access token request that includes at least one of the two parameters "rev_audience" and "rev_scope", AS processes it as defined in <xref section="5.8.2" sectionFormat="of" target="RFC9200"/>, with the following additions:</t>
        <ul spacing="normal">
          <li>
            <t>If the access token request includes the "rev_scope" parameter but not the "rev_audience" parameter, then AS assumes that the identifier of DEV1 (i.e., the access token's reverse audience) is the default one, if any is defined.</t>
          </li>
          <li>
            <t>If the access token request includes the "rev_audience" parameter but not the "rev_scope" parameter, then AS assumes that the access rights requested as reverse scope for DEV2 (i.e., the access token's audience) to access DEV1 are the default ones, if any are defined.</t>
          </li>
          <li>
            <t>AS checks whether the access rights requested as reverse scope for DEV2 can be at least partially granted, in accordance with the installed access policies pertaining to the access from DEV2 to protected resources at DEV1.  </t>
            <t>
That is, AS performs the same evaluation that it would perform if DEV2 sent an access token request acting as an ACE client, with the intent to access protected resources at DEV1 that acts as an ACE RS.  </t>
            <t>
It is <bcp14>REQUIRED</bcp14> that such evaluation succeeds, in order for AS to issue an access token and reply to DEV1 with an access token response.</t>
          </li>
        </ul>
        <t>As to the access token response that AS sends to DEV1, the following applies:</t>
        <ul spacing="normal">
          <li>
            <t>The "audience" and "scope" parameters are used as defined in <xref target="RFC9200"/> and according to the profile of ACE used by DEV1 and DEV2.  </t>
            <t>
In particular, "audience" specifies an identifier of DEV2, while "scope" specifies the access rights that AS has granted to DEV1 for accessing protected resources at DEV2.  </t>
            <t>
The "scope" parameter has to be present in the access token response if: i) it was present in the access token request and the access rights granted to DEV1 are different from the requested ones; or ii) it was not present in the access token request and the access rights granted to DEV1 are different from the default ones.  </t>
            <t>
If the "scope" parameter is not present in the access token response, then the granted access rights are those requested by the "scope" parameter in the access token request if present therein, or the default access rights otherwise.</t>
          </li>
          <li>
            <t>The "rs_cnf" parameter defined in <xref target="RFC9201"/> can be included. When present, it specifies information about the public key that DEV2 uses to authenticate.</t>
          </li>
          <li>
            <t>The "rev_audience" parameter defined in <xref target="sec-rev_audience"/> can be included. When present, it specifies an identifier of DEV1 (i.e., the access token's reverse audience).  </t>
            <t>
If the "rev_audience" parameter is present in the access token response and it was also present in the access token request, then the parameter in the access token response <bcp14>MUST</bcp14> have the same value specified by the parameter in the access token request.</t>
          </li>
          <li>
            <t>The "rev_scope" parameter defined in <xref target="sec-rev_scope"/> can be included and specifies the access rights that AS has granted to DEV2 (i.e., the access token's audience) for accessing protected resources at DEV1 (i.e., the access token's reverse audience).  </t>
            <t>
The "rev_scope" parameter <bcp14>MUST</bcp14> be present in the access token response if: i) it was present in the access token request and the access rights granted to DEV2 are different from the requested ones; or ii) it was not present in the access token request and the access rights granted to DEV2 are different from the default ones.  </t>
            <t>
If the "rev_scope" parameter is not present in the access token response, then the access rights granted to DEV2 are those requested by the "rev_scope" parameter in the access token request if present therein, or the default access rights otherwise.</t>
          </li>
        </ul>
        <t>The issued access token <bcp14>MUST</bcp14> include information about the reverse audience and reverse scope pertaining to the secondary access control direction. In particular:</t>
        <ul spacing="normal">
          <li>
            <t>The access token <bcp14>MUST</bcp14> contain a claim specifying the identifier of DEV1 (i.e., the access token's reverse audience).  </t>
            <t>
If the access token response includes the "rev_audience" parameter, then the claim specifies the same information conveyed by that parameter.  </t>
            <t>
If this is not the case, then the claim specifies the same information conveyed by the "rev_audience" parameter of the access token request if present therein, or the default identifier of DEV1 otherwise.  </t>
            <t>
When CWTs are used as access tokens, this information <bcp14>MUST</bcp14> be transported in the "rev_aud" claim registered in <xref target="iana-token-cwt-claims"/>.</t>
          </li>
          <li>
            <t>The access token <bcp14>MUST</bcp14> contain a claim specifying the access rights that AS has granted to DEV2 (i.e., the access token's audience) for accessing protected resources at DEV1.  </t>
            <t>
If the access token response includes the "rev_scope" parameter, then the claim specifies the same information conveyed by that parameter.  </t>
            <t>
If this is not the case, then the claim specifies the same information conveyed by the "rev_scope" parameter of the access token request if present therein, or the default access rights for DEV2 to access DEV1 otherwise.  </t>
            <t>
When CWTs are used as access tokens, this information <bcp14>MUST</bcp14> be transported in the "rev_scope" claim registered in <xref target="iana-token-cwt-claims"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-bidirectional-access-control-one-as-comm">
        <name>Access to Protected Resources</name>
        <t>As to the secure communication association between DEV1 and DEV2, its establishment and maintenance do not deviate from what is defined in the profile of ACE used by DEV1 and DEV2.</t>
        <t>Furthermore, communications between DEV1 and DEV2 <bcp14>MUST</bcp14> rely on such secure communication association for both directions of access control, i.e., when DEV1 accesses protected resources at DEV2 and vice versa.</t>
        <t>After having received an access token response from AS, DEV1 <bcp14>MUST</bcp14> maintain and enforce the information about the access rights granted to DEV2 and pertaining to the secondary access control direction.</t>
        <t>In particular, DEV1 <bcp14>MUST</bcp14> prevent DEV2 from accessing protected resources at DEV1, in case access requests from DEV2 are not authorized as per the reverse scope specified by the issued access token, or after having purged the issued access token (e.g., following its expiration of revocation).</t>
        <t>As to maintaining and enforcing the information about the access rights granted to DEV1 and pertaining to the primary access control direction, there is no deviation from what is defined in the ACE framework and the profile of ACE used by DEV1 and DEV2.</t>
      </section>
    </section>
    <section anchor="sec-bidirectional-access-control-two-as">
      <name>Scenario with Two Authorization Servers</name>
      <t>TBD</t>
    </section>
    <section anchor="practical-considerations">
      <name>Practical Considerations</name>
      <t>When enforcing bidirectional access control by means of a single access token, the following considerations hold.</t>
      <ul spacing="normal">
        <li>
          <t>The access token can be uploaded to the ACE RS DEV2 by the ACE client DEV1 per the original ACE workflow, or instead by the AS that has issued the access token per the Short Distribution Chain (SDC) workflow defined in <xref target="I-D.ietf-ace-workflow-and-params"/>.</t>
        </li>
        <li>
          <t>Since the access token is requested by the ACE client DEV1, only DEV1 can request for a new access token in the same token series, in order to dynamically update the access rights concerning its own access to protected resources hosted by DEV2 (on the primary access control direction) and/or the access rights concerning the access of DEV2 to protected resources hosted by DEV1 (on the secondary access control direction).</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-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 specific profile of ACE used.</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 within the "OAuth Parameters" registry group.</t>
        <ul spacing="normal">
          <li>
            <t>Name: rev_audience</t>
          </li>
          <li>
            <t>Parameter Usage Location: token request and token response</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: rev_scope</t>
          </li>
          <li>
            <t>Parameter Usage Location: token request and token response</t>
          </li>
          <li>
            <t>Change Controller: IETF</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" registry within the "Authentication and Authorization for Constrained Environments (ACE)" registry group, following the procedure specified in <xref target="RFC9200"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Name: rev_audience</t>
          </li>
          <li>
            <t>CBOR Key: TBD</t>
          </li>
          <li>
            <t>Value Type: text string</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
          <li>
            <t>Original Specification: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: rev_scope</t>
          </li>
          <li>
            <t>CBOR Key: TBD</t>
          </li>
          <li>
            <t>Value Type: text string or byte string</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
          <li>
            <t>Original Specification: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-token-json-claims">
        <name>JSON Web Token Claims Registry</name>
        <t>IANA is asked to add the following entries to the "JSON Web Token Claims" registry within the "JSON Web Token (JWT)" registry group, following the procedure specified in <xref target="RFC7519"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Claim Name: rev_aud</t>
          </li>
          <li>
            <t>Claim Description: The reverse audience of an access token</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Claim Name: rev_scope</t>
          </li>
          <li>
            <t>Claim Description: The reverse scope of an access token</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-token-cwt-claims">
        <name>CBOR Web Token (CWT) Claims Registry</name>
        <t>IANA is asked to add the following entries to the "CBOR Web Token (CWT) Claims" registry within the "CBOR Web Token (CWT) Claims" registry group, following the procedure specified in <xref target="RFC8392"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Claim Name: rev_aud</t>
          </li>
          <li>
            <t>Claim Description: The reverse audience of an access token</t>
          </li>
          <li>
            <t>JWT Claim Name: rev_aud</t>
          </li>
          <li>
            <t>Claim Key: TBD</t>
          </li>
          <li>
            <t>Claim Value Type: text string</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX, <xref target="sec-bidirectional-access-control-one-as-resp"/>]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Claim Name: rev_scope</t>
          </li>
          <li>
            <t>Claim Description: The reverse scope of an access token</t>
          </li>
          <li>
            <t>JWT Claim Name: rev_scope</t>
          </li>
          <li>
            <t>Claim Key: TBD</t>
          </li>
          <li>
            <t>Claim Value Type: text string or byte string</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX, <xref target="sec-bidirectional-access-control-one-as-resp"/>]</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </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="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="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="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="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>
      </references>
      <references anchor="sec-informative-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="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="RFC9770">
          <front>
            <title>Notification of Revoked Access Tokens in the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="M. Tiloca" initials="M." surname="Tiloca"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="S. Echeverria" initials="S." surname="Echeverria"/>
            <author fullname="G. Lewis" initials="G." surname="Lewis"/>
            <date month="June" year="2025"/>
            <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 (RSs) to access a Token Revocation List (TRL) 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 RSs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9770"/>
          <seriesInfo name="DOI" value="10.17487/RFC9770"/>
        </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="1" month="March" year="2026"/>
            <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 ACE-OAuth client and resource
   server, and it binds an authentication credential of the client to an
   ACE-OAuth access token.  EDHOC also establishes an Object Security
   for Constrained RESTful Environments (OSCORE) Security Context, which
   is used to secure communications between the client and resource
   server 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-10"/>
        </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="3" month="September" year="2025"/>
            <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 and proof of possession of the client's
   private 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-05"/>
        </reference>
        <reference anchor="I-D.ietf-ace-workflow-and-params">
          <front>
            <title>Short Distribution Chain (SDC) Workflow and New OAuth Parameters for 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="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <date day="20" month="October" year="2025"/>
            <abstract>
              <t>   This document updates the Authentication and Authorization for
   Constrained Environments Framework (ACE, RFC 9200) as follows. (1) It
   defines the Short Distribution Chain (SDC) workflow that the
   authorization server (AS) can use for uploading an access token to a
   resource server on behalf of the client. (2) For the OAuth 2.0 token
   endpoint, it defines new parameters and encodings and it extends the
   semantics of the "ace_profile" parameter. (3) For the OAuth 2.0
   authz-info endpoint, it defines a new parameter and its encoding. (4)
   It defines how the client and the AS can coordinate on the exchange
   of the client's and resource server's public authentication
   credentials, when those can be transported by value or identified by
   reference; this extends the semantics of the "rs_cnf" parameter for
   the OAuth 2.0 token endpoint, thus updating RFC 9201. (5) It extends
   the error handling at the AS, for which it defines a new error code.
   (6) It deprecates the original payload format of error responses
   conveying an error code, when CBOR is used to encode message
   payloads.  For those responses, it defines a new payload format
   aligned with RFC 9290, thus updating in this respect also the
   profiles defined in RFC 9202, RFC 9203, and RFC 9431. (7) It amends
   two of the requirements on profiles of the framework.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-workflow-and-params-06"/>
        </reference>
      </references>
    </references>
    <?line 416?>

<section anchor="sec-cddl-model" removeInRFC="true">
      <name>CDDL Model</name>
      <figure anchor="fig-cddl-model">
        <name>CDDL Model</name>
        <artwork type="CDDL" align="left"><![CDATA[
; OAuth Parameters CBOR Mappings
rev_audience = 56
rev_scope_param = 57

; CBOR Web Token (CWT) Claims
rev_aud = 43
rev_scope_claim = 44
]]></artwork>
      </figure>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank <contact fullname="Rikard Höglund"/> and <contact fullname="Dave Robin"/> for their comments and feedback.</t>
      <t>This work was supported by the Sweden's Innovation Agency VINNOVA within the EUREKA CELTIC-NEXT project CYPRESS.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
LbP/3buTw9Go7/0fxn+aGOFuAAA=

-->

</rfc>
