<?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.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tiloca-ace-bidi-access-control-01" category="std" consensus="true" submissionType="IETF" updates="9200" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.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-01"/>
    <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="2025" month="September" day="03"/>
    <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 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>Instead, 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 possibly 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 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 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"/>.</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 the successful 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.</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 the successful 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.</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, where the ACE client DEV1 that requests the access token wishes to obtain access rights for accessing protected resources at the ACE RS DEV2.</t>
        </li>
        <li>
          <t>The same access token additionally expresses 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"/>), while 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, where 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>
Clearly, 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 a successful Access Token Response.</t>
          </li>
        </ul>
        <t>As to the successful 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 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, 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 and 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.  </t>
            <t>
The "rev_scope" parameter <bcp14>MUST</bcp14> be present 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, 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 a successful 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: <xref target="sec-bidirectional-access-control"/> of [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>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: <xref target="sec-bidirectional-access-control"/> of [RFC-XXXX]</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="7" month="July" year="2025"/>
            <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-08"/>
        </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="March" 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, as well as proof-of-possession for the
   client's public key.  Also, it provides proof of the client's
   membership to the OSCORE group by binding the access token to
   information from the Group OSCORE Security Context, thus allowing the
   resource server(s) to verify the client's membership upon receiving a
   message protected with Group OSCORE from the client.  Effectively,
   the profile enables fine-grained access control paired with secure
   group communication, in accordance with the Zero Trust principles.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-group-oscore-profile-04"/>
        </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="7" month="July" 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) 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. (4) It extends the error handling at the AS,
   for which it defines a new error code. (5) 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. (6) 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-05"/>
        </reference>
      </references>
    </references>
    <?line 414?>

<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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

-->

</rfc>
