| rfc9536xml2.original.xml | rfc9536.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE rfc SYSTEM "http://xml.resource.org/authoring/rfc2629.dtd" | <!DOCTYPE rfc [ | |||
| [ | <!ENTITY nbsp " "> | |||
| <!ENTITY RFC2119 PUBLIC '' | <!ENTITY zwsp "​"> | |||
| 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'> | <!ENTITY nbhy "‑"> | |||
| <!ENTITY RFC3912 PUBLIC '' | <!ENTITY wj "⁠"> | |||
| 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3912.xml'> | ||||
| <!ENTITY RFC5730 PUBLIC '' | ||||
| 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5730.xml'> | ||||
| <!ENTITY RFC6350 PUBLIC '' | ||||
| 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6350.xml'> | ||||
| <!ENTITY RFC6973 PUBLIC '' | ||||
| 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6973.xml'> | ||||
| <!ENTITY RFC7095 PUBLIC '' | ||||
| 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7095.xml'> | ||||
| <!ENTITY RFC7481 PUBLIC '' | ||||
| 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7481.xml'> | ||||
| <!ENTITY RFC7942 PUBLIC '' | ||||
| 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7942.xml'> | ||||
| <!ENTITY RFC8126 PUBLIC '' | ||||
| 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8126.xml'> | ||||
| <!ENTITY RFC8174 PUBLIC '' | ||||
| 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml'> | ||||
| <!ENTITY RFC8977 PUBLIC '' | ||||
| 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8977.xml'> | ||||
| <!ENTITY RFC8982 PUBLIC '' | ||||
| 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8982.xml'> | ||||
| <!ENTITY RFC9082 PUBLIC '' | ||||
| 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.9082.xml'> | ||||
| <!ENTITY RFC9083 PUBLIC '' | ||||
| 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.9083.xml'> | ||||
| <!ENTITY RFC9110 PUBLIC '' | ||||
| 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.9110.xml'> | ||||
| <!ENTITY I-D.ietf-jsonpath-base PUBLIC '' | ||||
| 'https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-jsonpath-base.xml'> | ||||
| ]> | ]> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?> | ||||
| <?rfc toc="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" | |||
| <?rfc tocompact="yes"?> | std" consensus="true" docName="draft-ietf-regext-rdap-reverse-search-25" number= | |||
| <?rfc tocdepth="4"?> | "9536" ipr="trust200902" tocInclude="true" tocDepth="4" sortRefs="true" symRefs= | |||
| <?rfc compact="yes"?> | "true" updates="" obsoletes="" xml:lang="en" version="3"> | |||
| <?rfc subcompact="yes"?> | ||||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <?rfc iprnotified="no"?> | ||||
| <rfc category="std" docName="draft-ietf-regext-rdap-reverse-search-25" ipr="trus t200902" submissionType="IETF" consensus="true"> | <!-- xml2rfc v2v3 conversion 3.18.0 --> | |||
| <front> | <front> | |||
| <title abbrev="RDAP Reverse search">Registration Data Access Protocol (RDAP) | <title abbrev="RDAP Reverse Search">Registration Data Access Protocol (RDAP) | |||
| Reverse Search</title> | Reverse Search</title> | |||
| <seriesInfo name="RFC" value="9536"/> | ||||
| <author fullname="Mario Loffredo" initials="M." surname="Loffredo"> | <author fullname="Mario Loffredo" initials="M." surname="Loffredo"> | |||
| <organization>IIT-CNR/Registro.it</organization> | <organization>IIT-CNR/Registro.it</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Via Moruzzi,1</street> | <street>Via Moruzzi,1</street> | |||
| <city>Pisa</city> | <city>Pisa</city> | |||
| <country>IT</country> | <country>Italy</country> | |||
| <code>56124</code> | <code>56124</code> | |||
| </postal> | </postal> | |||
| <email>mario.loffredo@iit.cnr.it</email> | <email>mario.loffredo@iit.cnr.it</email> | |||
| <uri>http://www.iit.cnr.it</uri> | <uri>http://www.iit.cnr.it</uri> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Maurizio Martinelli" initials="M." surname="Martinelli"> | <author fullname="Maurizio Martinelli" initials="M." surname="Martinelli"> | |||
| <organization>IIT-CNR/Registro.it</organization> | <organization>IIT-CNR/Registro.it</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Via Moruzzi,1</street> | <street>Via Moruzzi,1</street> | |||
| <city>Pisa</city> | <city>Pisa</city> | |||
| <country>IT</country> | <country>Italy</country> | |||
| <code>56124</code> | <code>56124</code> | |||
| </postal> | </postal> | |||
| <email>maurizio.martinelli@iit.cnr.it</email> | <email>maurizio.martinelli@iit.cnr.it</email> | |||
| <uri>http://www.iit.cnr.it</uri> | <uri>http://www.iit.cnr.it</uri> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date year="2024" month="March" /> | ||||
| <date/> | <area>art</area> | |||
| <area>Applications and Real-Time</area> | <workgroup>regext</workgroup> | |||
| <workgroup>Registration Protocols Extensions</workgroup> | ||||
| <keyword>RDAP</keyword> | <keyword>RDAP</keyword> | |||
| <keyword>Reverse search</keyword> | <keyword>Reverse search</keyword> | |||
| <abstract> | ||||
| <abstract> | <t>The Registration Data Access Protocol (RDAP) does not include query cap | |||
| <t>The Registration Data Access Protocol (RDAP) does not include query | abilities for finding the list of domains related to a set of entities matching | |||
| capabilities for finding the list of domains related to a set of entities match | a given search pattern. Considering that an RDAP entity can be associated with | |||
| ing a given search pattern. Considering that an RDAP entity can be associated w | any defined object class and other relationships between RDAP object classes exi | |||
| ith any defined object class and other relationships between RDAP object classes | st, a reverse search can be applied to other use cases besides the classic domai | |||
| exist, a reverse search can be applied to other use cases besides the classic d | n-entity scenario. This document describes an RDAP extension that allows server | |||
| omain-entity scenario. This document describes an RDAP extension that allows se | s to provide a reverse search feature based on the relationship defined in RDAP | |||
| rvers to provide a reverse search feature based on the relationship defined in R | between an object class for search and any related object class. The reverse se | |||
| DAP between an object class for search and any related object class. The revers | arch based on the domain-entity relationship is treated as a particular case.</t | |||
| e search based on the domain-entity relationship is treated as a particular case | > | |||
| .</t> | </abstract> | |||
| </abstract> | ||||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="introduction" title="Introduction"> | <section anchor="introduction"> | |||
| <name>Introduction</name> | ||||
| <t>The protocol described in this specification aims to extend the RDAP | <t>The protocol described in this specification aims to extend the RDAP qu | |||
| query capabilities and response to enable reverse search based on the relationsh | ery capabilities and response to enable reverse search based on the relationship | |||
| ips defined in RDAP between an object class for search and a related object clas | s defined in RDAP between an object class for search and a related object class. | |||
| s. The reverse search based on the domain-entity relationship is treated as a p | The reverse search based on the domain-entity relationship is treated as a par | |||
| articular case of such a generic model.</t> | ticular case of such a generic model.</t> | |||
| <t>RDAP providers willing to implement this specification should carefully | ||||
| <t>RDAP providers willing to implement this specification should careful | consider its implications on the efficiency (see <xref target="impl-considerati | |||
| ly consider its implications on the efficiency (see <xref target="impl-considera | ons"/>), the security (see <xref target="security-considerations"/>), and the co | |||
| tions"/>), the security (see <xref target="security-considerations"/>) and the c | mpliance with privacy regulations (see <xref target="privacy-considerations"/>) | |||
| ompliance with privacy regulations (see <xref target="privacy-considerations"/>) | of their RDAP service.</t> | |||
| of their RDAP service.</t> | <section anchor="background"> | |||
| <name>Background</name> | ||||
| <section anchor="background" title="Background"> | <t>Reverse WHOIS is a service provided by many web applications that all | |||
| <t>Reverse Whois is a service provided by many web applications that all | ows users to find domain names owned by an individual or a company starting from | |||
| ows users to find domain names owned by an individual or a company starting from | the owner's details, such as name and email. Even if it has been considered us | |||
| the owner's details, such as name and email. Even if it has been considered us | eful for some legal purposes (e.g., uncovering trademark infringements and detec | |||
| eful for some legal purposes (e.g. uncovering trademark infringements, detecting | ting cybercrimes), its availability as a standardized WHOIS <xref target="RFC391 | |||
| cybercrimes), its availability as a standardized Whois <xref target="RFC3912"/> | 2"/> capability has been objected to for two main reasons, which now don't seem | |||
| capability has been objected to for two main reasons, which now don't seem to c | to conflict with an RDAP implementation.</t> | |||
| onflict with an RDAP implementation.</t> | <t>The first objection concerns the potential risks of privacy violation | |||
| . However, the domain name community is considering a new generation of Registr | ||||
| <t>The first objection concerns the potential risks of privacy violation. | ation Directory Services <xref target="ICANN-RDS"/> <xref target="ICANN-RA"/> th | |||
| However, the domain name community is considering a new generation of Registrat | at provide access to sensitive data under some permissible purposes and in accor | |||
| ion Directory Services <xref target="ICANN-RDS1"/> <xref target="ICANN-RDS2"/> < | dance with appropriate policies for requestor accreditation, authentication, and | |||
| xref target="ICANN-RA"/>, which provide access to sensitive data under some perm | authorization. RDAP's reliance on HTTP means that it can make use of common HT | |||
| issible purposes and in accordance with appropriate policies for requestor accre | TP-based approaches to authentication and authorization, making it more useful t | |||
| ditation, authentication and authorization. RDAP's reliance on HTTP means that | han WHOIS in the context of such directory services. Since RDAP consequently pe | |||
| it can make use of common HTTP-based approaches to authentication and authorizat | rmits a reverse search implementation complying with privacy protection principl | |||
| ion, making it more useful than Whois in the context of such directory services. | es, this first objection is not well-founded.</t> | |||
| Since RDAP consequently permits a reverse search implementation complying with | <t>The second objection to the implementation of a reverse search capabi | |||
| privacy protection principles, this first objection is not well-founded.</t> | lity has been connected with its impact on server processing. However, the core | |||
| RDAP specifications already define search queries, with similar processing requ | ||||
| <t>The second objection to the implementation of a reverse search capabili | irements, so the basis of this objection is not clear.</t> | |||
| ty has been connected with its impact on server processing. However, the core R | <t>Reverse searches, such as finding the list of domain names associated | |||
| DAP specifications already define search queries, with similar processing requir | with contacts or nameservers, may be useful to registrars as well. Usually, re | |||
| ements, so the basis of this objection is not clear.</t> | gistries adopt out-of-band solutions to provide results to registrars asking for | |||
| reverse searches on their domains. Possible reasons for such requests are:</t> | ||||
| <t>Reverse searches, such as finding the list of domain names associated w | <ul spacing="normal"> | |||
| ith contacts or nameservers, may be useful to registrars as well. Usually, regi | <li>the loss of synchronization between the registrar database and the | |||
| stries adopt out-of-band solutions to provide results to registrars asking for r | registry database and | |||
| everse searches on their domains. Possible reasons for such requests are:</t> | </li> | |||
| <li>the need for such data to perform bulk Extensible Provisioning Pro | ||||
| <t><list style="symbols"> | tocol (EPP) <xref target="RFC5730"/> updates (e.g., changing the contacts of a s | |||
| <t>the loss of synchronization between the registrar database and the r | et of domains, etc.).</li> | |||
| egistry database;<vspace blankLines='1' /></t> | </ul> | |||
| <t>the need for such data to perform bulk Extensible Provisioning Proto | <t>Currently, RDAP does not provide any means for a client to search for | |||
| col (EPP) <xref target="RFC5730"/> updates (e.g. changing the contacts of a set | the collection of domains associated with an entity <xref target="RFC9082"/>. | |||
| of domains, etc.).</t> | A query (lookup or search) on domains can return the array of entities related t | |||
| </list></t> | o a domain with different roles (registrant, registrar, administrative, technica | |||
| l, reseller, etc.), but the reverse operation is not allowed. Only reverse sear | ||||
| <t>Currently, RDAP does not provide any means for a client to search for t | ches to find the collection of domains related to a nameserver (ldhName or ip) c | |||
| he collection of domains associated with an entity <xref target="RFC9082"/>. A | an be requested. Since an entity can be in relationship with any RDAP object <x | |||
| query (lookup or search) on domains can return the array of entities related to | ref target="RFC9083"/>, the availability of a reverse search as largely intended | |||
| a domain with different roles (registrant, registrar, administrative, technical, | can be common to all the object classes allowed for search. | |||
| reseller, etc.), but the reverse operation is not allowed. Only reverse search | Through a further step of generalization, the meaning of reverse search | |||
| es to find the collection of domains related to a nameserver (ldhName or ip) can | in the RDAP context can be extended to include any query for retrieving | |||
| be requested. Since an entity can be in relationship with any RDAP object <xre | all the objects that relates to another query matching a given | |||
| f target="RFC9083"/>, the availability of a reverse search as largely intended c | search pattern.</t> | |||
| an be common to all the object classes allowed for search. Through a further st | ||||
| ep of generalization, the meaning of reverse search in the RDAP context can be e | ||||
| xtended to include any query for retrieving all the objects in relationship with | ||||
| another matching a given search pattern.</t> | ||||
| </section> | ||||
| <section title="Conventions Used in This Document"> | ||||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT | ||||
| ", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONA | ||||
| L" in this document are to be interpreted as described in BCP 14 <xref target="R | ||||
| FC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capit | ||||
| als, as shown here.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="reverse-search-path-segment-specification" title="Reverse | ||||
| Search Path Segment Specification"> | ||||
| <t>A generic reverse search path is described by the syntax:</t> | ||||
| <t>{searchable-resource-type}/reverse_search/{related-resource-typ | ||||
| e}?<search-condition></t> | ||||
| <t>The path segments are defined as in the following:</t> | ||||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText=""searchable-resource-type":">it MUST be o | ||||
| ne of the resource types for search defined in Section 3.2 of <xref target="RFC9 | ||||
| 082"/> (i.e. "domains", "nameservers" and "entities&quo | ||||
| t;) or a resource type extension;<vspace blankLines='1'/></t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText=""related-resource-type":">it MUST be one | ||||
| of the resource types for lookup defined in Section 3.1 of <xref target="RFC9082 | ||||
| "/> (i.e. "domain", "nameserver", "entity", " | ||||
| ip" and "autnum") or a resource type extension;<vspace blankLines | ||||
| ='1'/></t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText=""search-condition":">a sequence of " | ||||
| property=search pattern" predicates separated by the ampersand character (' | ||||
| &', US-ASCII value 0x0026).</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>While related-resource-type is defined as having one of a number of | ||||
| different values, the only reverse searches defined in this document are for a | ||||
| related-resource-type of "entity". Reverse searches for the other res | ||||
| ource types specified in <xref target="RFC9082"/> and resource type extensions m | ||||
| ay be defined by future documents.</t> | ||||
| </section> | ||||
| <section anchor="reverse-search-definition" title="Reverse Search Definiti | ||||
| on"> | ||||
| <t>Based on the content of <xref target="reverse-search-path-segment-spec | ||||
| ification"/>, defining a reverse search means to define the triple <searchabl | ||||
| e resource type, related resource type, property> and the mapping with the co | ||||
| rresponding RDAP object member. The mapping is done through the use of a JSONPa | ||||
| th expression <xref target="I-D.ietf-jsonpath-base"/>. Reverse searches are reg | ||||
| istered in the Reverse Search registry (see <xref target="rdap-reverse-search-re | ||||
| gistry" />), whereas reverse search mappings are registered in the Reverse Searc | ||||
| h Mapping registry (see <xref target="rdap-reverse-search-mapping-registry"/>). | ||||
| The reason for having two registries is that it may be possible for a single ty | ||||
| pe of reverse search to rely on different members, depending on the server's con | ||||
| figuration (see <xref target="reverse-search-properties-mapping" />).</t> | ||||
| <t>All of the reverse searches defined by this document (see <xref target | ||||
| ="reverse-search-on-entities"/>) have property names that are the same as the na | ||||
| me of the RDAP object member that is the subject of the search. For example, th | ||||
| e reverse search with the property name "fn" relies on the value of th | ||||
| e "fn" member inside the jCard of an entity object. However, it is no | ||||
| t necessary that these two names be the same. In particular, remapping of searc | ||||
| hes as part of the deprecation of an existing member (see <xref target="reverse- | ||||
| search-properties-mapping"/>) will typically lead to a member with a different n | ||||
| ame being used for the search.</t> | ||||
| <t>Servers MUST NOT provide or implement reverse searches or reverse sea | ||||
| rch mappings that are not registered with IANA.</t> | ||||
| </section> | </section> | |||
| <section> | ||||
| <section anchor="reverse-search-properties-discovery" title="Reverse Searc | <name>Conventions Used in This Document</name> | |||
| h Properties Discovery"> | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp | |||
| <t>Servers complying with this specification MUST extend the help resp | 14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp1 | |||
| onse <xref target="RFC9083"/> with the "reverse_search_properties" mem | 4>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "< | |||
| ber which contains an array of objects with the following mandatory child member | bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp1 | |||
| s:</t> | 4>" in this document are to be interpreted as described in BCP 14 <xref tar | |||
| <t> | get="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all | |||
| <list style="hanging"> | capitals, as shown here.</t> | |||
| <t hangText=""searchableResourceType":">the searchab | ||||
| le resource type of the reverse search query as defined in <xref target="reverse | ||||
| -search-path-segment-specification"/>;</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText=""relatedResourceType":">the related res | ||||
| ource type of the reverse search query as defined in <xref target="reverse-searc | ||||
| h-path-segment-specification"/>;</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText=""property":">the reverse search propert | ||||
| y used in the predicate of the reverse search query as defined in <xref target=" | ||||
| reverse-search-path-segment-specification"/>;</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>An example of the help response including the "reverse_search_ | ||||
| properties" member is shown in <xref target="reverse-search-properties-exam | ||||
| ple"/>.</t> | ||||
| </section> | </section> | |||
| </section> | ||||
| <section anchor="reverse-search-path-segment-specification"> | ||||
| <name>Reverse Search Path Segment Specification</name> | ||||
| <t>A generic reverse search path is described by the syntax:</t> | ||||
| <t>{searchable-resource-type}/reverse_search/{related-resource-type}?<s | ||||
| earch-condition></t> | ||||
| <t>The path segments are defined as follows:</t> | ||||
| <dl newline="false" spacing="normal"> | ||||
| <dt>"searchable-resource-type":</dt> | ||||
| <dd>It <bcp14>MUST</bcp14> be one of the resource types for search defin | ||||
| ed in <xref target="RFC9082" section="3.2" sectionFormat="of" /> (i.e., "domains | ||||
| ", "nameservers", and "entities") or a resource type extension. | ||||
| </dd> | ||||
| <dt>"related-resource-type":</dt> | ||||
| <dd>It <bcp14>MUST</bcp14> be one of the resource types for lookup defin | ||||
| ed in <xref target="RFC9082" section="3.1" sectionFormat="of" /> (i.e., "domain" | ||||
| , "nameserver", "entity", "ip", and "autnum") or a resource type extension. | ||||
| </dd> | ||||
| <dt>"search-condition":</dt> | ||||
| <dd>A sequence of "property=search pattern" predicates separated by the | ||||
| ampersand character ('&', US-ASCII value 0x0026).</dd> | ||||
| </dl> | ||||
| <t>While related-resource-type is defined as having one of a number of dif | ||||
| ferent values, the only reverse searches defined in this document are for a rela | ||||
| ted-resource-type of "entity". Reverse searches for the other resource types sp | ||||
| ecified in <xref target="RFC9082"/> and resource type extensions may be defined | ||||
| by future documents.</t> | ||||
| </section> | ||||
| <section anchor="reverse-search-definition"> | ||||
| <name>Reverse Search Definition</name> | ||||
| <t>Based on the content of <xref target="reverse-search-path-segment-speci | ||||
| fication"/>, defining a reverse search means to define the triple <searchable | ||||
| resource type, related resource type, property> and the mapping with the cor | ||||
| responding RDAP object member. The mapping is done through the use of a JSONPat | ||||
| h expression <xref target="RFC9535"/>. Reverse searches are registered in the " | ||||
| RDAP Reverse Search" registry (see <xref target="rdap-reverse-search-registry"/> | ||||
| ), whereas reverse search mappings are registered in the "RDAP Reverse Search Ma | ||||
| pping" registry (see <xref target="rdap-reverse-search-mapping-registry"/>). Th | ||||
| e reason for having two registries is that it may be possible for a single type | ||||
| of reverse search to rely on different members, depending on the server's config | ||||
| uration (see <xref target="reverse-search-properties-mapping"/>).</t> | ||||
| <section anchor="reverse-search-properties-mapping" title="Reverse Search | <t>All of the reverse searches defined by this document (see <xref target= | |||
| Properties Mapping"> | "reverse-search-on-entities"/>) have property names that are the same as the nam | |||
| <t>To permit clients to determine the member used by the server for a | e of the RDAP object member that is the subject of the search. For example, the | |||
| reverse search, servers MUST detail the mapping that is occurring by adding the | reverse search with the property name "fn" relies on the value of the "fn" memb | |||
| "reverse_search_properties_mapping" member to the topmost object of a | er inside the jCard of an entity object. However, it is not necessary that thes | |||
| reverse search response. This data is included in the search response, rather | e two names be the same. In particular, remapping of searches as part of the de | |||
| precation of an existing member (see <xref target="reverse-search-properties-map | ||||
| ping"/>) will typically lead to a member with a different name being used for th | ||||
| e search.</t> | ||||
| <t>Servers <bcp14>MUST NOT</bcp14> provide or implement reverse searches o | ||||
| r reverse search mappings that are not registered with IANA.</t> | ||||
| </section> | ||||
| <section anchor="reverse-search-properties-discovery"> | ||||
| <name>Reverse Search Properties Discovery</name> | ||||
| <t>Servers complying with this specification <bcp14>MUST</bcp14> extend th | ||||
| e help response <xref target="RFC9083"/> with the "reverse_search_properties" me | ||||
| mber that contains an array of objects with the following mandatory child member | ||||
| s:</t> | ||||
| <dl newline="false" spacing="normal"> | ||||
| <dt>"searchableResourceType":</dt> | ||||
| <dd>the searchable resource type of the reverse search query, as defined | ||||
| in <xref target="reverse-search-path-segment-specification"/></dd> | ||||
| <dt>"relatedResourceType":</dt> | ||||
| <dd>the related resource type of the reverse search query, as defined in | ||||
| <xref target="reverse-search-path-segment-specification"/></dd> | ||||
| <dt>"property":</dt> | ||||
| <dd>the reverse search property used in the predicate of the reverse sea | ||||
| rch query, as defined in <xref target="reverse-search-path-segment-specification | ||||
| "/></dd> | ||||
| </dl> | ||||
| <t>An example of the help response including the "reverse_search_propertie | ||||
| s" member is shown in <xref target="reverse-search-properties-example"/></t> | ||||
| </section> | ||||
| <section anchor="reverse-search-properties-mapping"> | ||||
| <name>Reverse Search Properties Mapping</name> | ||||
| <t>To permit clients to determine the member used by the server for a reve | ||||
| rse search, servers <bcp14>MUST</bcp14> detail the mapping that is occurring by | ||||
| adding the "reverse_search_properties_mapping" member to the topmost object of a | ||||
| reverse search response. | ||||
| This data structure is included in the search response, rather | ||||
| than in the help response, because it may differ depending on the query that is sent to the server.</t> | than in the help response, because it may differ depending on the query that is sent to the server.</t> | |||
| <t>Documents that deprecate or restructure RDAP responses such that a regi | ||||
| <t>Documents that deprecate or restructure RDAP responses such that a | stered reverse search is no longer able to be used <bcp14>MUST</bcp14> either no | |||
| registered reverse search is no longer able to be used MUST either note that the | te that the relevant reverse search is no longer available (in the case of depre | |||
| relevant reverse search is no longer available (in the case of deprecation) or | cation) or describe how to continue supporting the relevant search by adding ano | |||
| describe how to continue supporting the relevant search by adding another mappin | ther mapping for the reverse search property (in the case of restructuring).</t> | |||
| g for the reverse search property (in the case of restructuring).</t> | <t>The "reverse_search_properties_mapping" member contains an array of obj | |||
| ects with the following mandatory child members:</t> | ||||
| <t>The "reverse_search_properties_mapping" member contains an array of | <dl newline="false" spacing="normal"> | |||
| objects with the following mandatory child members:</t> | <dt>"property":</dt> | |||
| <t> | <dd>the reverse search property used in the predicate of the current que | |||
| <list style="hanging"> | ry, as defined in <xref target="reverse-search-path-segment-specification"/></dd | |||
| <t hangText=""property":">the reverse search propert | > | |||
| y used in the predicate of the current query as defined in <xref target="reverse | <dt>"propertyPath":</dt> | |||
| -search-path-segment-specification"/>;</t> | <dd>the JSONPath expression of the object member (or members) correspond | |||
| </list> | ing to the reverse search property</dd> | |||
| </t> | </dl> | |||
| <t> | <t>The searchable and the related resource types are derived from the quer | |||
| <list style="hanging"> | y, so there is no need to include them in addition to the property in this membe | |||
| <t hangText=""propertyPath":">the JSONPath expressio | r.</t> | |||
| n of the object member (or members) corresponding to the reverse search property | <t>This member <bcp14>MUST</bcp14> be included for all properties used in | |||
| .</t> | the search, regardless of whether that property has multiple registered mappings | |||
| </list> | as at the time of the search, because new mappings may be registered at any tim | |||
| </t> | e.</t> | |||
| <t>When applied to an object, the JSONPath expression <bcp14>MUST</bcp14> | ||||
| <t>The searchable and the related resource types are derived from the | produce a list of values, each of which is a JSON number or string.</t> | |||
| query, so there is no need to include them in addition to the property in this m | <t>An example of a reverse search response including the "reverse_search_p | |||
| ember.</t> | roperties_mapping" member is shown in <xref target="reverse-search-properties-ma | |||
| pping-example"/>.</t> | ||||
| <t>This member MUST be included for all properties used in the search, | </section> | |||
| regardless of whether that property has multiple registered mappings as at the | <section anchor="reverse-search-response-specification"> | |||
| time of the search, because new mappings may be registered at any time.</t> | <name>Reverse Search Response Specification</name> | |||
| <t>Reverse search responses use the formats defined in <xref target="RFC90 | ||||
| <t>When applied to an object, the JSONPath expression MUST produce a l | 83" section="8" sectionFormat="of" />, which correspond to the searchable resour | |||
| ist of values, each of which is a JSON number or string.</t> | ce types defined in <xref target="reverse-search-path-segment-specification"/>.< | |||
| /t> | ||||
| <t>An example of a reverse search response including the "reverse | </section> | |||
| _search_properties_mapping" member is shown in <xref target="reverse-search | <section anchor="reverse-search-query-processing"> | |||
| -properties-mapping-example"/>.</t> | <name>Reverse Search Query Processing</name> | |||
| </section> | <t>To process a reverse search, the server returns the objects from its da | |||
| ta store that are of type searchable-resource-type and that match each of the pr | ||||
| <section anchor="reverse-search-response-specification" title="Reverse Sea | edicates from the search conditions. To determine whether an object matches a p | |||
| rch Response Specification"> | redicate, the server:</t> | |||
| <t>Reverse search responses use the formats defined in section 8 of <xre | <ul spacing="normal"> | |||
| f target="RFC9083"/>, which correspond to the searchable resource types defined | <li>applies the mapping it uses for the reverse search property to the o | |||
| in <xref target="reverse-search-path-segment-specification"/>.</t> | bject in order to generate a list of values, each of which <bcp14>MUST</bcp14> b | |||
| </section> | e a JSON number or string and</li> | |||
| <li>checks whether the search pattern matches one or more of those value | ||||
| <section anchor="reverse-search-query-processing" title="Reverse Search Qu | s.</li> | |||
| ery Processing"> | </ul> | |||
| <t>To process a reverse search, the server returns the objects from its | <t>A search pattern matches a value where it equals the string representat | |||
| data store that are of type searchable-resource-type and that match each of the | ion of the value or where it is a match for the value in accordance with the par | |||
| predicates from the search conditions. To determine whether an object matches a | tial string matching behavior defined in <xref target="RFC9082" section="4.1" se | |||
| predicate, the server:</t> | ctionFormat="of" />.</t> | |||
| <list style="symbols"> | <t>Objects are only included in the search results if they satisfy all inc | |||
| <t>applies the mapping it uses for the reverse search property t | luded predicates. This includes predicates that are for the same property; in s | |||
| o the object in order to generate a list of values, each of which MUST be a JSON | uch a case, it is necessary for the related object to match against each of thos | |||
| number or string; and</t> | e predicates.</t> | |||
| <t>checks whether the search pattern matches one or more of thos | <t>Servers <bcp14>MUST</bcp14> return an HTTP 501 (Not Implemented) <xref | |||
| e values.</t> | target="RFC9110"/> response to inform clients of unsupported reverse searches.</ | |||
| </list> | t> | |||
| <t>Based on their policy, servers <bcp14>MAY</bcp14> restrict how predicat | ||||
| <t>A search pattern matches a value where it equals the string represent | es are used to make a valid search condition by returning a 400 (Bad Request) re | |||
| ation of the value, or where it is a match for the value in accordance with the | sponse when a problematic request is received.</t> | |||
| partial string matching behaviour defined in section 4.1 of <xref target="RFC908 | <t>A given reverse search or reverse search mapping <bcp14>MAY</bcp14> def | |||
| 2" />.</t> | ine additional or alternative search behavior past that set out in this section. | |||
| </t> | ||||
| <t>Objects are only included in the search results if they satisfy all i | </section> | |||
| ncluded predicates. This includes predicates that are for the same property: it | <section anchor="reverse-search-on-entities"> | |||
| is necessary in such a case for the related object to match against each of tho | <name>Reverse Searches Based on Entity Details</name> | |||
| se predicates.</t> | <t>Since an entity can be associated with any other object class in RDAP, | |||
| the most common kind of reverse search is one based on an entity's details. Suc | ||||
| <t>Servers MUST return an HTTP 501 (Not Implemented) <xref target="RFC91 | h reverse searches arise from the query model by setting the related resource ty | |||
| 10"/> response to inform clients of unsupported reverse searches.</t> | pe to "entity".</t> | |||
| <t>By selecting a specific searchable resource type, the resulting reverse | ||||
| <t>Based on their policy, servers MAY restrict how predicates are used t | search aims at retrieving all the objects (e.g., all the domains) that are rela | |||
| o make a valid search condition, by returning a 400 (Bad Request) response when | ted to any entity object matching the search conditions.</t> | |||
| a problematic request is received.</t> | <t>This section defines the reverse search properties servers <bcp14>SHOUL | |||
| D</bcp14> support for the domain, nameserver, entity-searchable resource types, | ||||
| <t>A given reverse search or reverse search mapping MAY define additiona | and entity-related resource type:</t> | |||
| l or alternative search behaviour past that set out in this section.</t> | <dl newline="false" spacing="compact"> | |||
| </section> | <dt>Reverse search property:</dt> | |||
| <dd>role</dd> | ||||
| <section anchor="reverse-search-on-entities" title="Reverse Searches Based | <dt>RDAP member path:</dt> | |||
| on Entity Details"> | <dd>$.entities[*].roles</dd> | |||
| <dt>Reference:</dt> | ||||
| <t>Since in RDAP, an entity can be associated with any other object clas | <dd><xref target="RFC9083" section="10.2.4" sectionFormat="of" /></dd> | |||
| s, the most common kind of reverse search is one based on an entity's details. | </dl> | |||
| Such reverse searches arise from the query model by setting the related resource | <dl newline="false" spacing="compact"> | |||
| type to "entity".</t> | <dt>Reverse search property:</dt> | |||
| <t>By selecting a specific searchable resource type, the resulting rever | <dd>handle</dd> | |||
| se search aims at retrieving all the objects (e.g. all the domains) that are rel | <dt>RDAP member path:</dt> | |||
| ated to any entity object matching the search conditions.</t> | <dd>$.entities[*].handle</dd> | |||
| <t>This section defines the reverse search properties servers SHOULD sup | <dt>Reference:</dt> | |||
| port for the domain, nameserver, and entity searchable resource types and the en | <dd><xref target="RFC9083" section="5.1" sectionFormat="of" /></dd> | |||
| tity related resource type:</t> | </dl> | |||
| <dl newline="false" spacing="compact"> | ||||
| <t> | <dt>Reverse search property:</dt> | |||
| <list style="hanging"> | <dd>fn</dd> | |||
| <t hangText="Reverse search property:">role</t> | <dt>RDAP member path:</dt> | |||
| <t hangText="RDAP member path:">$.entities[*].roles</t> | <dd>$.entities[*].vcardArray[1][?(@[0]=='fn')][3]</dd> | |||
| <t hangText="Reference:">Section 10.2.4 of <xref target="RFC9083 | <dt>Reference:</dt> | |||
| "/></t> | <dd><xref target="RFC6350" section="6.2.1" sectionFormat="of" /></dd> | |||
| </list> | </dl> | |||
| </t> | <dl newline="false" spacing="compact"> | |||
| <t> | <dt>Reverse search property:</dt> | |||
| <list style="hanging"> | <dd>email</dd> | |||
| <t hangText="Reverse search property:">handle</t> | <dt>RDAP member path:</dt> | |||
| <t hangText="RDAP member path:">$.entities[*].handle</t> | <dd>$.entities[*].vcardArray[1][?(@[0]=='email')][3]</dd> | |||
| <t hangText="Reference:">Section 5.1 of <xref target="RFC9083"/> | <dt>Reference:</dt> | |||
| </t> | <dd><xref target="RFC6350" section="6.4.2" sectionFormat="of" /></dd> | |||
| </list> | </dl> | |||
| </t> | <t>The presence of a predicate on the reverse search property "role" means | |||
| <t> | that the RDAP response property "roles" <bcp14>MUST</bcp14> contain at least th | |||
| <list style="hanging"> | e specified role.</t> | |||
| <t hangText="Reverse search property:">fn</t> | <t>The last two properties are related to jCard elements <xref target="RFC | |||
| <t hangText="RDAP member path:">$.entities[*].vcardArray[1][?(@[ | 7095"/>, but the field references are to vCard <xref target="RFC6350"/>, since j | |||
| 0]=='fn')][3]</t> | Card is the JSON format for vCard.</t> | |||
| <t hangText="Reference:">Section 6.2.1 of <xref target="RFC6350" | <t>Examples of reverse search paths based on the domain-entity relationshi | |||
| /></t> | p are presented in <xref target="reverse-search-request"/>.</t> | |||
| </list> | <figure anchor="reverse-search-request"> | |||
| </t> | <name>Examples of Reverse Search Queries</name> | |||
| <t> | <artwork><![CDATA[ | |||
| <list style="hanging"> | ||||
| <t hangText="Reverse search property:">email</t> | ||||
| <t hangText="RDAP member path:">$.entities[*].vcardArray[1][?(@[ | ||||
| 0]=='email')][3]</t> | ||||
| <t hangText="Reference:">Section 6.4.2 of <xref target="RFC6350" | ||||
| /></t> | ||||
| </list> | ||||
| </t> | ||||
| <t>The presence of a predicate on the reverse search property "role | ||||
| " means that the RDAP response property "roles" MUST contain at l | ||||
| east the specified role.</t> | ||||
| <t>The last two properties are related to jCard elements <xref target="R | ||||
| FC7095"/>, but the field references are to vCard <xref target="RFC6350"/>, since | ||||
| jCard is the JSON format for vCard.</t> | ||||
| <t>Examples of reverse search paths based on the domain-entity relations | ||||
| hip are presented in <xref target="reverse-search-request"/>.</t> | ||||
| <figure anchor="reverse-search-request" title="Examples of reverse sea | ||||
| rch queries"> | ||||
| <artwork xml:space="preserve"><![CDATA[ | ||||
| /domains/reverse_search/entity?handle=CID-40*&role=technical | /domains/reverse_search/entity?handle=CID-40*&role=technical | |||
| /domains/reverse_search/entity?fn=Bobby*&role=registrant | /domains/reverse_search/entity?fn=Bobby*&role=registrant | |||
| /domains/reverse_search/entity?handle=RegistrarX&role=registrar | /domains/reverse_search/entity?handle=RegistrarX&role=registrar | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>An example of the help response including the supported reverse search | ||||
| <t>An example of the help response including the reverse search proper | properties is shown in <xref target="reverse-search-properties-example"/>.</t> | |||
| ties supported is shown below.</t> | <figure anchor="reverse-search-properties-example"> | |||
| <figure anchor="reverse-search-properties-example" title="An example o | <name>An Example of the Help Response including the "reverse_search_prop | |||
| f help response including the "reverse_search_properties_mapping" memb | erties" Member</name> | |||
| er"> | <sourcecode type="json"><![CDATA[ | |||
| <artwork xml:space="preserve"><![CDATA[ | ||||
| { | { | |||
| "rdapConformance": [ | "rdapConformance": [ | |||
| "rdap_level_0", | "rdap_level_0", | |||
| "reverse_search" | "reverse_search" | |||
| ], | ], | |||
| ... | ... | |||
| "reverse_search_properties": [ | "reverse_search_properties": [ | |||
| { | { | |||
| "searchableResourceType": "domains", | "searchableResourceType": "domains", | |||
| "relatedResourceType": "entity", | "relatedResourceType": "entity", | |||
| skipping to change at line 311 ¶ | skipping to change at line 233 ¶ | |||
| "property": "email" | "property": "email" | |||
| }, | }, | |||
| { | { | |||
| "searchableResourceType": "domains", | "searchableResourceType": "domains", | |||
| "relatedResourceType": "entity", | "relatedResourceType": "entity", | |||
| "property": "role" | "property": "role" | |||
| } | } | |||
| ], | ], | |||
| ... | ... | |||
| } | } | |||
| ]]></sourcecode> | ||||
| ]]></artwork> | </figure> | |||
| </figure> | <t>An example of a response including the mapping that is occurring for th | |||
| e first reverse search in <xref target="reverse-search-request"/> is shown below | ||||
| <t>An example of a response including the mapping that is occurring fo | .</t> | |||
| r the first reverse search in <xref target="reverse-search-request"/> is shown b | <figure anchor="reverse-search-properties-mapping-example"> | |||
| elow.</t> | <name>An Example of an RDAP Response including the "reverse_search_prope | |||
| <figure anchor="reverse-search-properties-mapping-example" title="An e | rties_mapping" Member</name> | |||
| xample of an RDAP response including the "reverse_search_properties" m | <sourcecode type="json"><![CDATA[ | |||
| ember"> | ||||
| <artwork xml:space="preserve"><![CDATA[ | ||||
| { | { | |||
| "rdapConformance": [ | "rdapConformance": [ | |||
| "rdap_level_0", | "rdap_level_0", | |||
| "reverse_search" | "reverse_search" | |||
| ], | ], | |||
| ... | ... | |||
| "reverse_search_properties_mapping": [ | "reverse_search_properties_mapping": [ | |||
| { | { | |||
| "property": "handle", | "property": "handle", | |||
| "propertyPath": "$.entities[*].handle" | "propertyPath": "$.entities[*].handle" | |||
| }, | }, | |||
| { | { | |||
| "property": "role", | "property": "role", | |||
| "propertyPath": "$.entities[*].roles" | "propertyPath": "$.entities[*].roles" | |||
| } | } | |||
| ], | ], | |||
| ... | ... | |||
| } | } | |||
| ]]></sourcecode> | ||||
| ]]></artwork> | </figure> | |||
| </figure> | ||||
| </section> | ||||
| <section anchor="rdap-conformance" title="RDAP Conformance"> | ||||
| <t>Servers complying with this specification MUST include the value &q | ||||
| uot;reverse_search" in the rdapConformance property of the help response <x | ||||
| ref target="RFC9083"/> and any other response including the "reverse_search | ||||
| _properties_mapping" member. The information needed to register this value | ||||
| in the "RDAP Extensions" registry is described in <xref target="rdap- | ||||
| extensions-registry"/>.</t> | ||||
| </section> | ||||
| <section anchor="impl-considerations" title="Implementation Considerations | ||||
| "> | ||||
| <t>To limit the impact of processing the search predicates, servers ar | ||||
| e RECOMMENDED to make use of techniques to speed up the data retrieval in their | ||||
| underlying data store such as indexes or similar. In addition, risks with respe | ||||
| ct to performance degradation or result set generation can be mitigated by adopt | ||||
| ing practices used for standard searches, e.g. restricting the search functional | ||||
| ity, limiting the rate of search requests according to the user's authorization, | ||||
| truncating and paging the results <xref target="RFC8977"/>, and returning parti | ||||
| al responses <xref target="RFC8982"/>.</t> | ||||
| </section> | ||||
| <section anchor="impl-status" title="Implementation Status"> | ||||
| <t>NOTE: Please remove this section and the reference to RFC 7942 prior to | ||||
| publication as an RFC.</t> | ||||
| <t>This section records the status of known implementations of the protoco | ||||
| l defined by this specification at the time of posting of this Internet-Draft, a | ||||
| nd is based on a proposal described in <xref target="RFC7942"/>. The descriptio | ||||
| n of implementations in this section is intended to assist the IETF in its decis | ||||
| ion processes in progressing drafts to RFCs. Please note that the listing of an | ||||
| y individual implementation here does not imply endorsement by the IETF. Furthe | ||||
| rmore, no effort has been spent to verify the information presented here that wa | ||||
| s supplied by IETF contributors. This is not intended as, and must not be const | ||||
| rued to be, a catalog of available implementations or their features. Readers a | ||||
| re advised to note that other implementations may exist.</t> | ||||
| <t>According to RFC 7942, "this will allow reviewers and working groups to | ||||
| assign due consideration to documents that have the benefit of running code, wh | ||||
| ich may serve as evidence of valuable experimentation and feedback that have mad | ||||
| e the implemented protocols more mature. It is up to the individual working gro | ||||
| ups to use this information as they see fit".</t> | ||||
| <section anchor="iit-cnr-registro-it-rdap-server" title="IIT-CNR/Registro. | ||||
| it RDAP Server"> | ||||
| <t><list style="none"> | ||||
| <t>Responsible Organization: Institute of Informatics and Telematics of | ||||
| National Research Council (IIT-CNR)/Registro.it<vspace blankLines='1' /></t> | ||||
| <t>Location: https://rdap.pubtest.nic.it/<vspace blankLines='1' /></t> | ||||
| <t>Description: This implementation includes support for RDAP queries u | ||||
| sing data from the public test environment of .it ccTLD. Reverse search is allo | ||||
| wed to authenticated users. Registrar users are allowed to perform reverse sear | ||||
| ches on their own domains and contacts. This is achieved by adding an implicit | ||||
| predicate to the search condition.<vspace blankLines='1' /></t> | ||||
| <t>Level of Maturity: This is an "alpha" test implementation. | ||||
| <vspace blankLines='1' /></t> | ||||
| <t>Coverage: This implementation includes all of the features described | ||||
| in this specification.<vspace blankLines='1' /></t> | ||||
| <t>Contact Information: Mario Loffredo, mario.loffredo@iit.cnr.it</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="registro-it-rdap-client" title="IIT-CNR/Registro.it RDAP Client | ||||
| "> | ||||
| <t><list style="none"> | ||||
| <t>Responsible Organization: Institute of Informatics and Telematics of Nati | ||||
| onal | ||||
| Research Council (IIT-CNR)/Registro.it<vspace blankLines='1' /></t> | ||||
| <t>Location: https://web-rdap.pubtest.nic.it/<vspace blankLines='1' /></t> | ||||
| <t>Description: This is a Javascript web-based RDAP client. RDAP responses | ||||
| are | ||||
| retrieved from RDAP servers by the browser, parsed into an HTML representa | ||||
| tion, and displayed in a format improving the user experience. Reverse search i | ||||
| s allowed to authenticated users.<vspace blankLines='1' /></t> | ||||
| <t>Level of Maturity: This is an "alpha" test implementation.<vspa | ||||
| ce blankLines='1' /></t> | ||||
| <t>Coverage: This implementation includes all of the features described in t | ||||
| his | ||||
| specification.<vspace blankLines='1' /></t> | ||||
| <t>Contact Information: Francesco Donini, francesco.donini@iit.cnr.it</t> | ||||
| </list></t> | ||||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="rdap-conformance"> | ||||
| <section title="IANA Considerations"> | <name>RDAP Conformance</name> | |||
| <t>Servers complying with this specification <bcp14>MUST</bcp14> include t | ||||
| <section anchor="rdap-extensions-registry" title="RDAP Extensions Registry | he value "reverse_search" in the rdapConformance property of the help response < | |||
| "> | xref target="RFC9083"/> and any other response including the "reverse_search_pro | |||
| perties_mapping" member. The information needed to register this value in the " | ||||
| <t>IANA is requested to register the following value in the "RDAP | RDAP Extensions" registry is described in <xref target="rdap-extensions-registry | |||
| Extensions" registry:</t> | "/>.</t> | |||
| </section> | ||||
| <t><list style="none"> | <section anchor="impl-considerations"> | |||
| <t>Extension identifier: reverse_search<vspace blankLines='1' /></ | <name>Implementation Considerations</name> | |||
| t> | <t>To limit the impact of processing the search predicates, servers are <b | |||
| <t>Registry operator: Any<vspace blankLines='1' /></t> | cp14>RECOMMENDED</bcp14> to make use of techniques to speed up the data retrieva | |||
| <t>Published specification: This document.<vspace blankLines='1' / | l in their underlying data store, such as indexes or similar. In addition, risk | |||
| ></t> | s with respect to performance degradation or result set generation can be mitiga | |||
| <t>Contact: IETF <iesg@ietf.org><vspace blankLines='1' /></t | ted by adopting practices used for standard searches, e.g., restricting the sear | |||
| > | ch functionality, limiting the rate of search requests according to the user's a | |||
| <t>Intended usage: This extension identifier is used for both URI | uthorization, truncating and paging the results <xref target="RFC8977"/>, and re | |||
| path segments and response extensions related to the reverse search in RDAP.</t> | turning partial responses <xref target="RFC8982"/>.</t> | |||
| </list></t> | </section> | |||
| </section> | <section> | |||
| <name>IANA Considerations</name> | ||||
| <section anchor="rdap-reverse-search-registries" title="RDAP Reverse Sear | <section anchor="rdap-extensions-registry"> | |||
| ch Registries"> | <name>RDAP Extensions Registry</name> | |||
| <t>IANA has registered the following value in the "RDAP Extensions" regi | ||||
| <section anchor="rdap-reverse-search-registries-creation" title="Creat | stry:</t> | |||
| ion of the RDAP Reverse Search Registries"> | <dl spacing="normal"> | |||
| <dt>Extension Identifier:</dt> <dd>reverse_search</dd> | ||||
| <t>IANA is requested to create the "RDAP Reverse Search" and | <dt>Registry Operator:</dt> <dd>Any</dd> | |||
| "RDAP Reverse Search Mapping" registries within the group "Regis | <dt>Specification:</dt> <dd>RFC 9536</dd> | |||
| tration Data Access Protocol (RDAP)".</t> | <dt>Contact:</dt> <dd>IETF <iesg@ietf.org></dd> | |||
| <dt>Intended Usage:</dt> <dd>This extension identifier is used for bot | ||||
| <t>These registries follow the Specification Required process as defin | h URI path segments and response extensions related to the reverse search in RDA | |||
| ed in Section 4.5 of <xref target="RFC8126"/>.</t> | P.</dd> | |||
| </dl> | ||||
| <t>The designated expert should prevent collisions and confirm that su | ||||
| itable documentation, as described in Section 4.6 of <xref target="RFC8126"/>, i | ||||
| s available to ensure interoperability.</t> | ||||
| <t>Creators of either new RDAP reverse searches or new mappings for re | ||||
| gistered reverse searches SHOULD NOT replicate functionality already available b | ||||
| y way of other documents referenced in these registries. Creators MAY register | ||||
| additional reverse search mappings for existing properties, but they SHOULD NOT | ||||
| map a registered reverse search property to a response field with a meaning othe | ||||
| r than that of the response fields referenced by the mappings already registered | ||||
| for that property. In other words, all the mappings for a reverse search prope | ||||
| rty MUST point to response fields with the same meaning.</t> | ||||
| </section> | </section> | |||
| <section anchor="rdap-reverse-search-registries"> | ||||
| <section title="Submit Request to IANA"> | <name>RDAP Reverse Search Registries</name> | |||
| <section anchor="rdap-reverse-search-registries-creation"> | ||||
| <name>Creation of the RDAP Reverse Search Registries</name> | ||||
| <t>IANA has created the "RDAP Reverse Search" and "RDAP Reverse Search | ||||
| Mapping" registries within the "Registration Data Access Protocol (RDAP)" categ | ||||
| ory in the protocol registries. | ||||
| </t> | ||||
| <t>These registries follow the Specification Required registration pol | ||||
| icy, as defined in <xref target="RFC8126" section="4.6" sectionFormat="of" />.</ | ||||
| t> | ||||
| <t>The designated expert should prevent collisions and confirm that su | ||||
| itable documentation, as described in <xref target="RFC8126" section="4.5" secti | ||||
| onFormat="of" />, is available to ensure interoperability.</t> | ||||
| <t>Creators of either new RDAP reverse searches or new mappings for re | ||||
| gistered reverse searches <bcp14>SHOULD NOT</bcp14> replicate functionality alre | ||||
| ady available by way of other documents referenced in these registries. Creator | ||||
| s <bcp14>MAY</bcp14> register additional reverse search mappings for existing pr | ||||
| operties, but they <bcp14>SHOULD NOT</bcp14> map a registered reverse search pro | ||||
| perty to a response field with a meaning other than that of the response fields | ||||
| referenced by the mappings already registered for that property. In other words | ||||
| , all the mappings for a reverse search property <bcp14>MUST</bcp14> point to re | ||||
| sponse fields with the same meaning.</t> | ||||
| </section> | ||||
| <section> | ||||
| <name>Submit Requests to IANA</name> | ||||
| <t>Registration requests can be sent to <iana@iana.org>.</t> | <t>Registration requests can be sent to <iana@iana.org>.</t> | |||
| </section> | </section> | |||
| <section anchor="rdap-reverse-search-registry"> | ||||
| <section anchor="rdap-reverse-search-registry" title="RDAP Reverse Searc | <name>RDAP Reverse Search Registry</name> | |||
| h Registry"> | <section anchor="rdap-reverse-search-registry-template"> | |||
| <name>Template</name> | ||||
| <section anchor="rdap-reverse-search-registry-template" title="Templat | <dl newline="false" spacing="normal"> | |||
| e"> | <dt>Property:</dt> | |||
| <dd>The name of the reverse search property.</dd> | ||||
| <t> | <dt>Description:</dt> | |||
| <list style="hanging"> | <dd>A brief human-readable text describing the reverse search prop | |||
| <t hangText=""Searchable Resource Type":">The search | erty.</dd> | |||
| able resource type of the reverse search query (<xref target="reverse-search-pat | <dt>Searchable Resource Type:</dt> | |||
| h-segment-specification"/>) including the reverse search property. Multiple rev | <dd>The searchable resource type of the reverse search query (<xre | |||
| erse search properties differing only by this field can be grouped together by l | f target="reverse-search-path-segment-specification"/>) including the reverse se | |||
| isting all the searchable resource types separated by comma (see <xref target="r | arch property. Multiple reverse search properties differing only by this field | |||
| dap-reverse-search-registry-initial-content"/>).</t> | can be grouped together by listing all the searchable resource types separated b | |||
| </list> | y comma (see <xref target="rdap-reverse-search-registry-initial-content"/>).</dd | |||
| </t> | > | |||
| <t> | <dt>Related Resource Type:</dt> | |||
| <list style="hanging"> | <dd>The related resource type of the reverse search query (<xref t | |||
| <t hangText=""Related Resource Type":">The related r | arget="reverse-search-path-segment-specification"/>) including the reverse searc | |||
| esource type of the reverse search query (<xref target="reverse-search-path-segm | h property.</dd> | |||
| ent-specification"/>) including the reverse search property.</t> | <dt>Registrant:</dt> | |||
| </list> | <dd>The name of the person registering the reverse search property | |||
| </t> | .</dd> | |||
| <t> | <dt>Contact Information:</dt> | |||
| <list style="hanging"> | <dd>An email address, postal address, or some other information to | |||
| <t hangText=""Property":">The name of the reverse se | be used to contact the registrant.</dd> | |||
| arch property.</t> | <dt>Reference:</dt> | |||
| </list> | <dd>Document (e.g., the RFC number) and section reference where th | |||
| </t> | e reverse search property is specified.</dd> | |||
| <t> | </dl> | |||
| <list style="hanging"> | <t>The combination of Searchable Resource Type, Related Resource Typ | |||
| <t hangText=""Description":">A brief human-readable | e, and Property <bcp14>MUST</bcp14> be unique across the registry entries.</t> | |||
| text describing the reverse search property.</t> | </section> | |||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText=""Registrant Name":">The name of the per | ||||
| son registering the reverse search property.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText=""Registrant Contact Information":">An e | ||||
| mail address, postal address, or some other information to be used to contact th | ||||
| e registrant.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText=""Reference":">Document (e.g. the RFC nu | ||||
| mber) and section reference where the reverse search property is specified.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>The combination of "Searchable Resource Type", "Rela | ||||
| ted Resource Type" and "Property" MUST be unique across the regis | ||||
| try entries.</t> | ||||
| </section> | ||||
| <section anchor="rdap-reverse-search-registry-initial-content" title="Init | <section anchor="rdap-reverse-search-registry-initial-content"> | |||
| ial Content"> | <name>Initial Content</name> | |||
| <t>IANA is requested to register the following entries in the "RDAP | <t>IANA has registered the following entries in the "RDAP Reverse Se | |||
| Reverse Search" registry.</t> | arch" registry. For all entries, the common values are shown in <xref target="t | |||
| able1"/>, whereas the specific values are shown in <xref target="table2"/>.</t> | ||||
| <table anchor="table1"> | ||||
| <name>Common Values for All Entries in the RDAP Reverse Search Reg | ||||
| istry</name> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left">Registry Property</th> | ||||
| <th align="left">Value</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left">Searchable Resource Type</td> | ||||
| <td align="left">domains, nameservers, entities</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">Related Resource Type</td> | ||||
| <td align="left">entity</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">Registrant</td> | ||||
| <td align="left">IETF</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">Contact Information</td> | ||||
| <td align="left">iesg@ietf.org</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">Reference</td> | ||||
| <td align="left">RFC 9536</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <table anchor="table2"> | ||||
| <name>Specific Values for Entries in the RDAP Reverse Search Regis | ||||
| try</name> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left">Property</th> | ||||
| <th align="left">Description</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left">fn</td> | ||||
| <td align="left">The server supports the domain/nameserver/ent | ||||
| ity search based on the full name (a.k.a. formatted name) of an associated entit | ||||
| y</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">handle</td> | ||||
| <td align="left">The server supports the domain/nameserver/ent | ||||
| ity search based on the handle of an associated entity</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">email</td> | ||||
| <td align="left">The server supports the domain/nameserver/ent | ||||
| ity search based on the email address of an associated entity</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">role</td> | ||||
| <td align="left">The server supports the domain/nameserver/ent | ||||
| ity search based on the role of an associated entity</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="rdap-reverse-search-mapping-registry"> | ||||
| <name>RDAP Reverse Search Mapping Registry</name> | ||||
| <section anchor="rdap-reverse-search-mapping-registry-template"> | ||||
| <name>Template</name> | ||||
| <dl newline="false" spacing="normal"> | ||||
| <dt>Property:</dt> | ||||
| <dd>The same as defined in the "RDAP Reverse Search" registry.</dd | ||||
| > | ||||
| <dt>Property Path:</dt> | ||||
| <dd>The JSONPath of the RDAP property this reverse search property | ||||
| maps to.</dd> | ||||
| <dt>Searchable Resource Type:</dt> | ||||
| <dd>The same as defined in the "RDAP Reverse Search" registry.</dd | ||||
| > | ||||
| <dt>Related Resource Type:</dt> | ||||
| <dd>The same as defined in the "RDAP Reverse Search" registry.</dd | ||||
| > | ||||
| <t>For all entries, the common values are shown in <xref target="table | <!--[rfced] *AD - The authors removed the definition of "Description" | |||
| 1"/> whereas the specific values are shown in <xref target="table2"/>.</t> | in Section 11.2.4.1 in version -26 that was submitted after the | |||
| <texttable anchor="table1" title="Common values for all entries in the | document was added to the RFC-ED queue. Please review and let us | |||
| "RDAP Reverse Search" registry"> | know if the removal of this definition is acceptable. Note that | |||
| <ttcol align="left">Registry Property</ttcol> | with this change, the template now matches the "RDAP Reverse | |||
| <ttcol align="left">Value</ttcol> | Search Mapping" registry | |||
| <c>Searchable Resource Type</c><c>domains, nameservers, entities</ | <https://www.iana.org/assignments/rdap-reverse-search-mapping/>. | |||
| c> | ||||
| <c>Related Resource Type</c><c>entity</c> | ||||
| <c>Registrant Name</c><c>IETF</c> | ||||
| <c>Registrant Contact Information</c><c>iesg@ietf.org</c> | ||||
| <c>Reference</c><c>This document, <xref target="reverse-search-on- | ||||
| entities"/></c> | ||||
| </texttable> | ||||
| <texttable anchor="table2" title="Specific values for all entries in t | Original: | |||
| he "RDAP Reverse Search" registry"> | "Property Path": The JSONPath of the RDAP property this reverse search | |||
| <ttcol align="left">Property</ttcol> | property maps to. | |||
| <ttcol align="left">Description</ttcol> | ||||
| <c>fn</c><c>The server supports the domain/nameserver/entity searc | ||||
| h based on the full name (a.k.a. formatted name) of an associated entity</c> | ||||
| <c>handle</c><c>The server supports the domain/nameserver/entity s | ||||
| earch based on the handle of an associated entity</c> | ||||
| <c>email</c><c>The server supports the domain/nameserver/entity se | ||||
| arch based on the email address of an associated entity</c> | ||||
| <c>role</c><c>The server supports the domain/nameserver/entity sea | ||||
| rch based on the role of an associated entity</c> | ||||
| </texttable> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="rdap-reverse-search-mapping-registry" title="RDAP Rev | "Description": A brief human-readable text describing this reverse | |||
| erse Search Mapping Registry"> | search property mapping. | |||
| <section anchor="rdap-reverse-search-mapping-registry-template" ti | "Registrant Name": The name of the person registering this reverse | |||
| tle="Template"> | search property mapping. | |||
| <t> | Current: | |||
| <list style="hanging"> | Property Path: The JSONPath of the RDAP property this reverse search | |||
| <t hangText=""Searchable Resource Type":">Th | property maps to. | |||
| e same as defined in the "Reverse Search Registry".</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText=""Related Resource Type":">The s | ||||
| ame as defined in the "Reverse Search Registry".</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText=""Property":">The same as define | ||||
| d in the "Reverse Search Registry".</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText=""Property Path":">The JSONPath | ||||
| of the RDAP property this reverse search property maps to.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText=""Description":">A brief human-r | ||||
| eadable text describing this reverse search property mapping.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText=""Registrant Name":">The name of | ||||
| the person registering this reverse search property mapping.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText=""Registrant Contact Information" | ||||
| ;:">The same as defined in the "Reverse Search Registry".</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText=""Reference":">Document (e.g. th | ||||
| e RFC number) and section reference where this reverse search property mapping i | ||||
| s specified.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>The combination of "Searchable Resource Type", &q | Registrant: The name of the person registering this reverse | |||
| uot;Related Resource Type", "Property" and "Property Path&qu | search property mapping. | |||
| ot; MUST be unique across the registry entries.</t> | --> | |||
| </section> | ||||
| <section anchor="rdap-reverse-search-mapping-registry-initial-cont | <!-- Note: removed by authors in version -26 | |||
| ent" title="Initial Content"> | <dt>Description:</dt> | |||
| <t>IANA is requested to register the following entries in the | <dd>A brief human-readable text describing this reverse search pro | |||
| "RDAP Reverse Search Mapping" registry.</t> | perty mapping.</dd> | |||
| <t>For all entries, the common values are the same as defined | --> | |||
| in the "RDAP Reverse Search" registry (see <xref target="table1"/>) wh | <dt>Registrant:</dt> | |||
| ereas the specific values are shown in <xref target="table3"/>.</t> | <dd>The name of the person registering this reverse search propert | |||
| <texttable anchor="table3" title="Specific values for all entr | y mapping.</dd> | |||
| ies in the "RDAP Reverse Search Mapping" registry"> | <dt>Contact Information:</dt> | |||
| <ttcol align="left">Property</ttcol> | <dd>The same as defined in the "RDAP Reverse Search" registry.</dd | |||
| <ttcol align="left">Property Path</ttcol> | > | |||
| <c>fn</c><c>$.entities[*].vcardArray[1][?(@[0]=='fn')][3]< | <dt>Reference:</dt> | |||
| /c> | <dd>Document (e.g., the RFC number) and section reference where th | |||
| <c>handle</c><c>$.entities[*].handle</c> | is reverse search property mapping is specified.</dd> | |||
| <c>email</c><c>$.entities[*].vcardArray[1][?(@[0]=='email' | </dl> | |||
| )][3]</c> | <t>The combination of Searchable Resource Type, Related Resource Typ | |||
| <c>role</c><c>$.entities[*].roles</c> | e, Property, and Property Path <bcp14>MUST</bcp14> be unique across the registry | |||
| </texttable> | entries.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="rdap-reverse-search-mapping-registry-initial-content" | ||||
| </section> | > | |||
| <name>Initial Content</name> | ||||
| <t>IANA has registered the following entries in the "RDAP Reverse Se | ||||
| arch Mapping" registry. For all entries, the common values are the same as defin | ||||
| ed in the "RDAP Reverse Search" registry (see <xref target="table1"/>), whereas | ||||
| the specific values are shown below (see <xref target="table3"/>).</t> | ||||
| <table anchor="table3"> | ||||
| <name>Specific Values for Entries in the RDAP Reverse Search Mappi | ||||
| ng Registry</name> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left">Property</th> | ||||
| <th align="left">Property Path</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left">fn</td> | ||||
| <td align="left">$.entities[*].vcardArray[1][?(@[0]=='fn')][3] | ||||
| </td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">handle</td> | ||||
| <td align="left">$.entities[*].handle</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">email</td> | ||||
| <td align="left">$.entities[*].vcardArray[1][?(@[0]=='email')] | ||||
| [3]</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">role</td> | ||||
| <td align="left">$.entities[*].roles</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| </section> | ||||
| </section> | </section> | |||
| </section> | ||||
| <section anchor="privacy-considerations" title="Privacy Considerations"> | <section anchor="privacy-considerations"> | |||
| <t>The search functionality defined in this document may affect the pr | <name>Privacy Considerations</name> | |||
| ivacy of entities in the registry (and elsewhere) in various ways: see <xref tar | <t>The search functionality defined in this document may affect the privac | |||
| get="RFC6973"/> for a general treatment of privacy in protocol specifications. | y of entities in the registry (and elsewhere) in various ways; see <xref target= | |||
| Registry operators should be aware of the tradeoffs that result from implementat | "RFC6973"/> for a general treatment of privacy in protocol specifications. Regi | |||
| ion of this functionality.</t> | stry operators should be aware of the trade-offs that result from implementing t | |||
| his functionality.</t> | ||||
| <t>Many jurisdictions have laws or regulations that restrict the use o | <t>Many jurisdictions have laws or regulations that restrict the use of "p | |||
| f "Personal Data", per the definition in <xref target="RFC6973" />. G | ersonal data", per the definition in <xref target="RFC6973"/>. Given that, regi | |||
| iven that, registry operators should ascertain whether the regulatory environmen | stry operators should ascertain whether the regulatory environment in which they | |||
| t in which they operate permits implementation of the functionality defined in t | operate permits implementation of the functionality defined in this document.</ | |||
| his document.</t> | t> | |||
| <t>In those cases where this functionality makes use of sensitive informat | ||||
| <t>In those cases where this functionality makes use of sensitive info | ion, the information <bcp14>MUST</bcp14> only be accessible to authorized users | |||
| rmation, it MUST only be accessible to authorized users supported by lawful basi | under a lawful basis.</t> | |||
| s.</t> | <t>Since reverse search requests and responses could contain Personally Id | |||
| entifiable Information (PII), reverse search functionality <bcp14>MUST</bcp14> b | ||||
| <t>Since reverse search requests and responses could contain Personall | e available over HTTPS only.</t> | |||
| y Identifiable Information (PII), reverse search functionality MUST be available | <t>Providing reverse search in RDAP carries the following threats as descr | |||
| over HTTPS only.</t> | ibed in <xref target="RFC6973"/>:</t> | |||
| <ul spacing="normal"> | ||||
| <t>Providing reverse search in RDAP carries the following threats as d | <li>Correlation</li> | |||
| escribed in <xref target="RFC6973"/>:</t> | <li>Disclosure</li> | |||
| <t><list style="symbols"> | <li>Misuse of data</li> | |||
| <t>Correlation</t> | </ul> | |||
| <t>Disclosure</t> | ||||
| <t>Misuse of information</t> | ||||
| </list></t> | ||||
| <t>Therefore, RDAP providers need to mitigate the risk of those threats by implementing appropriate measures supported by security services (see <xref tar get="security-considerations"/>).</t> | <t>Therefore, RDAP providers need to mitigate the risk of those threats by implementing appropriate measures supported by security services (see <xref tar get="security-considerations"/>).</t> | |||
| </section> | </section> | |||
| <section anchor="security-considerations"> | ||||
| <section anchor="security-considerations" title="Security Considerations"> | <name>Security Considerations</name> | |||
| <t>Security services required to provide controlled access to the operatio | <t>Security services that are required to provide controlled access to the | |||
| ns specified in this document are described in <xref target="RFC7481"/>. A non- | operations specified in this document are described in <xref target="RFC7481"/> | |||
| exhaustive list of access control paradigms an RDAP provider can implement is pr | . A non-exhaustive list of access control paradigms an RDAP provider can implem | |||
| esented in <xref target="access-control-paradigms"/>.</t> | ent is presented in <xref target="access-control-paradigms"/>.</t> | |||
| <t>As an additional measure to enforce security by preventing reverse sear | <t>As an additional measure to enforce security by preventing reverse sear | |||
| ches to be accessed from unauthorized users, the RDAP providers may consider to | ches to be accessed from unauthorized users, the RDAP providers may consider phy | |||
| physically separate the reverse search endpoints from the other ones by configur | sically separating the reverse search endpoints from the other ones by configuri | |||
| ing a proxy routing the reverse searches to a dedicated backend server and lever | ng a proxy routing the reverse searches to a dedicated backend server and levera | |||
| aging further security services offered by other protocol layers such as digital | ging further security services offered by other protocol layers, such as digital | |||
| certificates and IP whitelisting.</t> | certificates and IP allow-listing.</t> | |||
| <t>Finally, the specification of the relationship within the reverse searc h path allows the RDAP servers to implement different authorization policies on a per-relationship basis.</t> | <t>Finally, the specification of the relationship within the reverse searc h path allows the RDAP servers to implement different authorization policies on a per-relationship basis.</t> | |||
| </section> | ||||
| <section title="Acknowledgements"> | ||||
| <t>The authors would like to acknowledge the following individuals for the | ||||
| ir contributions to this document: Francesco Donini, Scott Hollenbeck, Francisco | ||||
| Arias, Gustavo Lozano, Eduardo Alvarez, Ulrich Wisser, James Gould and Pawel Ko | ||||
| walik.</t> | ||||
| <t>Tom Harrison and Jasdip Singh provided relevant feedback and constant s | ||||
| upport to the implementation of this proposal. Their contributions have been gr | ||||
| eatly appreciated.</t> | ||||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title="Normative References"> | <references> | |||
| &I-D.ietf-jsonpath-base; | <name>References</name> | |||
| &RFC2119; | <references> | |||
| &RFC6350; | <name>Normative References</name> | |||
| &RFC7095; | ||||
| &RFC7481; | ||||
| &RFC7942; | ||||
| &RFC8126; | ||||
| &RFC8174; | ||||
| &RFC9082; | ||||
| &RFC9083; | ||||
| &RFC9110; | ||||
| </references> | ||||
| <references title="Informative References"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
| &RFC3912; | 119.xml"/> | |||
| &RFC5730; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
| &RFC6973; | 350.xml"/> | |||
| &RFC8977; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
| &RFC8982; | 095.xml"/> | |||
| <reference anchor='ICANN-RA' target='https://newgtlds.icann.org/sites/de | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
| fault/files/agreements/agreement-approved-31jul17-en.pdf'> | 481.xml"/> | |||
| <front> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| <title>Registry Agreement</title> | 126.xml"/> | |||
| <author> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| <organization>Internet Corporation For Assigned Names and Numbers | 174.xml"/> | |||
| </organization> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
| </author> | 082.xml"/> | |||
| <date year='2017' month='July' /> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
| </front> | 083.xml"/> | |||
| </reference> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
| <reference anchor='ICANN-RDS1' target='https://www.icann.org/en/system/f | 110.xml"/> | |||
| iles/files/final-report-06jun14-en.pdf'> | ||||
| <front> | ||||
| <title>Final Report from the Expert Working Group on gTLD Directo | ||||
| ry Services: A Next-Generation Registration Directory Service (RDS)</title> | ||||
| <author> | ||||
| <organization>Internet Corporation For Assigned Names and Numbers | ||||
| </organization> | ||||
| </author> | ||||
| <date year='2014' month='June' /> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor='ICANN-RDS2' target='http://whois.icann.org/sites/defa | ||||
| ult/files/files/final-issue-report-next-generation-rds-07oct15-en.pdf'> | ||||
| <front> | ||||
| <title>Final Issue Report on a Next-Generation gTLD RDS to Replac | ||||
| e WHOIS</title> | ||||
| <author> | ||||
| <organization>Internet Corporation For Assigned Names and Numbers | ||||
| </organization> | ||||
| </author> | ||||
| <date year='2015' month='October' /> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="OIDCC" target="http://openid.net/specs/openid-connect-cor | ||||
| e-1_0.html"> | ||||
| <front> | ||||
| <title>OpenID Connect Core incorporating errata set 1</title> | ||||
| <author initials="" surname=""> | ||||
| <organization>OpenID Foundation</organization> | ||||
| </author> | ||||
| <date month="November" year="2014" /> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| <section anchor="access-control-paradigms" title="Paradigms to Enforce Acc | <!---[I-D.ietf-jsonpath-base] is now RFC 9535--> | |||
| ess Control on Reverse Search in RDAP"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
| <t>Access control can be implemented according to different paradigms | 535.xml"/> | |||
| introducing increasingly stringent rules. The paradigms reported here in the fo | ||||
| llowing leverage the capabilities either built-in or provided as extensions by t | ||||
| he OpenID Connect <xref target="OIDCC"/>:</t> | ||||
| <t><list style="symbols"> | ||||
| <t>Role-Based Access Control (RBAC): access rights are granted dep | ||||
| ending on roles. Generally, this is done by grouping users into fixed categorie | ||||
| s and assigning static grants to each category. A more dynamic approach can be | ||||
| implemented by using the OpenID Connect "scope" claim;<vspace blankLin | ||||
| es='1' /></t> | ||||
| <t>Purpose-Based Access Control (PBAC): access rules are based on | ||||
| the notion of purpose, being the intended use of some data by a user. It can be | ||||
| implemented by tagging a request with the usage purpose and making the RDAP ser | ||||
| ver check the compliance between the given purpose and the control rules applied | ||||
| to the data to be returned;<vspace blankLines='1' /></t> | ||||
| <t>Attribute-Based Access Control (ABAC): rules to manage access r | ||||
| ights are evaluated and applied according to specific attributes describing the | ||||
| context within which data are requested. It can be implemented by setting withi | ||||
| n an out-of-band process additional OpenID Connect claims describing the request | ||||
| context and making the RDAP server check the compliance between the given conte | ||||
| xt and the control rules applied to the data to be returned;<vspace blankLines=' | ||||
| 1' /></t> | ||||
| <t>Time-Based Access Control (TBAC): data access is allowed for a | ||||
| limited time only. It can be implemented by assigning the users with temporary | ||||
| credentials linked to access grants whose scope is limited.</t> | ||||
| </list></t> | ||||
| <t>With regard to the privacy threats reported in <xref target="privac | </references> | |||
| y-considerations"/>, correlation and disclosure can be mitigated by minimizing b | <references> | |||
| oth the request features and the response data based on user roles (i.e. RBAC). | <name>Informative References</name> | |||
| Misuse can be mitigated by checking for the purpose of the request (i.e. PBAC). | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | |||
| It can be accomplished according to the following approaches:</t> | 912.xml"/> | |||
| <t><list style="symbols"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
| <t>Full Trust: the registry trusts the fairness of an accredited u | 730.xml"/> | |||
| ser. The requestor is always legitimized to submit his requests under a lawful | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
| basis. Additionally, he can be required to specify the purpose as either a claim | 973.xml"/> | |||
| of his account or a query parameter. In the former case, the purpose is assume | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| d to be the same for every request. In the latter case, the purpose must be one | 977.xml"/> | |||
| of those associated to the user;<vspace blankLines='1' /></t> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| <t>Zero Trust: the registry requires documents assessing that the | 982.xml"/> | |||
| requestor is legitimized to submit a given request. It can be implemented by as | ||||
| signing the requestor with temporary OpenID account linked to the given request | ||||
| (i.e. TBAC) and describing the request through a set of claims (i.e. ABAC). The | ||||
| association between the temporary account and the claims about the request is m | ||||
| ade by an out-of-band application. In so doing, the RDAP server is able to chec | ||||
| k that the incoming request is consistent with the request claims linked to the | ||||
| temporary account.</t> | ||||
| </list></t> | ||||
| <t>The two approaches can be used together:</t> | ||||
| <t><list style="symbols"> | ||||
| <t>The former is suitable for users carrying out a task in the pub | ||||
| lic interest, or exercising their official authority (e.g. an officer of a cyber | ||||
| crime agency). Similarly, registrars can submit reverse searches on their domai | ||||
| ns and contacts based on their contractual relationship with the domain holders. | ||||
| In this case, the query results can be restricted to those pertaining a regist | ||||
| rar by adding an implicit predicate to the search condition.<vspace blankLines=' | ||||
| 1' /></t> | ||||
| <t>The latter can be taken to allow domain name dispute resolution | ||||
| service providers to request information in defense of the legitimate interests | ||||
| of complainants.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section title="Change Log"> | <reference anchor="ICANN-RA" target="https://www.icann.org/en/registry-a | |||
| <t> | greements/base-agreement"> | |||
| <list style="hanging"> | <front> | |||
| <t hangText="00:">Initial working group version ported from draft-loff | <title>Base Registry Agreement</title> | |||
| redo-regext-rdap-reverse-search-04</t> | <author> | |||
| <t hangText="01:">Updated "Privacy Considerations" s | <organization>ICANN</organization> | |||
| ection.</t> | </author> | |||
| <t hangText="02:">Revised the text.</t> | <date month="January" year="2024"/> | |||
| <t hangText="03:">Refactored the query model.</t> | </front> | |||
| <t hangText="04:">Keepalive refresh.</t> | </reference> | |||
| <t hangText="05:">Reorganized "Abstract". Corrected "Conventions Use | ||||
| d in This Document" section. Added "RDAP Conformance" section. Chang | <reference anchor="ICANN-RDS" target="https://www.icann.org/en/system/fi | |||
| ed "IANA Considerations" section. Added references to RFC7095 and RFC | les/files/final-report-06jun14-en.pdf"> | |||
| 8174. Other minor edits.</t> | <front> | |||
| <t hangText="06:">Updated "Privacy Considerations", "S | <title>Final Report from the Expert Working Group on gTLD Directory | |||
| ecurity Considerations" and "Acknowledgements" sections. Added s | Services: A Next-Generation Registration Directory Service (RDS)</title> | |||
| ome normative and informative references. Added <xref target="access-control-pa | <author> | |||
| radigms"/>.</t> | <organization>ICANN</organization> | |||
| <t hangText="07:">Updated normative references.</t> | </author> | |||
| <t hangText="08:">Changed "Implementation Status" section. | <date year="2014" month="June"/> | |||
| Updated informative references.</t> | </front> | |||
| <t hangText="09:">Extended the query model to represent a reverse sea | </reference> | |||
| rch based on any relationship between the RDAP object classes. Changed the path | ||||
| segment "role" into a query parameter.</t> | <reference anchor="OIDCC" target="http://openid.net/specs/openid-connect | |||
| <t hangText="10:">Updated "Reverse Searches Based on Entity Deta | -core-1_0.html"> | |||
| ils" section to consider the use of JSContact format instead of jCard. Add | <front> | |||
| ed references to JSContact documents.</t> | <title>OpenID Connect Core 1.0 incorporating errata set 2</title> | |||
| <t hangText="11:">Updated the document based on Tom Harrison and Jame | <author initials="N" surname="Sakimura"> | |||
| s Gould feedback: | </author> | |||
| <list style="symbols"> | <author initials="J" surname="Bradley"> | |||
| <t>Updated section "RDAP Path Segment Specification": | </author> | |||
| <list style="symbols"> | <author initials="M" surname="Jones"> | |||
| <t>Clarified how servers must evaluate a reverse search | </author> | |||
| including predicates that are for the same property.<vspace blankLines='1' /></t | <author initials="B" surname="de Medeiros"> | |||
| > | </author> | |||
| <t>Specified the error response servers must return when | <author initials="C" surname="Mortimore"> | |||
| receiving a wrong reverse search request according to their policy.<vspace blan | </author> | |||
| kLines='1' /></t> | <date month="December" year="2023"/> | |||
| <t>Clarified that searchs for the related-resource-type | </front> | |||
| values other than "entity" may be defined in future documents.<vspace | </reference> | |||
| blankLines='1' /></t> | </references> | |||
| </list> | </references> | |||
| </t> | <section anchor="access-control-paradigms"> | |||
| <t>Reviewed text in section "Reverse Searches Based on Enti | <name>Paradigms to Enforce Access Control on Reverse Search in RDAP</name> | |||
| ty Details" about reverse searches based on custom response extensions.<vsp | <t>Access control can be implemented according to different paradigms intr | |||
| ace blankLines='1' /></t> | oducing increasingly stringent rules. The paradigms listed below leverage the c | |||
| <t>Removed references to JSContact documents in section "Re | apabilities that are either built in or provided as extensions by the OpenID Con | |||
| verse Searches Based on Entity Details". Moved the mapping between jCard p | nect <xref target="OIDCC"/>:</t> | |||
| roperties used in the RDAP response and JSContact counterparts to draft-ietf-reg | <dl spacing="normal"> | |||
| ext-rdap-jscontact.<vspace blankLines='1' /></t> | <dt>Role-Based Access Control (RBAC):</dt> <dd>Access rights are granted | |||
| <t>Added section "RDAP Response Specification".<vspace | depending on roles. Generally, this is done by grouping users into fixed categ | |||
| blankLines='1' /></t> | ories and assigning static grants to each category. A more dynamic approach can | |||
| <t>Changed the text to present reverse search as a single extens | be implemented by using the OpenID Connect "scope" claim.</dd> | |||
| ion with multiple features.<vspace blankLines='1' /></t> | <dt>Purpose-Based Access Control (PBAC):</dt> <dd>Access rules are based | |||
| <t>Changed the definition of searchable-resource-type and relate | on the notion of purpose, being the intended use of some data by a user. It ca | |||
| d-resource-type to consider also the resource type extensions.<vspace blankLines | n be implemented by tagging a request with the usage purpose and making the RDAP | |||
| ='1' /></t> | server check the compliance between the given purpose and the control rules app | |||
| <t>Replaced "reverse" with "reverse_search_0" in the generic rev | lied to the data to be returned.</dd> | |||
| erse search path. Updated <xref target="reverse-search-request"/> accordingly.< | <dt>Attribute-Based Access Control (ABAC):</dt> <dd>Rules to manage acce | |||
| vspace blankLines='1' /></t> | ss rights are evaluated and applied according to specific attributes describing | |||
| <t>Removed the phrase "but with a special focus on its priv | the context within which data are requested. It can be implemented within an ou | |||
| acy implications" from both the "Abstract" and the "Introduc | t-of-band process by setting additional OpenID Connect claims that describe the | |||
| tion". Moved the mapping between jCard properties used in the RDAP respons | request context and make the RDAP server check for compliance between the given | |||
| e and JSContact counterparts to draft-ietf-regext-rdap-jscontact.<vspace blankLi | context and the control rules that are applied to the data to be returned.</dd> | |||
| nes='1' /></t> | <dt>Time-Based Access Control (TBAC):</dt> <dd>Data access is allowed fo | |||
| <t>Reviewed the text of "Privacy Considerations" secti | r a limited time only. It can be implemented by assigning users temporary crede | |||
| on.<vspace blankLines='1' /></t> | ntials linked to access grants with limited scopes.</dd> | |||
| <t>Text cleaning.<vspace blankLines='1' /></t> | </dl> | |||
| </list> | <t>With regard to the privacy threats reported in <xref target="privacy-co | |||
| </t> | nsiderations"/>, correlation and disclosure can be mitigated by minimizing both | |||
| <t hangText="12:">Replaced "reverse_search_0" with "re | the request features and the response data based on user roles (i.e., RBAC). Mi | |||
| verse_search" as both URI path segment, extension identifier and rdapConfor | suse can be mitigated by checking for the purpose of the request (i.e., PBAC). | |||
| mance tag to match the working group consensus.</t> | It can be accomplished according to the following approaches:</t> | |||
| <t hangText="13:">Done some minor text changes.</t> | <dl spacing="normal"> | |||
| <t hangText="14:">Revised text of first sentence and added references | <dt>Full Trust:</dt> <dd>The registry trusts the fairness of an accredit | |||
| to RFC8977 and RFC8982 in the "Implementation Considerations" section | ed user. The requestor is always legitimized to submit their requests under a l | |||
| .</t> | awful basis. Additionally, they can be required to specify the purpose as either | |||
| <t hangText="15:">Moved RFC6973 from Normative References to Informat | a claim of their account or a query parameter. In the former case, the purpose | |||
| ive References. Remnoved informative reference to draft-ietf-regext-rdap-openid | is assumed to be the same for every request. In the latter case, the purpose m | |||
| . Rephrased text in Appendix A accordingly.</t> | ust be one of those associated to the user.</dd> | |||
| <t hangText="16:">Moved OIDC from Normative References to Informative | <dt>Zero Trust:</dt> <dd>The registry requires documents that assess whe | |||
| References. Added the "Reverse Search Properties Discovery" section. | ther the requestor is legitimized to submit a given request. It can be implemen | |||
| Added "RDAP JSON Values Registry" as a subsection of the "IANA | ted by assigning the requestor a temporary OpenID account linked to the given re | |||
| Considerations" section. Rephrased the "Reverse Searches Based on Ent | quest (i.e., TBAC) and describing the request through a set of claims (i.e., ABA | |||
| ity Details" section to refer to the "Reverse Search Properties Discov | C). The association between the temporary account and the claims about the requ | |||
| ery" section. Updated the "Acknowledgements" section. Minor tex | est is made by an out-of-band application. In so doing, the RDAP server is able | |||
| t edits.</t> | to check that the incoming request is consistent with the request claims linked | |||
| <t hangText="17:">Revised the "Reverse Search Properties Discove | to the temporary account.</dd> | |||
| ry" section. Replaced "RDAP JSON Values Registry" section with t | </dl> | |||
| he "RDAP Reverse Search Properties Registry" section.</t> | <t>The two approaches can be used together:</t> | |||
| <t hangText="18:">Changed "Expert Review" with "Specif | <ul spacing="normal"> | |||
| ication Required" in the "Creation of the RDAP Reverse Search Properti | <li>The former is suitable for users carrying out a task in the public i | |||
| es Registry" section. Renamed the "RDAP Reverse Search Properties Registry | nterest or exercising their official authority (e.g., an officer of a cybercrime | |||
| " into "RDAP Reverse Search Registry". Aligned the RDAP Reverse Search Registry | agency). Similarly, registrars can submit reverse searches on their domains an | |||
| template with the initial content. Introduced the "reverse_search_properties_m | d contacts based on their contractual relationship with the domain holders. In | |||
| apping" response extension. Added the "RDAP Reverse Search Mapping Registry". | this case, the query results can be restricted to those pertaining to a registra | |||
| Reorganized the document to separate the implementation of a generic reverse sea | r by adding an implicit predicate to the search condition. | |||
| rch from that based on domain-entity relationship.</t> | </li> | |||
| <t hangText="19:">Added the "Reverse Search Query Processing&qu | <li>The latter can be taken to allow domain name dispute resolution serv | |||
| ot; section. Changed the definition of search-condition in <xref target="revers | ice providers to request information in defense of the legitimate interests of c | |||
| e-search-path-segment-specification"/>. Moved the "Reverse Search Response Spec | omplainants.</li> | |||
| ification" section. Corrected <xref target="reverse-search-properties-mapping-e | </ul> | |||
| xample"/>.</t> | </section> | |||
| <t hangText="20:"> | <section numbered="false"> | |||
| <list style="symbols"> | <name>Acknowledgements</name> | |||
| <t>Changed document title.</t> | <t>The authors would like to acknowledge the following individuals for the | |||
| <t>Changed "Servers MUST NOT provide or implement unreg | ir contributions to this document: <contact fullname="Francesco Donini"/>, <cont | |||
| istered reverse searches or unregistered reverse search mappings." to " | act fullname="Scott Hollenbeck"/>, <contact fullname="Francisco Arias"/>, <conta | |||
| ;Servers MUST NOT provide or implement reverse searches or reverse search mappin | ct fullname="Gustavo Lozano"/>, <contact fullname="Eduardo Alvarez"/>, <contact | |||
| gs that are not registered with IANA." in <xref target="reverse-search-defi | fullname="Ulrich Wisser"/>, <contact fullname="James Gould"/>, and <contact full | |||
| nition"/>.</t> | name="Pawel Kowalik"/>.</t> | |||
| <t>Changed "...that the RDAP response property "ro | <t><contact fullname="Tom Harrison"/> and <contact fullname="Jasdip Singh" | |||
| les" must contain at least the specified role" to "...that the RD | /> provided relevant feedback and constant support to the implementation of this | |||
| AP response property "roles" MUST contain at least the specified role& | proposal. Their contributions have been greatly appreciated.</t> | |||
| quot; in <xref target="reverse-search-on-entities"/>.</t> | ||||
| <t>Changed the value of the "Intended usage" prope | ||||
| rty of the "RDAP Extensions Registry" entry in <xref target="rdap-exte | ||||
| nsions-registry"/>.</t> | ||||
| <t>Changed "..., reverse search functionality SHOULD be | ||||
| available over HTTPS only." to "..., reverse search functionality MUS | ||||
| T be available over HTTPS only." in <xref target="privacy-considerations"/> | ||||
| .</t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="21:"> | ||||
| <list style="symbols"> | ||||
| <t>Added a sentence about servers signaling the unsupported | ||||
| reverse searches to <xref target="reverse-search-query-processing"/>.</t> | ||||
| <t>Replaced "$.." with "$." in JSONPath expressions.</t> | ||||
| <t>Clarified that the registry group the new registries must | ||||
| be added to is "Registration Data Access Protocol (RDAP)".</t> | ||||
| <t>Removed unused normative reference to RFC7480.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="22:"> | ||||
| <list style="symbols"> | ||||
| <t>Expanded EPP acronym in <xref target="introduction"/>.</t | ||||
| > | ||||
| <t>Moved RFC3912 and RFC5730 from normative to informative r | ||||
| eferences.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="23:"> | ||||
| <list style="symbols"> | ||||
| <t>Replaced IESG with IETF as the Registrant Name for each e | ||||
| ntry in the IANA registries.</t> | ||||
| <t>Rearranged the layout of the initial content for the IANA | ||||
| registries.</t> | ||||
| <t>Added titles to figures.</t> | ||||
| <t>Repalced "RDAP providers are REQUIRED to" with | ||||
| "RDAP providers need to" in <xref target="security-considerations"/>.< | ||||
| /t> | ||||
| <t>Text cleaning.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="24:"> | ||||
| <list style="symbols"> | ||||
| <t>Added text to <xref target="rdap-reverse-search-registrie | ||||
| s-creation"/> to make the term "collisions" clear enough for future DEs.</t> | ||||
| <t>Added titles to tables.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="25:"> | ||||
| <list style="symbols"> | ||||
| <t>Added text to <xref target="introduction"/> to reference | ||||
| the implications of this specification on efficiency, security and compliance wi | ||||
| th privacy regulations.</t> | ||||
| <t>Changed text in Privacy Considerations to clarify that in | ||||
| those cases where sensitive information are used, this feature MUST be accessbl | ||||
| e to authorized users only.</t> | ||||
| <t>Added text to <xref target="security-considerations"/> to | ||||
| describe additional measures to enforce the security.</t> | ||||
| <t>Added text to <xref target="access-control-paradigms"/> t | ||||
| o clarify how the proposed access control paradigms can contribute to mitigate t | ||||
| he threats listed in <xref target="privacy-considerations"/>.</t> | ||||
| <t>Moved the reference to RFC3912.</t> | ||||
| <t>Moved reference to draft-ietf-jsonpath-based to Normative | ||||
| References.</t> | ||||
| <t>Text cleaning.</t> | ||||
| </list> | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | </section> | |||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 39 change blocks. | ||||
| 1089 lines changed or deleted | 773 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||