<?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.6.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-t2trg-deref-id-00" category="info" submissionType="IRTF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.2 -->
  <front>
    <title abbrev="dereferenceable identifiers">The "dereferenceable identifier" pattern</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-t2trg-deref-id-00"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <date year="2022" month="November" day="05"/>
    <workgroup>Thing-to-Thing Research Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>In a protocol or an application environment, it is often important to
be able to create unambiguous identifiers for some meaning (concept or
some entity).</t>
      <t>Due to the simplicity of creating URIs, these have become popular for
this purpose.
Beyond the purpose of identifiers to be uniquely associated with a
meaning, some of these URIs are in principle <em>dereferenceable</em>, so
something can be placed that can be retrieved when encountering such a
URI.</t>
      <t>The present -00 version is a stub to draw some attention to the
opportunity that this pattern would benefit from a common description,
documenting its benefits and pitfalls, and some mitigations for the
latter.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-bormann-t2trg-deref-id/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        t2trg Research Group mailing list (<eref target="mailto:t2trg@irtf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/t2trg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/t2trg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cabo/deref-id"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>(Please see abstract.)</t>
    </section>
    <section anchor="examples">
      <name>Examples for "dereferenceable identifiers"</name>
      <t>This section is intended to present a number of examples where
dereferenceable identifiers are in use in a protocol, including
existing discussion about constraints on their usage, the benefits
claimed for this constrained usage, and remaining issues.</t>
      <section anchor="protocol-and-protocol-version-identifiers">
        <name>Protocol and Protocol Version identifiers</name>
        <t>Many protocols based on XML or JSON include a protocol or protocol
version identifier in the heading to a data item.</t>
        <t>E.g., <xref target="JSO"/> defines a language for data models that contain an
identifier to the language version in use, here
<tt>https://json-schema.org/draft/2020-12/schema</tt>.
The model that can be retrieved from this URI in turn contains
further dereferenceable identifiers that point to further details.</t>
        <t><xref section="8.1.1" sectionFormat="of" target="JSO"/> has this:</t>
        <blockquote>
          <t>If this URI identifies a retrievable resource, that resource SHOULD
   be of media type "application/schema+json".</t>
        </blockquote>
        <t>So it acknowledges that the dereferenceability is optional, but does
place further restrictions on what can be the result of a successful
dereference: another one of these data models, which in turn contain
further dereferenceable identifiers.</t>
      </section>
      <section anchor="concept-identifiers">
        <name>Concept identifiers</name>
        <t>The <em>problem details</em> format <xref target="PROBLEM"/> uses a dereferenceable
identifier for its "type" field.
The value is a URI that "identifies the specific "problem type" (e.g.,
"out of credit")" (<xref section="1" sectionFormat="of" target="PROBLEM"/>).</t>
        <t><xref section="3.1.1" sectionFormat="of" target="PROBLEM"/> has this:</t>
        <blockquote>
          <t>If the type URI is a locator (e.g., those with a "http" or "https"
   scheme), dereferencing it SHOULD provide human-readable documentation
   for the problem type (e.g., using HTML [HTML5]).</t>
        </blockquote>
        <t>but then warns:</t>
        <blockquote>
          <t>However, consumers
   SHOULD NOT automatically dereference the type URI, unless they do so
   when providing information to developers (e.g., when a debugging tool
   is in use).</t>
        </blockquote>
        <t><xref section="5" sectionFormat="of" target="PROBLEM"/> further details:</t>
        <blockquote>
          <t>A problem's type URI SHOULD resolve to HTML [HTML5] documentation
   that explains how to resolve the problem.</t>
        </blockquote>
        <t>This becomes even more interesting as <xref section="5.2" sectionFormat="of" target="PROBLEM"/> then
gives this advice:</t>
        <blockquote>
          <t>Registrations MAY use the prefix "https://iana.org/assignments/http-
   problem-types#" for the type URI.</t>
        </blockquote>
        <t>A reference to the place where registrations for these items are
managed is certainly desirable, however, the implications on the
management of fragment identifiers in the HTML documents that IANA
generates from registration information are an example for the
increased complexity dereferenceable identifiers may place on the
owners of the URI space employed.</t>
      </section>
      <section anchor="more-examples">
        <name>MORE EXAMPLES</name>
        <t>There are a lot more examples in published RFCs; add them to this document.</t>
      </section>
    </section>
    <section anchor="pitfalls">
      <name>Pitfalls</name>
      <section anchor="server-overload">
        <name>Server overload</name>
        <t>If a data item containing dereferenceable identifier(s) becomes
widely distributed, naive implementations that handle such a data item
might dereference these identifiers as part of a routine operation.
Many definitions of dereferenceable identifiers contain admonitions
that such a behavior can cause an implosion of requests on the
server(s) for the URI.</t>
      </section>
      <section anchor="longevity-of-identifiers">
        <name>Longevity of identifiers</name>
        <t>Dereferenceable URIs usually contain domain names, whose ownership can
