<?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.39 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tiloca-ace-bidi-access-control-03" category="std" consensus="true" submissionType="IETF" updates="9200" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.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-03"/>
    <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="September" day="02"/>
    <area>Security</area>
    <workgroup>ACE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 85?>

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

<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 defined 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 that has issued them (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>This document enables that by updating <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 the 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 the 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 the 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 <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 a 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 that are granted as the 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 a 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 the 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 the 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 that are requested/granted as the 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. Specifically, 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 an 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 following applies:  </t>
          <ul spacing="normal">
            <li>
              <t>The target DEV2 is specified by means of the "audience" parameter and the corresponding access token claim "aud".</t>
            </li>
            <li>
              <t>The access rights are specified by means of the "scope" parameter and the corresponding access token claim "scope". The access rights granted to DEV1 are in accordance with the authorization policies configured for DEV2 that are evaluated by the AS to issue the access token.</t>
            </li>
          </ul>
          <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 a CoAP client and the ACE RS DEV2 to act as a 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 following applies:  </t>
          <ul spacing="normal">
            <li>
              <t>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"/>).</t>
            </li>
            <li>
              <t>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"/>). The access rights granted to DEV2 are in accordance with the authorization policies configured for DEV1 that are evaluated by the AS to issue the access token.</t>
            </li>
          </ul>
          <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 a CoAP server and the ACE RS DEV2 to also act as a CoAP client.</t>
        </li>
      </ul>
      <t>Like for the original case with a single direction of access control, 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"/>, for the case where 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"/>, comprising the devices DEV1 and DEV2 as well as a single authorization server AS.</t>
      <t>In particular, AS is configured with authorization policies for DEV1 and DEV2, which are evaluated to issue an access token that expresses access rights for accessing protected resources hosted at DEV1 and DEV2, respectively.</t>
      <t>Consistent with that, both devices DEV1 and DEV2 are registered at AS, with permissions to access protected resources at the other device.</t>
      <t>In the following, DEV1 acts as an ACE client and DEV2 acts as an ACE RS. That is, DEV1 requests from AS an access token that has DEV2 as the intended audience.</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 the 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 the reverse scope for DEV2 can be at least partially granted, in accordance with the configured authorization 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:  </t>
            <ul spacing="normal">
              <li>
                <t>It was present in the access token request and the access rights granted to DEV1 are different from the requested ones; or</t>
              </li>
              <li>
                <t>It was not present in the access token request and the access rights granted to DEV1 are different from the default ones.</t>
              </li>
            </ul>
            <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:  </t>
            <ul spacing="normal">
              <li>
                <t>It was present in the access token request and the access rights granted to DEV2 are different from the requested ones; or</t>
              </li>
              <li>
                <t>It was not present in the access token request and the access rights granted to DEV2 are different from the default ones.</t>
              </li>
            </ul>
            <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 direction of access control. 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>
Otherwise, 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>
Otherwise, 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>
    <section anchor="sec-bidirectional-access-control-two-as">
      <name>Scenario with Two Authorization Servers</name>
      <t>TBD</t>
    </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>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, DEV1 <bcp14>MUST</bcp14> maintain and enforce the information about the access rights granted to DEV2 and pertaining to the secondary direction of access control.</t>
      <t>In particular, DEV1 <bcp14>MUST</bcp14> prevent DEV2 from accessing protected resources at DEV1, in the case that 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 direction of access control, 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 anchor="practical-considerations">
      <name>Practical Considerations</name>
      <t>When enforcing bidirectional access control by means of a single access token as defined in this document, 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 at DEV2 (on the primary direction of access control) and/or the access rights concerning the access of DEV2 to protected resources hosted at DEV1 (on the secondary direction of access control).</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <t>The same security considerations from the ACE framework <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 <xref target="IANA.OAuth.Parameters"/> 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 <xref target="IANA.OAuth.Parameters.CBOR.Mappings"/> within the "Authentication and Authorization for Constrained Environments (ACE)" registry group.</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 <xref target="IANA.JSON.Web.Token.Claims"/> within the "JSON Web Token (JWT)" registry group.</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 <xref target="IANA.CWT.Claims"/> within the "CBOR Web Token (CWT) Claims" registry group.</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 (integer value between -256 and 255)</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 (integer value between -256 and 255)</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="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="IANA.OAuth.Parameters" target="https://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml#parameters">
          <front>
            <title>OAuth Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="IANA.OAuth.Parameters.CBOR.Mappings" target="https://www.iana.org/assignments/ace/ace.xhtml#oauth-parameters-cbor-mappings">
          <front>
            <title>OAuth Parameters CBOR Mappings</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="IANA.JSON.Web.Token.Claims" target="https://www.iana.org/assignments/jwt/jwt.xhtml#claims">
          <front>
            <title>JSON Web Token Claims</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="IANA.CWT.Claims" target="https://www.iana.org/assignments/cwt/cwt.xhtml#claims-registry">
          <front>
            <title>CBOR Web Token (CWT) Claims</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </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="6" month="July" 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-11"/>
        </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="6" month="July" year="2026"/>
            <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 that
   pertains to the Group OSCORE Security Context, thus allowing the
   resource server(s) to verify the client's membership upon receiving
   the access token.  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-07"/>
        </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="6" month="July" year="2026"/>
            <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 Concise Binary Object Representation
   (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-08"/>
        </reference>
      </references>
    </references>
    <?line 461?>

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

; CBOR Web Token (CWT) Claims
rev_aud = 43
rev_scope_claim = 44
]]></sourcecode>
      </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>
