<?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.14 (Ruby 3.1.2) -->
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc subcompact="no"?>
<?rfc iprnotified="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-amsuess-core-resource-directory-extensions-11" category="exp" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.24.0 -->
  <front>
    <title>CoRE Resource Directory Extensions</title>
    <seriesInfo name="Internet-Draft" value="draft-amsuess-core-resource-directory-extensions-11"/>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
      <organization/>
      <address>
        <email>christian@amsuess.com</email>
      </address>
    </author>
    <date year="2024" month="November" day="07"/>
    <area>Internet</area>
    <workgroup>CoRE</workgroup>
    <keyword>CoRE, Web Linking, Resource Discovery, Resource Directory, Proxy</keyword>
    <abstract>
      <?line 29?>

<t>A collection of extensions to the Resource Directory <xref target="rfc9176"/>
that can stand on their own, and have no clear future in specification yet.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Constrained RESTful Environments Working Group mailing list (core@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://gitlab.com/chrysn/resource-directory-extensions"/>.</t>
    </note>
  </front>
  <middle>
    <?line 34?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document pools some extensions to the Resource Directory
<xref target="rfc9176"/> that might be useful but have no place in
the original document.</t>
      <t>They might become individual documents for IETF submission, simple
registrations in the RD Parameter Registry at IANA, or grow into a shape where
they can be submitted as a collection of tools.</t>
      <t>At its current state, this draft is a collection of ideas.</t>
    </section>
    <section anchor="reverseproxy">
      <name>Reverse Proxy requests</name>
      <t>When a registrant registers at a Resource Directory, it might not have a
suitable address it can use as a base address.
Typical reasons include being inside a NAT without control over port forwarding,
or only being able to open outgoing connections
(as program running inside a web browser utilizing CoAP over WebSocket <xref target="RFC8323"/> might be).</t>
      <t><xref target="rfc9176"/> suggests (in the Cellular M2M use case) that proxy access to such endpoints can be provided,
it gives no concrete mechanism to do that; this is such a mechanism.</t>
      <t>This mechanism is intended to be a last-resort option to provide connectivity.
Where possible, direct connections are preferred.
Before registering for proxying,
the registrant should attempt to obtain a publicly available port,
for example using PCP (<xref target="RFC6887"/>).</t>
      <t>The same mechanism can also be employed by registrants that want to conceal their network address from its clients.</t>
      <t>A deployed application where this is implicitly done is LwM2M [citation missing].
Notable differences are that the protocol used between the client and the proxying RD is not CoAP but application specific,
and that the RD (depending on some configuration) eagerly populates its proxy caches
by sending requests and starting observations at registration time.</t>
      <section anchor="discovery">
        <name>Discovery</name>
        <t>An RD that provides proxying functionality advertises it by announcing the additional resource type "TBD1" on its directory resource.</t>
      </section>
      <section anchor="registration">
        <name>Registration</name>
        <t>A client passes the "proxy=yes" or "proxy=ondemand" query parameter
in addition to (but typically instead of) a "base" query parameter.</t>
        <t>A server that receives a "proxy=yes" query parameter in a registration
(or receives "proxy=ondemand" and decides it needs to proxy)
MUST come up with a "Proxy URL" on which it accepts requests,
and which it uses as a Registration Base URI for lookups on the present registration.</t>
        <t>The Proxy URL SHOULD have no path component,
as acting as a reverse proxy in such a scenario
means that any relative references in all representations that are proxied must be recognized
and possibly rewritten.</t>
        <t>The RD MAY accept connections also on alternative Registration Base URIs
using different protocols;
it can advertise them using the mechanisms of <xref target="I-D.ietf-core-transport-indication"/>.</t>
        <t>The registrant is not informed of the chosen public name by the RD.
(<xref target="propagation"/> discusses means how to change that).</t>
        <t>This mechanism is applicable to all transports that can be used to register.
If proxying is active, the restrictions on when the base parameter needs to be present
(<xref target="rfc9176"/> Registration template)
are relaxed:
The base parameter may also be absent if the connection originates from an ephemeral port,
as long as the underlying protocol supports role reversal,
and link-local IPv6 addresses may be used without any concerns of expressibility.</t>
        <t>If the client uses the role reversal rule relaxation,
both it and the server keep that connection open for as long as it wants to be reachable.
When the connection terminates, the RD SHOULD treat the registration as having timed out
(even if its lifetime has not been exceeded) and MAY eventually remove the registration.
It is yet to be decided whether the RD's announced ability to do proxying
should imply that infinite lifetimes are necessarily supported for such registrations;
at least, it is RECOMMENDED.</t>
        <section anchor="registration-updates">
          <name>Registration updates</name>
          <t>The "proxy" query parameter can not be changed or repeated in a registration update;
RD servers MUST answer 4.00 Bad Request to any registration update that has a "proxy" query parameter.</t>
          <t>As always, registration updates can explicitly or implicitly update the Registration Base URI.
In proxied registrations, those changes are not propagated to lookup,
but do change the forwarding address of the proxy.</t>
          <t>For example, if a registration is established over TCP,
an update can come along in a new TCP connection.
Starting then, proxied requests are forwarded along that new connection.</t>
        </section>
      </section>
      <section anchor="proxy-behavior">
        <name>Proxy behavior</name>
        <t>The RD operates as a reverse-proxy as described in <xref target="RFC7252"/> Section 5.7.3 at the announced Proxy URL(s),
where it decides based on the requested host and port
to which registrant endpoint to forward the request.</t>
        <t>The address the incoming request are forwarded to is the base address of the registration.
If an explicit "base" paremter is given,
the RD will forward requests to that location.
Otherwise, it forwards to the registration's source address
(which is the implied base parameter).</t>
        <t>When an implicit base is used,
the requests forwarded by the RD to the EP contain no Uri-Host option.
EPs that want to run multiple parallel registrations
(especially gateway-like devices)
can either open up separate connections,
or use an additional (to-be-specified) mechanism to set the "virtual host name" for that registration in a separate argument.</t>
        <section anchor="limitations-from-using-a-reverse-proxy">
          <name>Limitations from using a reverse proxy</name>
          <t>The registrant requesting the reverse proxying needs to ensure that all services it provides are compatible with being operated behind a reverse proxy with an unknown name.
In particular, this rules out all applications that refer to local resources by a full URI
(as opposed to relative references without scheme and host).
Applications behind a reverse proxy can not use role reversal.</t>
          <t>Some of these limitations can be mitigated if the application knows its advertised address.
The mechanisms of <xref target="propagation"/> might be used to change that.</t>
        </section>
      </section>
      <section anchor="on-demand-proxying">
        <name>On-Demand proxying</name>
        <t>If an endpoint is deployed in an unknown network,
it might not know whether it is behind a NAT that would require it to configure an explicit base address,
and ask the RD to assist by proxying if necessary by registering with the "proxy=ondemand" query parameter.</t>
        <t>A server receiving that SHOULD use a different IP address to try
to access the registrant's .well-known/core file using a GET request under the Registration Base URI.
If that succeeds, it may assume that no NAT is present, and ignore the proxying request.
Otherwise, it configures proxying as if "proxy=yes" were requested.</t>
        <t>Note that this is only a heuristic
[ and not tested in deployments yet ].</t>
      </section>
      <section anchor="multiple-upstreams">
        <name>Multiple upstreams</name>
        <t>When a proxying RD is operating behind a router that has uplinks with multiple provisioning domains (see <xref target="RFC7556"/>) or a similar setup,
it MAY mint multiple addresses that are reachable on the respective provisioning domains.
When possible, it is preferred to keep the number of URIs handed out low (avoiding URI aliasing);
this can be achieved by announcing both the proxy's public addresses under the same wildcard name.</t>
        <t>If RDs are announced by the uplinks using RDAO,
the proxy may use the methods of <xref target="I-D.amsuess-core-rd-replication"/> to distribute its registrations to all the announced upstream RDs.</t>
        <t>In such setups, the router can forward the upstream RDs using the PvD option (<xref target="RFC8801"/>) to PvD-aware hosts
and only announce the local RD to PvD-unaware ones (which then forwards their registrations).
It can be expected that PvD-aware endpoints are capable of registering with multiple RDs simultaneously.</t>
      </section>
      <section anchor="examples">
        <name>Examples</name>
        <section anchor="registration-through-a-firewall">
          <name>Registration through a firewall</name>
          <artwork><![CDATA[
Req from [2001:db8:42::9876]:5683:
POST coap://rd.example.net/rd?ep=node9876&proxy=ondemand
</some-resource>;rt="example.x"

Req from other-address.rd.example.net:
GET coap://[2001:db8:42::9876]/.well-known/core

Request blocked by stateful firewall around [2001:db8:42::]

RD decides that proxying is necessary

Res: 2.04 Created
Location: /reg/abcd
]]></artwork>
          <t>Later, lookup of that registration might say:</t>
          <artwork><![CDATA[
Req: GET coap://rd.example.net/lookup/res?rt=example.x

Res: 2.05 Content
<coap://node987.rd.example.net/some-resource>;rt="example.x
]]></artwork>
          <t>A request to that resource will end up at an IP address of the RD,
which will forward it using its the IP and port on which the registrant had registered as source port,
thus reaching the registrant through the stateful firewall.</t>
        </section>
        <section anchor="browser">
          <name>Registration from a browser context</name>
          <artwork><![CDATA[
Req: POST coaps+ws://rd.example.net/rd?ep=node1234&proxy=yes
</gyroscope>;rt="core.s"

Res: 2.04 Created
Location: /reg/123
]]></artwork>
          <t>The gyroscope can now not only be looked up in the RD, but also be reached:</t>
          <artwork><![CDATA[
Req: GET coap://rd.example.net/lookup/res?rt=core.s

Res: 2.05 Content
<coap://[2001:db8:1::1]:10123/gyroscope>;rt="core.s"
]]></artwork>
          <t>In this example, the RD has chosen to do port-based rather than host-based virtual hosting
and announces its literal IP address
as that allows clients to not send the lengthy Uri-Host option with all requests.</t>
        </section>
      </section>
      <section anchor="notes-on-stability-and-maturity">
        <name>Notes on stability and maturity</name>
        <t>Using this with UDP can be quite fragile;
the author only draws on own experience that this can work across cell-phone NATs
and does not claim that this will work over generic firewalls.</t>
        <t>[ It may make sense to have the example as TCP right away. ]</t>
      </section>
      <section anchor="security-considerations">
        <name>Security considerations</name>
        <t>An RD MAY impose additional restrictions on which endpoints can register for proxying,
and thus respond 4.01 Unauthorized to request that would pass had they not requested proxying.</t>
        <t>Attackers could do third party registrations with an attacked device's address as base URI,
though the RD would probably not amplify any attacks in that case.</t>
        <t>The RD MUST NOT reveal the address at which it reaches the registrant
except for adaequately authenticated and authorized debugging purposes,
as that address could reveal sensitive location data the registrant may wish to hide by using a proxy.</t>
        <t>Usual caveats for proxies apply.</t>
      </section>
      <section anchor="alternatives-to-be-explored">
        <name>Alternatives to be explored</name>
        <t>With the mechanisms of <xref target="I-D.ietf-core-transport-indication"/>,
an RD could also operate as a forward proxy,
and indicate its availability for that purpose in a <tt>has-proxy</tt> link it creates on its own,
and which it makes discoverable through its lookup interfaces.</t>
        <t>How a registrant opts in to that behavior,
how it selects a suitable public address (using the <tt>base</tt> attribute is tempting, but conflicts with the currently prescribed proxy behavior)
and for which scenarios this is preferable is a topic being explored.</t>
        <t>As with the reverse proxy address,
the registrant is not informed of the public addresses (though again, <xref target="propagation"/> can be used to change that).
Knowing these addresses can be relevant when the endpoint advertises its services out of band
(e.g. by showing a QR code or exposing links through NFC),
but also when the mechanism of <xref target="I-D.ietf-core-transport-indication"/> Appendix D is used.</t>
      </section>
    </section>
    <section anchor="infinite-lifetime">
      <name>Infinite lifetime</name>
      <t>An RD can indicate support for infinite lifetimes
by adding the resoruce type "TBD2" to its list of resource types.</t>
      <t>A registrant that wishes to keep its registration alive indefinitely
can set the lifetime value as "lt=inf".</t>
      <t>Registrations with infinite lifetimes never time out on their own.</t>
      <t>Registrations whose base is explicit are not "soft state";
the registrant can expect the RD to persist the registrations
across network changes, reboots, softare updates and that like.</t>
      <t>Registrations with an implicit base are kept active by the RD
for as long as they are reachable;
the RD should make reasonable efforts to persist them,
but will remove them when they are unavailable temporarily,
which may happen outside of the RD's control.</t>
      <t>Typical use cases for infinite life times are:</t>
      <ul spacing="normal">
        <li>
          <t>Commissioning tools (CTs) that do not return to the deployment site,
and thus can not refresh the soft state</t>
        </li>
        <li>
          <t>Proxy registrations whose lifetime is limited by a connection that is kept alive.
Once the connection terminates even temporarily,
the RD has no means of restoring the connection, and removes the registration.
(Exceptionally, the RD can make such an attempt if the registration happened over a role-reversed TCP connection).</t>
        </li>
        <li>
          <t>Simple registrations.
For those, the RD keeps the registration active
as long as it can obtain a Valid response for the .well-known/core document on the endpoint,
checked at intervals guided by its Max-Age.</t>
        </li>
      </ul>
      <section anchor="example">
        <name>Example</name>
        <t>Had the example of <xref target="browser"/> discovered support for infinite lifetimes during lookup like this:</t>
        <artwork><![CDATA[
Req: GET coaps+ws://rd.example.net/.well-known/core?rt=core.rd*

Res: 2.05 Content
</rd>;rt="core.rd TBD1 TBD2";ct=40
]]></artwork>
        <t>it could register like that:</t>
        <artwork><![CDATA[
Req: POST coaps+ws://rd.example.net/rd?ep=node1234&proxy=yes&lt=inf
</gyroscope>;rt="core.s"

Res: 2.04 Created
Location: /reg/123
]]></artwork>
        <t>and never need to update the registration for as long as the websocket connection is open.</t>
        <t>(When it gets terminated, it could try renewing the registration,
but needs to be prepared for the RD to already have removed the original registration.)</t>
      </section>
    </section>
    <section anchor="limited-lifetimes">
      <name>Limited lifetimes</name>
      <t>Even if an RD supports infinite lifetimes,
it may not accept them from just any registrant.
Even more, an RD may have policies in place that require a certain frequency of updates
and thus place an upper limit on lt lower than the technical limit of 136 years.</t>
      <t>This document does not define any means of communicating lifetime limits,
but explores a few options:</t>
      <ul spacing="normal">
        <li>
          <t>Administrative channels.  </t>
          <t>
An RD that sees registrations with unreasonably long lifetimes can flag them for its operator
to take further measures.  </t>
          <t>
While sounding tediously manual,
this captures the observation that different components are configured in a softly incompatible way,
and need operator intervention (because if there were automatic means, they obviously failed).</t>
        </li>
        <li>
          <t>General advertisement of preferred lifetimes.  </t>
          <t>
When the limitations on the lifetimes are not from authorization
but from general setup,
an RD could advertise that property in a to-be-created link target attribute of its registration resource.
Different attributes could express preference or hard limits.  </t>
          <t>
This information is also available easily for registrants,
which may then heed the advice if supported,
and may notify their operators that they just started spending more resources than they were configured to.  </t>
          <t>
It is also available to tools that provision endpoints with their RD address (and parameters),
as they can use the same lookup interface.</t>
        </li>
        <li>
          <t>Per-registration information.  </t>
          <t>
For soft limits, the RD can offer the endpoint additional metadata if it queries them post-registration.
That query can use the endpoint lookup interface,
or the extension of <xref target="propagation"/>.
This may require additional round-trips on the part of endpoint.</t>
        </li>
        <li>
          <t>Hard limits informed by error codes.  </t>
          <t>
An RD can reject registrations with overly long lifetimes if the endpoint is not authorized to use such long lifetimes
with a 4.01 Unauthorized error.
The mechanisms of <xref target="RFC9290"/>,
with a to-be-defined error detail on the permissible lifetime,
can be used to propagate information back to then endpoint.  </t>
          <t>
This behavior is explicitly NOT RECOMMENDED,
because devices may crucially depend on the RD's services --
this rejection may even be the reason why the device is not configured with the new settings that would contain a shorter lifetime.</t>
        </li>
      </ul>
    </section>
    <section anchor="zone-identifier-introspection">
      <name>Zone identifier introspection</name>
      <t>The 'split-horizon' mechanism of <xref target="rfc9176"/>
(that registrations with link-local bases can only be read from the zone they registered on)
reduces the usability of the endpoint lookup interface for debugging purposes.</t>
      <t>To allow an administrator to read out the "show-zone-id" query parameter for endpoint and resource lookup is introduced.</t>
      <t>A Resource Directory that understands this parameter MUST NOT limit lookup results to registrations from the lookup's zone,
and MUST use <xref target="RFC6874"/> zone identifiers to annotate which zone those registrations are valid on.</t>
      <t>The RD MUST limit such requests to authenticated and authorized debugging requests,
as registrants may rely on the RD to keep their presence secret from other links.</t>
      <section anchor="example-1">
        <name>Example</name>
        <artwork><![CDATA[
Req: GET /rd-lookup/ep?show-zone-id&et=printer

Res: 2.05 Content
</reg/1>;base="coap://[2001:db8::1]";et=printer;ep="bigprinter",
</reg/2>;base="coap://[fe80::99%wlan0]";et=printer;ep="localprinter-1234",
</reg/3>;base="coap://[fe80::99%eth2]";et=printer;ep="localprinter-5678",
]]></artwork>
      </section>
    </section>
    <section anchor="proxying-multicast-requests">
      <name>Proxying multicast requests</name>
      <t>Multicast requests are hard to forward at a proxy:
Even if a media type is used
in which multiple responses can be aggregated transparently,
the proxy can not reliably know when all responses have come in.
<xref target="RFC7390"/> Section 2.9 describes the difficulties in more detail.</t>
      <t>Note that <xref target="I-D.tiloca-core-groupcomm-proxy"/> provides a mechanism
that <em>does</em> allow the forwarding of multicast requests.
It is yet to be determined what the respective pros and cons are.
Conversely, that lookup mechanism may also serve as an alternative to resource lookup on an RD.</t>
      <t>A proxy MAY expose an interface compatible with the RD lookup interface,
which SHOULD be advertised by a link to it that indicates the resource types
core.rd-lookup-res and TBD4.</t>
      <t>The proxy sends multicast requests to All CoAP Nodes (<xref target="RFC7252"/> Section 12.8)
requesting their .well-known/core files
either eagerly (ie. in regular intervals independent of queries)
or on demand
(in which case it SHOULD limit the results by applying <xref target="RFC6690"/> query filtering;
if it has received multiple query parameters it should forward the one it deems most likely to limit the results,
as .well-known/core only supports a single query parameter).</t>
      <t>In comparison to classical RD operation,
this RD behaves roughly as if it had received a simple registration
with a All CoAP Nodes address as the source address,
if such behavior were specified.
The individual registrations that result from this
neither have an explicit registration resource
nor an explicit endpoint name;
given that the endpoint lookup interface is not present on such proxies,
neither can be queried.</t>
      <t>Clients that would intend to do run a multicast discovery operation behind the proxy
can then instead query that resource lookup interface.
They SHOULD use observation on lookups,
as an on-demand implementation MAY return the first result before others have arrived,
or MAY even return an empty link set immediately.</t>
      <section anchor="example-2">
        <name>Example</name>
        <artwork><![CDATA[
Req: GET coap+ws://gateway.example.com/.well-known/core?rt=TBD4

Res: 2.05 Content
</discover>;rt="core.rd-lookup-res TBD4";ct=40

Req: GET coap+ws://gateway.example.com/discover?rt=core.s
Observe: 0

Res: 2.05 Content
Observe: 0
Content-Format: 40
(empty payload)
]]></artwork>
        <t>At the same time, the proxy sends out multicast requests on its interfaces:</t>
        <artwork><![CDATA[
Req: GET coap://ff05::fd/.well-known/core?rt=core.s

Res (from [2001:db8::1]:5683): 2.05 Content
</temp>;ct="0 112";rt="core.s"

Res (from [2001:db8::2]:5683): 2.05 Content
</light>;ct="0 112";rt="core.s"
]]></artwork>
        <t>upon receipt of which it sends out a notification to the websocket client:</t>
        <artwork><![CDATA[
Res: 2.05 Content
Observe: 1
Content-Format: 40
<coap://[2001:db8::1]/temp>;ct="0 112";rt="core.s";anchor="coap://[2001:db8::1]",
<coap://[2001:db8::2]/light>;ct="0 112";rt="core.s";anchro="coap://[2001:db8::2]"
]]></artwork>
      </section>
    </section>
    <section anchor="registrations-that-update-dns-records">
      <name>Registrations that update DNS records</name>
      <t>An RD that is provisioned with means to update a DNS zone
and that has a known mapping from registrants to host names
could use registrations to populate DNS records from registration base addresses.</t>
      <t>When combined with <xref target="reverseproxy"/>,
these records point to the RD's built-in proxy rather than to the base address.</t>
      <t>This mechanism is not described in further detail yet as it does not interact well yet
with how the <tt>base</tt> registration attribute interacts with the proxy announcements of <xref target="I-D.ietf-core-transport-indication"/>.</t>
    </section>
    <section anchor="propagation">
      <name>Propagating server generated registration information</name>
      <t>The RD can populate some data into the registration:
The RD may pick the sector and endpoint name based on the endpoint's credentials,
or (as introduced in this documents)
reverse proxy names and soft lifetime limits can be added.</t>
      <t>With the exception of sector and endpoint name,
the registrant can query those properties through the endpoint lookup interface.
However, this is cumbersome as it requires it to use both the registration and the lookup interface.</t>
      <t>The architecture of <xref target="I-D.ietf-core-coap-pubsub"/> offers a different architectural setup:
Applied to the RD,
the registration would generate both a registration metadata resource
(at which the registrant can set or query its registration's metadata)
and a registration link resource
(which contains all the links the registrant provides).
Such a setup would make it easier for registrants
to query or update registration metadata,
including querying for an implicitly assigned endpoint name or sector.</t>
      <t>Extending the RD specification to allow this style of operation
would be possible without altering its client facing interfaces.
Alternatively, using a new media type for operations on the registration resource
and/or the FETCH and PATCH methods
would enable such operations in a less intrusive way.
While it would be tempting to add an Accept option to the registration request
to solicit immediate information on the registration that was just created,
the Accept option's criticality would render this incompatible with existing servers.
The option can still be set if the new content format is advertised by the RD.</t>
      <t>Without any media type suggested so far,
this is what a registration could look like if the RD advertised that it provided content format TBD6 on the registration interface:</t>
      <artwork><![CDATA[
Req from [2001:db8::1]:5683:
POST coap://rd.example.net/rd
Accept: TBD6
Payload:
</some-resource>;rt="example.x"

Res: 2.04 Created
Location: /reg/abcd
Content-Format: TBD6
Payload:
Soft lifetime limit 3600, please update your registration in time.
Forward proxy services are offered at coaps+ws://rd.example.net and
coaps+tcp://rd.example.net.
]]></artwork>
    </section>
    <section anchor="combining-simple-registration-with-edhoc-and-ace">
      <name>Combining simple registration with EDHOC and ACE</name>
      <t>For very constrained devices,
starting a simple registration may be the only occasion at which they use the CoAP client role.
If they exclusively send piggybacked responses (<xref section="5.2.1" sectionFormat="of" target="RFC7252"/>)
and handle only idempotent requests,
they can completely avoid the need for handling retransmissions.</t>
      <t>This section presents some patterns in which an endpoint can register securely
without implementing more CoAP features.</t>
      <section anchor="generic-edhoc-in-reverse-flow">
        <name>Generic EDHOC in reverse flow</name>
        <t>When such a endpoints uses EDHOC <xref target="I-D.ietf-lake-edhoc"/>,
it can follow this flow:</t>
        <t>The endpoints requests simple registration with its RD.
This request is unencrypted.
Both for privacy reasons and to reduce configuration effort,
the endpoints elides the <tt>ep</tt> registration parameter --
it will be established during authentication anyway.
The endpoint may set the No-Response option defined in <xref target="RFC7967"/>,
given it is not relying on the response but waiting for the OSCORE context to be established.</t>
        <t>TBD: Can we establish the correctness of the parameters somewhere later?
(It could if it repeated any parameters in EAD3, at least as an empty item indicating that it's a simple registration).</t>
        <t>The RD initiates an EDHOC exchange
as part of its query for the endpoints's /.well-known/core resource.
As the endpoints has the more vulnerable identity,
EDHOC is performed in reverse message flow.
After the RD has received message 3,
it sends the GET request for the endpoints's /.well-known/core resource
to complete the registration
and responds to the original unencrypted registration.</t>
        <t>TBD: Can the endpoints obtain confirmation that it is now registered?
(It could, if the EAD3 item above is critical:
then, the presence of OSCORE traffic with that key material implies acceptance of that EAD3.)</t>
      </section>
      <section anchor="ace-roles">
        <name>ACE roles</name>
        <t>In an ACE context (<xref target="RFC9200"/>), the endpoints is the Resource Server (RS),
and the RD is the client (C).
This is aligned with the endpoints' capabilities:
The RD is in a position to talk to the ACE Authorization Server (AS)
and obtain a token to enable communication with the endpoints,
and the endpoints does not need to perform any additional communication.</t>
        <t>The token's audience may be "any endpoint eligible for RD registration" or a particular endpoint.
Its subject is the RD.
Its scope is to read the /.well-known/core resource.</t>
        <t>In some scenarios
it may make sense to operate the AS and the RD in a single system,
in which case communication between those parties is cut short.</t>
      </section>
      <section anchor="ace-edhoc-profile">
        <name>ACE EDHOC profile</name>
        <t>When the ACE EDHOC profile <xref target="I-D.ietf-ace-edhoc-oscore-profile"/> is used,
the RD needs to upload its token to the endpoints's authz-info endpoint
(which is a term from ACE, using "endpoint" for a resource path and not for a host as the RD specification does)
before executing EDHOC,
because sending a token is only supported in EDHOC messages 1 and 3
(whereas the RD sends message 2).
The posted token needs to be issued for the audience group of all eligible endpoints,
as the RD does not know the identity of the endpoint at this stage.
When the endpoint sends its credentials,
the RD will know from matching the endpoint's credentials against the <tt>rs_cnf2</tt> and <tt>aud2</tt> list it obtained with the token
(defined in <xref section="3.2" sectionFormat="of" target="I-D.ietf-ace-workflow-and-params"/>)
which endpoint is being registered.</t>
        <t>Both parties can use <tt>kid</tt> as their <tt>ID_CRED_x</tt>
to keep messages small.
The endpoint receives the full <tt>ID_CRED</tt> of the RD as part of the signed token;
the RD can look up the <tt>ID_CRED</tt> of the endpoint in its <tt>rs_cnf2</tt> data.</t>
        <t>Hypothetically,
if a token were permitted to be sent in message 2,
the RS could do that,
and save the extra round-trip for POSTing the token.</t>
        <t>Alternatively,
the RD could initiate EDHOC in forward message flow.
By the time it receives the endpoint's credentials (eg. <tt>kid</tt>) in message 2,
it can ask the AS for a token suitable for that particular endpoint,
or find a suitable token in a list it has obtained earlier
(TBD: how?).
This workflow has the downside of revealing the endpoint's <tt>ID_CRED_x</tt>
to active attackers.
This may be acceptable,
especially when the endpoint is only sending a <tt>kid</tt>,
and more so if the AS has a means of updating that ID.</t>
      </section>
      <section anchor="rd-ace-oscore">
        <name>ACE OSCORE profile</name>
        <t>In the ACE OSCORE profile <xref target="RFC9203"/>,
a token is used that contains symmetric key material.</t>
        <t>The message flow is similar to EDHOC and OSCORE:
The endpoint sends an unencrypted registration request,
but the endpoint needs to publicly reveal its identity by sending the <tt>ep</tt> registration parameter.</t>
        <t>Then, the RD can obtain a token for this particular endpoint.
Like in ACE EDHOC,
it POSTs it to the endpoint's authz-info endpoint;
in addition, it sends a random nonce and receives one in the response.</t>
        <t>Without any further steps,
it can then derive an OSCORE context from the token and the nonces,
and send an OSCORE request for the endpoint's /.well-known/core resource.</t>
        <t>This mode of operation is only recommended
if the endpoint already makes its identity public for other reasons.</t>
      </section>
      <section anchor="ace-oscore-profile-without-ace">
        <name>ACE OSCORE profile without ACE</name>
        <t>When assigning the reversed ACE roles to the participants,
there is a mode of operation that enables the ACE OSCORE profile
while preserving privacy of the endpoint:</t>
        <t>If the endpoint is provisioned with a public key of the AS
in addition to the symmetric material it shares with it in the ACE OSCORE profile,
the device can generate a token containing a secret key,
symmstrically encrypt (or MAC it) for the AS,
and asymmetrically encrypt it for the AS (eg. using Direct Key Agreement).
It then initiates the ACE OSCORE profile with the RD,
which needs to introspect the token at the AS
to obtain the secret key material within.</t>
        <t>This token's roles are different:
Its subject is an endpoint,
its audience is the RD,
and its scope is to register with a particular endpoint name.
The AS verifies during introspection
whether the endpoint is actually eligible to do this.</t>
        <t>It is unsure whether this whole process provides complexity benefits over the EDHOC based workflow,
given that it does necessitate an asymmetric operation.</t>
        <t>(Note that while it is well possible to perform ACE OSCORE profile without the asymmetrical step,
for example by just symmetrically encrypting the token created by the endpoint,
by provisioning the endpoint with a single token response
containing a token encrypted to the RS,
or with one containing an abbreviated token which the RS can introspect at the AS,
this adds little compared to <xref target="rd-ace-oscore"/>,
because the endpoint's initial message will always contain identical parts that allow identification.
The endpoint creating a random token and encrypting it symmetrically to the AS is almost viable and privacy preserving,
but decrypting the token at the AS without any information identifying the symmetric ke
would scale badly.)</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="rfc9176">
          <front>
            <title>Constrained RESTful Environments (CoRE) Resource Directory</title>
            <author fullname="C. Amsüss" initials="C." role="editor" surname="Amsüss"/>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="M. Koster" initials="M." surname="Koster"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>In many Internet of Things (IoT) applications, direct discovery of resources is not practical due to sleeping nodes or networks where multicast traffic is inefficient. These problems can be solved by employing an entity called a Resource Directory (RD), which contains information about resources held on other servers, allowing lookups to be performed for those resources. The input to an RD is composed of links, and the output is composed of links constructed from the information stored in the RD. This document specifies the web interfaces that an RD supports for web servers to discover the RD and to register, maintain, look up, and remove information on resources. Furthermore, new target attributes useful in conjunction with an RD are defined.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9176"/>
          <seriesInfo name="DOI" value="10.17487/RFC9176"/>
        </reference>
        <reference anchor="I-D.amsuess-core-rd-replication">
          <front>
            <title>Resource Directory Replication</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <date day="11" month="March" year="2019"/>
            <abstract>
              <t>   Discovery of endpoints and resources in M2M applications over large
   networks is enabled by Resource Directories, but no special
   consideration has been given to how such directories can scale beyond
   what can be managed by a single device.

   This document explores different ways in which Resource Directories
   can be scaled up from single network to enterprise and global scale.
   It does not attempt to standardize any of those methods, but only to
   demonstrate the feasibility of such extensions and to provide
   terminology and exploratory groundwork for later documents.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-core-rd-replication-02"/>
        </reference>
        <reference anchor="RFC6874">
          <front>
            <title>Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers</title>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>This document describes how the zone identifier of an IPv6 scoped address, defined as in the IPv6 Scoped Address Architecture (RFC 4007), can be represented in a literal IPv6 address and in a Uniform Resource Identifier that includes such a literal address. It updates the URI Generic Syntax specification (RFC 3986) accordingly.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6874"/>
          <seriesInfo name="DOI" value="10.17487/RFC6874"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8323">
          <front>
            <title>CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="S. Lemay" initials="S." surname="Lemay"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="B. Silverajan" initials="B." surname="Silverajan"/>
            <author fullname="B. Raymor" initials="B." role="editor" surname="Raymor"/>
            <date month="February" year="2018"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP), although inspired by HTTP, was designed to use UDP instead of TCP. The message layer of CoAP over UDP includes support for reliable delivery, simple congestion control, and flow control.</t>
              <t>Some environments benefit from the availability of CoAP carried over reliable transports such as TCP or Transport Layer Security (TLS). This document outlines the changes required to use CoAP over TCP, TLS, and WebSockets transports. It also formally updates RFC 7641 for use with these transports and RFC 7959 to enable the use of larger messages over a reliable transport.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8323"/>
          <seriesInfo name="DOI" value="10.17487/RFC8323"/>
        </reference>
        <reference anchor="RFC6887">
          <front>
            <title>Port Control Protocol (PCP)</title>
            <author fullname="D. Wing" initials="D." role="editor" surname="Wing"/>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Boucadair" initials="M." surname="Boucadair"/>
            <author fullname="R. Penno" initials="R." surname="Penno"/>
            <author fullname="P. Selkirk" initials="P." surname="Selkirk"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>The Port Control Protocol allows an IPv6 or IPv4 host to control how incoming IPv6 or IPv4 packets are translated and forwarded by a Network Address Translator (NAT) or simple firewall, and also allows a host to optimize its outgoing NAT keepalive messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6887"/>
          <seriesInfo name="DOI" value="10.17487/RFC6887"/>
        </reference>
        <reference anchor="I-D.ietf-core-transport-indication">
          <front>
            <title>CoAP Transport Indication</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Martine Sophie Lenders" initials="M. S." surname="Lenders">
              <organization>TUD Dresden University of Technology</organization>
            </author>
            <date day="21" month="October" year="2024"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP, [RFC7252]) is available
   over different transports (UDP, DTLS, TCP, TLS, WebSockets), but
   lacks a way to unify these addresses.  This document provides
   terminology and provisions based on Web Linking [RFC8288] and Service
   Bindings (SVCB, [RFC9460]) to express alternative transports
   available to a device, and to optimize exchanges using these.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-transport-indication-07"/>
        </reference>
        <reference anchor="RFC7556">
          <front>
            <title>Multiple Provisioning Domain Architecture</title>
            <author fullname="D. Anipko" initials="D." role="editor" surname="Anipko"/>
            <date month="June" year="2015"/>
            <abstract>
              <t>This document is a product of the work of the Multiple Interfaces Architecture Design team. It outlines a solution framework for some of the issues experienced by nodes that can be attached to multiple networks simultaneously. The framework defines the concept of a Provisioning Domain (PvD), which is a consistent set of network configuration information. PvD-aware nodes learn PvD-specific information from the networks they are attached to and/or other sources. PvDs are used to enable separation and configuration consistency in the presence of multiple concurrent connections.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7556"/>
          <seriesInfo name="DOI" value="10.17487/RFC7556"/>
        </reference>
        <reference anchor="RFC8801">
          <front>
            <title>Discovering Provisioning Domain Names and Data</title>
            <author fullname="P. Pfister" initials="P." surname="Pfister"/>
            <author fullname="É. Vyncke" surname="É. Vyncke"/>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="W. Shao" initials="W." surname="Shao"/>
            <date month="July" year="2020"/>
            <abstract>
              <t>Provisioning Domains (PvDs) are defined as consistent sets of network configuration information. PvDs allows hosts to manage connections to multiple networks and interfaces simultaneously, such as when a home router provides connectivity through both a broadband and cellular network provider.</t>
              <t>This document defines a mechanism for explicitly identifying PvDs through a Router Advertisement (RA) option. This RA option announces a PvD identifier, which hosts can compare to differentiate between PvDs. The option can directly carry some information about a PvD and can optionally point to PvD Additional Information that can be retrieved using HTTP over TLS.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8801"/>
          <seriesInfo name="DOI" value="10.17487/RFC8801"/>
        </reference>
        <reference anchor="RFC9290">
          <front>
            <title>Concise Problem Details for Constrained Application Protocol (CoAP) APIs</title>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="October" year="2022"/>
            <abstract>
              <t>This document defines a concise "problem detail" as a way to carry machine-readable details of errors in a Representational State Transfer (REST) response to avoid the need to define new error response formats for REST APIs for constrained environments. The format is inspired by, but intended to be more concise than, the problem details for HTTP APIs defined in RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9290"/>
          <seriesInfo name="DOI" value="10.17487/RFC9290"/>
        </reference>
        <reference anchor="RFC7390">
          <front>
            <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
            <author fullname="A. Rahman" initials="A." role="editor" surname="Rahman"/>
            <author fullname="E. Dijk" initials="E." role="editor" surname="Dijk"/>
            <date month="October" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for constrained devices and constrained networks. It is anticipated that constrained devices will often naturally operate in groups (e.g., in a building automation scenario, all lights in a given room may need to be switched on/off as a group). This specification defines how CoAP should be used in a group communication context. An approach for using CoAP on top of IP multicast is detailed based on existing CoAP functionality as well as new features introduced in this specification. Also, various use cases and corresponding protocol flows are provided to illustrate important concepts. Finally, guidance is provided for deployment in various network topologies.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7390"/>
          <seriesInfo name="DOI" value="10.17487/RFC7390"/>
        </reference>
        <reference anchor="I-D.tiloca-core-groupcomm-proxy">
          <front>
            <title>Proxy Operations for CoAP Group Communication</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date day="31" month="August" year="2023"/>
            <abstract>
              <t>   This document specifies the operations performed by a proxy, when
   using the Constrained Application Protocol (CoAP) in group
   communication scenarios.  Such a proxy processes a single request
   sent by a client over unicast, and distributes the request over IP
   multicast to a group of servers.  Then, the proxy collects the
   individual responses from those servers and relays those responses
   back to the client, in a way that allows the client to distinguish
   the responses and their origin servers through embedded addressing
   information.  This document updates RFC7252 with respect to caching
   of response messages at proxies.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-core-groupcomm-proxy-09"/>
        </reference>
        <reference anchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </reference>
        <reference anchor="I-D.ietf-core-coap-pubsub">
          <front>
            <title>A publish-subscribe architecture for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Jaime Jimenez" initials="J." surname="Jimenez">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>Dogtiger Labs</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <date day="21" month="October" year="2024"/>
            <abstract>
              <t>   This document describes a publish-subscribe architecture for the
   Constrained Application Protocol (CoAP), extending the capabilities
   of CoAP communications for supporting endpoints with long breaks in
   connectivity and/or up-time.  CoAP clients publish on and subscribe
   to a topic via a corresponding topic resource at a CoAP server acting
   as broker.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-23"/>
        </reference>
        <reference anchor="RFC7967">
          <front>
            <title>Constrained Application Protocol (CoAP) Option for No Server Response</title>
            <author fullname="A. Bhattacharyya" initials="A." surname="Bhattacharyya"/>
            <author fullname="S. Bandyopadhyay" initials="S." surname="Bandyopadhyay"/>
            <author fullname="A. Pal" initials="A." surname="Pal"/>
            <author fullname="T. Bose" initials="T." surname="Bose"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>There can be machine-to-machine (M2M) scenarios where server responses to client requests are redundant. This kind of open-loop exchange (with no response path from the server to the client) may be desired to minimize resource consumption in constrained systems while updating many resources simultaneously or performing high-frequency updates. CoAP already provides Non-confirmable (NON) messages that are not acknowledged by the recipient. However, the request/response semantics still require the server to respond with a status code indicating "the result of the attempt to understand and satisfy the request", per RFC 7252.</t>
              <t>This specification introduces a CoAP option called 'No-Response'. Using this option, the client can explicitly express to the server its disinterest in all responses against the particular request. This option also provides granular control to enable expression of disinterest to a particular response class or a combination of response classes. The server MAY decide to suppress the response by not transmitting it back to the client according to the value of the No-Response option in the request. This option may be effective for both unicast and multicast requests. This document also discusses a few examples of applications that benefit from this option.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7967"/>
          <seriesInfo name="DOI" value="10.17487/RFC7967"/>
        </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="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="21" month="October" year="2024"/>
            <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 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-06"/>
        </reference>
        <reference anchor="I-D.ietf-ace-workflow-and-params">
          <front>
            <title>Alternative Workflow and 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="21" month="October" year="2024"/>
            <abstract>
              <t>   This document updates the Authentication and Authorization for
   Constrained Environments Framework (ACE, RFC 9200) as follows.
   First, it defines a new, alternative workflow that the authorization
   server can use for uploading an access token to a resource server on
   behalf of the client.  Second, it defines new parameters and
   encodings for the OAuth 2.0 token endpoint at the authorization
   server.  Third, it defines a method for the ACE framework to enforce
   bidirectional access control by means of a single access token.
   Fourth, it amends two of the requirements on profiles of the
   framework.  Finally, it deprecates the original payload format of
   error responses that convey an error code, when CBOR is used to
   encode message payloads.  For such error responses, it defines a new
   payload format aligned with RFC 9290, thus updating in this respect
   also the profiles of ACE defined in RFC 9202, RFC 9203, and RFC 9431.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-workflow-and-params-03"/>
        </reference>
        <reference anchor="RFC9203">
          <front>
            <title>The Object Security for Constrained RESTful Environments (OSCORE) Profile of the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="M. Gunnarsson" initials="M." surname="Gunnarsson"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework. It utilizes Object Security for Constrained RESTful Environments (OSCORE) to provide communication security and proof-of-possession for a key owned by the client and bound to an OAuth 2.0 access token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9203"/>
          <seriesInfo name="DOI" value="10.17487/RFC9203"/>
        </reference>
        <reference anchor="I-D.ietf-core-coral">
          <front>
            <title>The Constrained RESTful Application Language (CoRAL)</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>ARM</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   The Constrained RESTful Application Language (CoRAL) defines a data
   model and interaction model as well as a compact serialization
   formats for the description of typed connections between resources on
   the Web ("links"), possible operations on such resources ("forms"),
   and simple resource metadata.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coral-06"/>
        </reference>
      </references>
    </references>
    <?line 688?>

<section anchor="attic">
      <name>Attic</name>
      <t>Several extensions to the RD have been proposed in earlier versions of this document
and were removed;
this section summarizes them,
lists where to look up the latest version,
and gives reasons for their removal:</t>
      <ul spacing="normal">
        <li>
          <t>Opportunistic RD (until -10)  </t>
          <t>
Describes how moderately capable devices can automatically configure and advertise themselves as an RD
while no administratively configured RD is present.  </t>
          <t>
Removed due to large complexity
and lack of real use cases.</t>
        </li>
        <li>
          <t>Lifetime age (until -10)  </t>
          <t>
References <xref section="5.2" sectionFormat="of" target="I-D.amsuess-core-rd-replication"/> to allow administrators to see how much of a registration's lifetime has expired.  </t>
          <t>
Removed in favor of more generic provenance mechanisms described in <xref section="5.1" sectionFormat="of" target="I-D.amsuess-core-rd-replication"/>,
and for lack of use cases.</t>
        </li>
        <li>
          <t>Lookup across link relations (until -10)  </t>
          <t>
Describes how a lookup may be combined ahead of time with requests for following more link relations.  </t>
          <t>
Removed in favor of utilizing <xref target="I-D.ietf-core-coral"/> FETCH requests.</t>
        </li>
      </ul>
    </section>
    <section anchor="change-log">
      <name>Change log</name>
      <t>Since -10:</t>
      <ul spacing="normal">
        <li>
          <t>Describe implications of simple registration with infinite lifetime.</t>
        </li>
        <li>
          <t>Point out applicability of No-Response option.</t>
        </li>
      </ul>
      <t>Since -09:</t>
      <ul spacing="normal">
        <li>
          <t>Added section on use with EDHOC and ACE security</t>
        </li>
        <li>
          <t>Moved Opportunistic RD, Lifetime age and Lookup across link relations into the newly created attic.</t>
        </li>
      </ul>
      <t>Since -08:</t>
      <ul spacing="normal">
        <li>
          <t>Add section on propagating server generated information.</t>
        </li>
        <li>
          <t>Reference transport-indication appendix as one reason why propagation can be relevant.</t>
        </li>
      </ul>
      <t>Since -07:</t>
      <ul spacing="normal">
        <li>
          <t>Update references.</t>
        </li>
      </ul>
      <t>Since -06:</t>
      <ul spacing="normal">
        <li>
          <t>Add sketch for DNS updates.</t>
        </li>
        <li>
          <t>Add sketch for forward proxying.</t>
        </li>
        <li>
          <t>Fix erroneous section numbers.</t>
        </li>
      </ul>
      <t>Since -05:</t>
      <ul spacing="normal">
        <li>
          <t>Add section on Limited Lifetimes.</t>
        </li>
        <li>
          <t>Point out limitations to applications that use reverse proxying.</t>
        </li>
        <li>
          <t>Minor reference and bugfix updates.</t>
        </li>
      </ul>
      <t>Since -04:</t>
      <ul spacing="normal">
        <li>
          <t>Minor adjustments:
          </t>
          <ul spacing="normal">
            <li>
              <t>Mention LwM2M and how it is already doing RD proxying.</t>
            </li>
            <li>
              <t>Tie proxying in with infinite lifetimes.</t>
            </li>
            <li>
              <t>Remove note on not being able to switch protocols: RDs that support some future protocol negotiation can do that.</t>
            </li>
            <li>
              <t>Point out that there is no Uri-Host from the RD proxy to the EP, but there could be.</t>
            </li>
            <li>
              <t>Infinite lifetimes: Take up CTs more explicitly from RD discussion.</t>
            </li>
            <li>
              <t>Start exploring interactions with groupcomm-proxy.</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>Since -03:</t>
      <ul spacing="normal">
        <li>
          <t>Added interaction with PvD (Provisioning Domains)</t>
        </li>
      </ul>
      <t>Since -02:</t>
      <ul spacing="normal">
        <li>
          <t>Added abstract</t>
        </li>
        <li>
          <t>Added example of CoRAL FETCH to Lookup across link relations section</t>
        </li>
      </ul>
      <t>Since -01:</t>
      <ul spacing="normal">
        <li>
          <t>Added section on Opportunistic RDs</t>
        </li>
      </ul>
      <t>Since -00:</t>
      <ul spacing="normal">
        <li>
          <t>Add multicast proxy usage pattern</t>
        </li>
        <li>
          <t>ondemand proxying: Probing queries must be sent from a different address</t>
        </li>
        <li>
          <t>proxying: Point to RFC7252 to describe how the actual proxying happens</t>
        </li>
        <li>
          <t>proxying: Describe this as a last-resort options and suggest attempting PCP first</t>
        </li>
      </ul>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>[ Reviews from: Jaime Jimenez ]</t>
      <t><xref target="limited-lifetimes"/> was inspired by Ben Kaduk's comments from reviewing <xref target="rfc9176"/>.
Marco Tiloca pointed out the usefulness of the No-Response option in simple registration.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA61963bb1pLmfzwFWl5zIrlJRpITX+jJSSuS3XEf31qS56yZ
c7KOQWKTRBsEONiAZMbLbzb/5sWmvqraF4CUknRPr17dMQVsbNSuy1dXjMfj
pC3a0kzT8/ryRXppbN01c5NeFI2Zt3WzTV98bk1li7qySV7Pq2xN1+ZNtmjH
2dp2xtrxvG7MuNE7x7m7c2z8neOTk8S2WZX/IyvrihZom84kxabh/7Lt6fHx
s+PTZJ6109R83iSbYpqkqW2bYk6/fLM19hv6d1vPe//IzaZd0S+P8G+7XTdm
YcMFtm7a/i/zer3J4gXph7WpWrqEfsAt3SxcU9W4hPZY1W2xKEyuv2WNyabp
q6o1TWXa5HYppEs+3cp/jNK/mln6uqg+FdVyFFPUzusb02xHe6g8St839edt
knXtqm6myTgtKtrW+SQ9W9v/+38sdiekP181hW2LrIr+YtZZUU7TufvTv+jJ
TOhtkqpu1llb3BiQtFnMn508eYz/fDW+mPRPMKdD3JQFnQKd2TQpqkW4NRmP
x2k2oyMh6iTJGdGuLGnvdGVaL9Jw1HQwabsy+zjpyxd9/NevSbvK2nROb8Fs
kdIqdFPRpPVtNUrxyyq7MWlVp/PSZE266NquMUSU1G7MnI5DNknn1k5kb+si
z0uTJA9wNE2dd7K3Lw+K6J9fk+R6VdiUGLnDyaebui4tscra/K5XSKJXSPkV
1sVy1aYzk3bWLLoynXWt3/qmzObYc4LF6qZYFlVW+mdPsBez9SvMsYmiyoub
Iu+i62xKx5C+enH9Evy5Liz2OEptsd7Q+zZmWeBQWt54UcnGL9L3WUPsQjxK
b8FXbFPa7auzt2cj2kq6bOpbuppeNEvtKtuY9HZlGoOdbvlY6I34aW1r8jSz
dFn/wFsQjl7hrE0L2uK8axrQk06zNSPaBIgMJZEWu/cWuclw7wPaGwmENcL8
aWP+N3EjrfblQSN/2OB3OrS/rkxFy7iXpQfJf9I1eK1sr0QV7nRIgOVMssR2
RZvNSvrPPCeNZXERXpdOT95ylln/x0lyvd0Qp5X0tMwKfedllxuiDsk2RJRe
hW56e3ad3hYkuXT48xr8VqYQdWKvpsXx3WZNDm2QEOnrqtzqArwTOoN6Q69H
Ny9r/EorVEIsmxzSpogISzrMtOmqqvfYW9IzMzpIS0/q2qIsfsWfz+uz9/J0
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
dzt3be0k+X+R7GHo/H8AAA==

-->

</rfc>