change.
As a result, and for other reasons as well, parts of the name space of
an origin may come under new administration, which can change the
policies that apply to resources made available there.</t>
        <t>These are problems of such URIs in general (and can be mitigated by
going to a non-dereferenceable kind of URIs such as one based on the
'tag' uri scheme <xref target="TAG"/>).
However, the problems are exacerbated by their use as a dereferenceable
identifier.
The new owner/administrator might more easily accept that a certain
chunk of their URI space should not be used (which suffices for a
non-dereferenceable identifier based on this kind of URI namespace)
than that certain content needs to be offered there (potentially
presenting non-trivial loads, some mechanisms needed to update that
information, and legal liabilities that are hard to assess).</t>
      </section>
      <section anchor="redirect-ambiguities">
        <name>Redirect ambiguities</name>
        <t>Dereferencing an identifier may involve following some redirections;
whether that following is actually implied, or desired (or even
desirable) is rarely being discussed.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no concrete requests on IANA, but does point out
that IANA resources might be a good target for a certain class of
dereferenceable identifiers.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security considerations</name>
      <t>The ability to create a denial of service attack by pointing a
dereferenceable identifier into a popular data item that is widely
distributed is implied by the discussion in <xref target="examples"/>, alongside with
some recommendations for implementers that would mitigate such attacks.
A problem with such recommendations is that they need to be followed
by implementations that are using dereferenceable identifiers, which
might not care much.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Informative References</name>
      <reference anchor="TAG" target="https://www.rfc-editor.org/info/rfc4151">
        <front>
          <title>The 'tag' URI Scheme</title>
          <author fullname="T. Kindberg" initials="T." surname="Kindberg">
            <organization/>
          </author>
          <author fullname="S. Hawke" initials="S." surname="Hawke">
            <organization/>
          </author>
          <date month="October" year="2005"/>
          <abstract>
            <t>This document describes the "tag" Uniform Resource Identifier (URI) scheme.  Tag URIs (also known as "tags") are designed to be unique across space and time while being tractable to humans.  They are distinct from most other URIs in that they have no authoritative resolution mechanism.  A tag may be used purely as an entity identifier.  Furthermore, using tags has some advantages over the common practice of using "http" URIs as identifiers for non-HTTP-accessible resources.  This memo provides information for the Internet community.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4151"/>
        <seriesInfo name="DOI" value="10.17487/RFC4151"/>
      </reference>
      <reference anchor="JSO" target="https://www.ietf.org/archive/id/draft-bhutton-json-schema-01.txt">
        <front>
          <title>JSON Schema: A Media Type for Describing JSON Documents</title>
          <author fullname="Austin Wright" initials="A." surname="Wright">
         </author>
          <author fullname="Henry Andrews" initials="H." surname="Andrews">
         </author>
          <author fullname="Ben Hutton" initials="B." surname="Hutton">
            <organization>Postman</organization>
          </author>
          <author fullname="Greg Dennis" initials="G." surname="Dennis">
         </author>
          <date day="10" month="June" year="2022"/>
          <abstract>
            <t>   JSON Schema defines the media type "application/schema+json", a JSON-
   based format for describing the structure of JSON data.  JSON Schema
   asserts what a JSON document must look like, ways to extract
   information from it, and how to interact with it.  The "application/
   schema-instance+json" media type provides additional feature-rich
   integration with "application/schema+json" beyond what can be offered
   for "application/json" documents.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-bhutton-json-schema-01"/>
      </reference>
      <reference anchor="PROBLEM" target="https://www.ietf.org/archive/id/draft-ietf-httpapi-rfc7807bis-04.txt">
        <front>
          <title>Problem Details for HTTP APIs</title>
          <author fullname="Mark Nottingham" initials="M." surname="Nottingham">
         </author>
          <author fullname="Erik Wilde" initials="E." surname="Wilde">
         </author>
          <author fullname="Sanjay Dalal" initials="S." surname="Dalal">
         </author>
          <date day="5" month="September" year="2022"/>
          <abstract>
            <t>   This document defines a "problem detail" to carry machine-readable
   details of errors in HTTP response content and/or fields to avoid the
   need to define new error response formats for HTTP APIs.

   This document obsoletes RF7807.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/ietf-wg-httpapi/rfc7807bis.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-httpapi-rfc7807bis-04"/>
      </reference>
    </references>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t><contact fullname="Christian Amsüss"/> pointed out that this document would be good to have.</t>
      <!--  LocalWords:  dereference dereferenceability dereferenceable
 -->
<!--  LocalWords:  mitigations
 -->

</section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
