draft-ietf-regext-rdap-reverse-search-10.txt | draft-ietf-regext-rdap-reverse-search-11.txt | |||
---|---|---|---|---|
Registration Protocols Extensions M. Loffredo | Registration Protocols Extensions M. Loffredo | |||
Internet-Draft M. Martinelli | Internet-Draft M. Martinelli | |||
Intended status: Standards Track IIT-CNR/Registro.it | Intended status: Standards Track IIT-CNR/Registro.it | |||
Expires: 10 October 2022 8 April 2022 | Expires: 3 November 2022 2 May 2022 | |||
Registration Data Access Protocol (RDAP) Reverse search capabilities | Registration Data Access Protocol (RDAP) Reverse search capabilities | |||
draft-ietf-regext-rdap-reverse-search-10 | draft-ietf-regext-rdap-reverse-search-11 | |||
Abstract | Abstract | |||
The Registration Data Access Protocol (RDAP) does not include query | The Registration Data Access Protocol (RDAP) does not include query | |||
capabilities to find the list of domains related to a set of entities | capabilities for finding the list of domains related to a set of | |||
matching a given search pattern. In the RDAP context, an entity can | entities matching a given search pattern. In the RDAP context, an | |||
be associated with any defined object class. Moreover, other | entity can be associated with any defined object class. Moreover, | |||
relationships between object classes exist and might be used for | other relationships between object classes exist and might be used | |||
providing a reverse search capability. Therefore, a reverse search | for providing a reverse search capability. Therefore, a reverse | |||
can be applied to other use cases than the classic domain-entity | search can be applied to other use cases than the classic domain- | |||
scenario. This document describes RDAP query extensions that allow | entity scenario. This document describes an RDAP extension that | |||
servers to provide a reverse search feature based on the relationship | allow servers to provide a reverse search feature based on the | |||
defined in RDAP between an object class for search and any related | relationship defined in RDAP between an object class for search and | |||
object class. The reverse search based on the domain-entity | any related object class. The reverse search based on the domain- | |||
relationship is treated as a particular case but with a special focus | entity relationship is treated as a particular case. | |||
on its privacy implications. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on 10 October 2022. | This Internet-Draft will expire on 3 November 2022. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
and restrictions with respect to this document. Code Components | and restrictions with respect to this document. Code Components | |||
extracted from this document must include Revised BSD License text as | extracted from this document must include Revised BSD License text as | |||
described in Section 4.e of the Trust Legal Provisions and are | described in Section 4.e of the Trust Legal Provisions and are | |||
provided without warranty as described in the Revised BSD License. | provided without warranty as described in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Conventions Used in This Document . . . . . . . . . . . . 4 | 1.1. Conventions Used in This Document . . . . . . . . . . . . 4 | |||
2. RDAP Path Segment Specification . . . . . . . . . . . . . . . 4 | 2. RDAP Path Segment Specification . . . . . . . . . . . . . . . 4 | |||
2.1. Reverse Searches Based on Entity Details . . . . . . . . 4 | 3. RDAP Response Specification . . . . . . . . . . . . . . . . . 5 | |||
3. RDAP Conformance . . . . . . . . . . . . . . . . . . . . . . 6 | 4. Reverse Searches Based on Entity Details . . . . . . . . . . 5 | |||
4. Implementation Considerations . . . . . . . . . . . . . . . . 6 | 5. RDAP Conformance . . . . . . . . . . . . . . . . . . . . . . 6 | |||
5. Implementation Status . . . . . . . . . . . . . . . . . . . . 6 | 6. Implementation Considerations . . . . . . . . . . . . . . . . 6 | |||
5.1. IIT-CNR/Registro.it RDAP Server . . . . . . . . . . . . . 7 | 7. Implementation Status . . . . . . . . . . . . . . . . . . . . 7 | |||
5.2. IIT-CNR/Registro.it RDAP Client . . . . . . . . . . . . . 7 | 7.1. IIT-CNR/Registro.it RDAP Server . . . . . . . . . . . . . 7 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 7.2. IIT-CNR/Registro.it RDAP Client . . . . . . . . . . . . . 7 | |||
7. Privacy Considerations . . . . . . . . . . . . . . . . . . . 8 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 9. Privacy Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 9 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 10 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 9 | |||
12.2. Informative References . . . . . . . . . . . . . . . . . 10 | ||||
Appendix A. Paradigms to Enforce Access Control on Reverse Search | Appendix A. Paradigms to Enforce Access Control on Reverse Search | |||
in RDAP . . . . . . . . . . . . . . . . . . . . . . . . . 11 | in RDAP . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
Appendix B. Change Log . . . . . . . . . . . . . . . . . . . . . 12 | Appendix B. Change Log . . . . . . . . . . . . . . . . . . . . . 12 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
1. Introduction | 1. Introduction | |||
Reverse Whois is a service provided by many web applications that | Reverse Whois is a service provided by many web applications that | |||
allow users to find domain names owned by an individual or a company | allows 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 | starting from the owner's details, such as name and email. Even if | |||
it has been considered useful for some legal purposes (e.g. | it has been considered useful for some legal purposes (e.g. | |||
uncovering trademark infringements, detecting cybercrimes), its | uncovering trademark infringements, detecting cybercrimes), its | |||
availability as a standardized Whois capability has been objected to | availability as a standardized Whois capability has been objected to | |||
for two main reasons, which now don't seem to conflict with an RDAP | for two main reasons, which now don't seem to conflict with an RDAP | |||
implementation. | implementation. | |||
The first objection has been caused by the potential risks of privacy | The first objection concerns the potential risks of privacy | |||
violation. However, TLDs community is considering a new generation | violation. However, the domain name community is considering a new | |||
of Registration Directory Services [ICANN-RDS1] [ICANN-RDS2] | generation of Registration Directory Services [ICANN-RDS1] | |||
[ICANN-RA], which provide access to sensitive data under some | [ICANN-RDS2] [ICANN-RA], which provide access to sensitive data under | |||
permissible purposes and according to adequate policies to enforce | some permissible purposes and in accordance with appropriate policies | |||
the requestor accreditation, authentication, authorization, and terms | for requestor accreditation, authentication and authorization. | |||
and conditions of data use. It is well known that such security | RDAP's reliance on HTTP means that it can make use of common HTTP- | |||
policies are not implemented in Whois [RFC3912], while they are in | based approaches to authentication and authorization, making it more | |||
RDAP [RFC7481]. Therefore, RDAP permits a reverse search | useful than Whois [RFC3912] in the context of such directory | |||
implementation complying with privacy protection principles. | services. Since RDAP consequently permits a reverse search | |||
implementation complying with privacy protection principles, this | ||||
objection is not well-founded. | ||||
The other objection to the implementation of a reverse search | The other objection to the implementation of a reverse search | |||
capability has been connected with its impact on server processing. | capability has been connected with its impact on server processing. | |||
Since RDAP supports search queries, the impact of both standard and | However, the core RDAP specifications already define search queries, | |||
reverse searches is equivalent and can be mitigated by servers | with similar processing requirements, so the distinction on which | |||
adopting ad hoc strategies. Furthermore, the reverse search is | this objection is based is not clear. | |||
almost always performed by specifying an entity role (e.g. | ||||
registrant, technical contact) and this can contribute to restricting | ||||
the result set. | ||||
Reverse searches, such as finding the list of domain names associated | Reverse searches, such as finding the list of domain names associated | |||
with contacts or nameservers may be useful to registrars as well. | with contacts or nameservers, may be useful to registrars as well. | |||
Usually, registries adopt out-of-band solutions to provide results to | Usually, registries adopt out-of-band solutions to provide results to | |||
registrars asking for reverse searches on their domains. Possible | registrars asking for reverse searches on their domains. Possible | |||
reasons for such requests are: | reasons for such requests are: | |||
* the loss of synchronization between the registrar database and the | * the loss of synchronization between the registrar database and the | |||
registry database; | registry database; | |||
* the need for such data to perform massive EPP [RFC5730] updates | * the need for such data to perform bulk EPP [RFC5730] updates (e.g. | |||
(e.g. changing the contacts of a set of domains, etc.). | changing the contacts of a set of domains, etc.). | |||
Currently, RDAP does not provide any means for a client to search for | Currently, RDAP does not provide any means for a client to search for | |||
the collection of domains associated with an entity [RFC9082]. A | the collection of domains associated with an entity [RFC9082]. A | |||
query (lookup or search) on domains can return the array of entities | query (lookup or search) on domains can return the array of entities | |||
related to a domain with different roles (registrant, registrar, | related to a domain with different roles (registrant, registrar, | |||
administrative, technical, reseller, etc.), but the reverse operation | administrative, technical, reseller, etc.), but the reverse operation | |||
is not allowed. Only reverse searches to find the collection of | is not allowed. Only reverse searches to find the collection of | |||
domains related to a nameserver (ldhName or ip) can be requested. | domains related to a nameserver (ldhName or ip) can be requested. | |||
Since an entity can be in relationship with any RDAP object | Since an entity can be in relationship with any RDAP object | |||
[RFC9083], the availability of a reverse search as largely intended | [RFC9083], the availability of a reverse search as largely intended | |||
can be common to all the object classes allowed for search. Through | can be common to all the object classes allowed for search. Through | |||
a further step of generalization, the meaning of reverse search in | a further step of generalization, the meaning of reverse search in | |||
the RDAP context can be extended to include any query for retrieving | the RDAP context can be extended to include any query for retrieving | |||
all the objects in relationship with another matching a given search | all the objects in relationship with another matching a given search | |||
pattern. | pattern. | |||
The protocol described in this specification aims to extend the RDAP | The protocol described in this specification aims to extend the RDAP | |||
query capabilities to enable the reverse search based on the | query capabilities to enable reverse search based on the | |||
relationships defined in RDAP between an object class for search and | relationships defined in RDAP between an object class for search and | |||
any related object class. The reverse search based on the domain- | a related object class. The reverse search based on the domain- | |||
entity relationship is treated as a particular case of such a generic | entity relationship is treated as a particular case of such a generic | |||
query model but with a special focus on its privacy implications. | query model. | |||
The extension is implemented by adding new path segments (i.e. search | ||||
paths) and using a RESTful web service [REST]. The service is | ||||
implemented using the Hypertext Transfer Protocol (HTTP) [RFC7230] | ||||
and the conventions described in [RFC7480]. | ||||
1.1. Conventions Used in This Document | 1.1. Conventions Used in This Document | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
2. RDAP Path Segment Specification | 2. RDAP Path Segment Specification | |||
The new search paths are OPTIONAL extensions of those defined in | A generic reverse search path is described by the syntax: | |||
[RFC9082]. A generic reverse search path is described by the syntax: | ||||
{searchable-resource-type}/reverse/{related-resource-type}?<search- | {searchable-resource-type}/reverse_search_0/{related-resource- | |||
condition> | type}?<search-condition> | |||
The path segments are defined as in the following: | The path segments are defined as in the following: | |||
* searchable-resource-type: it MUST be one of resource types for | * searchable-resource-type: it MUST be one of the resource types for | |||
search defined in Section 3.2 of [RFC9082], i.e. "domains", | search defined in Section 3.2 of [RFC9082] (i.e. "domains", | |||
"nameservers" and "entities"; | "nameservers" and "entities") or a resource type extension; | |||
* related-resource-type: it MUST be one of the resource types for | * related-resource-type: it MUST be one of the resource types for | |||
lookup defined in Section 3.1 of [RFC9082], i.e. "domain", | lookup defined in Section 3.1 of [RFC9082] (i.e. "domain", | |||
"nameserver", "entity", "ip" and "autnum"; | "nameserver", "entity", "ip" and "autnum") or a resource type | |||
extension; | ||||
* search-condition: a sequence of "property=search pattern" | * search-condition: a sequence of "property=search pattern" | |||
predicates separated by the ampersand character ('&', US-ASCII | predicates separated by the ampersand character ('&', US-ASCII | |||
value 0x0026). Each "property" represents a JSON object property | value 0x0026). Each "property" represents a JSON object property | |||
of the RDAP object class corresponding to "related-resource-type". | of the RDAP object class corresponding to "related-resource-type". | |||
All the predicates are joined by the AND logical operator. Based | Objects are only included in the search results if they satisfy | |||
on their policy, servers MAY restrict the usage of predicates to | all included predicates. This includes predicates that are for | |||
make a valid search condition. | the same property: it is necessary in such a case for the related | |||
object to match against each of those predicates. Based on their | ||||
policy, servers MAY restrict the usage of predicates to make a | ||||
valid search condition, by returning a 400 (Bad Request) response | ||||
when a problematic request is received. | ||||
While related-resource-type is defined as having one of a number of | ||||
different values, the only searches defined in this document are for | ||||
a related-resource-type of "entity". Searches for the other resource | ||||
types specified in [RFC9082] and resource type extensions may be | ||||
defined by future documents. | ||||
Partial string matching in search patterns is allowed as defined in | Partial string matching in search patterns is allowed as defined in | |||
section 4.1 of [RFC9082]. | section 4.1 of [RFC9082]. | |||
2.1. Reverse Searches Based on Entity Details | 3. RDAP Response Specification | |||
Reverse search responses use the formats defined in section 8 of | ||||
[RFC9083], which correspond to the searchable resource types defined | ||||
in Section 2. | ||||
4. Reverse Searches Based on Entity Details | ||||
Since in RDAP, an entity can be associated with any other object | Since in RDAP, an entity can be associated with any other object | |||
class, the most common kind of reverse searches are based on the | class, the most common kind of reverse search is one based on an | |||
entity details. Such reverse searches arise from the above query | entity's details. Such reverse searches arise from the query model | |||
model by setting the related resource type to "entity". | by setting the related resource type to "entity". | |||
By selecting a specific searchable resource type, the resulting | By selecting a specific searchable resource type, the resulting | |||
reverse search aims at retrieving all the objects (e.g. all the | reverse search aims at retrieving all the objects (e.g. all the | |||
domains) that are related to any entity object matching the search | domains) that are related to any entity object matching the search | |||
condition. | conditions. | |||
This section defines the following reverse search properties to be | This section defines the following reverse search properties servers | |||
used regardless of the searchable resource type being selected: | SHOULD support regardless of the searchable resource type being | |||
selected: | ||||
Reverse search property: role | Reverse search property: role | |||
RDAP property: $..entities[*].roles | RDAP property: $..entities[*].roles | |||
Reference: Section 10.2.4 of [RFC9083] | Reference: Section 10.2.4 of [RFC9083] | |||
Reverse search property: handle | Reverse search property: handle | |||
RDAP property: $..entities[*].handle | RDAP property: $..entities[*].handle | |||
Reference: Section 5.1 of [RFC9083] | Reference: Section 5.1 of [RFC9083] | |||
Reverse search property: fn | Reverse search property: fn | |||
Using jCard: | ||||
RDAP property: $..entities[*].vcardArray[1][?(@[0]=='fn')][3] | RDAP property: $..entities[*].vcardArray[1][?(@[0]=='fn')][3] | |||
Reference: Section 6.2.1 of [RFC6350] | Reference: Section 6.2.1 of [RFC6350] | |||
Using JSContact: | ||||
RDAP property: $..entities[*].jscard.fullName | ||||
Reference: Section 2.2.2 of [I-D.ietf-calext-jscontact] | ||||
Reverse search property: email | Reverse search property: email | |||
Using jCard: | ||||
RDAP property: $..entities[*].vcardArray[1][?(@[0]=='email')][3] | RDAP property: $..entities[*].vcardArray[1][?(@[0]=='email')][3] | |||
Reference: Section 6.4.2 of [RFC6350] | Reference: Section 6.4.2 of [RFC6350] | |||
Using JSContact: | ||||
RDAP property: $..entities[*].jscard.emails.[*].email | ||||
Reference: Section 2.3.1 of [I-D.ietf-calext-jscontact] | ||||
Regarding the above definitions, it must be noted that: | The mapping between the reverse search property and the corresponding | |||
RDAP response property is done through the use of a JSONPath | ||||
expression [I-D.ietf-jsonpath-base]. | ||||
* the mapping between the reverse search property and the | The presence of a predicate on the reverse search property "role" | |||
corresponding RDAP response property is done through the use of a | means that the RDAP response property "roles" must contain at least | |||
JSONPath expression [I-D.ietf-jsonpath-base]; | the specified role. | |||
* the presence of a predicate on the reverse search property "role" | ||||
means that the RDAP response property "roles" must contain at | ||||
least the specified role; | ||||
* the last two properties are related to jCard elements [RFC7095] | ||||
but, being jCard the JSON format for vCard, the corresponding | ||||
reference is to the vCard specification [RFC6350]. Such | ||||
properties are also shown according to the JSContact format | ||||
[I-D.ietf-calext-jscontact] to address the case when it is used | ||||
instead of jCard as described in [I-D.ietf-regext-rdap-jscontact]. | ||||
Servers MAY implement other properties than those defined in this | The last two properties are related to jCard elements [RFC7095], but | |||
section. | the field references are to vCard [RFC6350], since jCard is the JSON | |||
format for vCard. | ||||
Examples of reverse search paths based on the domain-entity | Examples of reverse search paths based on the domain-entity | |||
relationship are presented below: | relationship are presented in Figure 1. | |||
/domains/reverse/entity?handle=CID-40*&role=technical | /domains/reverse_search_0/entity?handle=CID-40*&role=technical | |||
/domains/reverse/entity?fn=Bobby*&role=registrant | /domains/reverse_search_0/entity?fn=Bobby*&role=registrant | |||
/domains/reverse/entity?handle=RegistrarX&role=registrar | /domains/reverse_search_0/entity?handle=RegistrarX&role=registrar | |||
Figure 1 | Figure 1 | |||
3. RDAP Conformance | Documents that deprecate or restructure RDAP responses such that one | |||
or more of the properties listed above becomes invalid MUST either | ||||
note that the relevant reverse search is no longer available (in the | ||||
case of deprecation) or describe how to continue supporting the | ||||
relevant search by way of some new RDAP property (in the case of | ||||
restructuring). | ||||
A server that includes additional fields in its objects in accordance | ||||
with the extensibility provisions of section 6 of [RFC7480] MAY | ||||
support the use of those fields in search conditions, in the same way | ||||
as for the search conditions defined in this section. Support for | ||||
such fields in the reverse search context MUST be documented in the | ||||
extension specification. | ||||
5. RDAP Conformance | ||||
Servers complying with this specification MUST include the value | Servers complying with this specification MUST include the value | |||
"reverse_search_0" in the rdapConformance property of the help | "reverse_search_0" in the rdapConformance property of the help | |||
response [RFC9083]. The information needed to register this value in | response [RFC9083]. The information needed to register this value in | |||
the "RDAP Extensions" registry is described in Section 6. | the "RDAP Extensions" registry is described in Section 8. | |||
4. Implementation Considerations | 6. Implementation Considerations | |||
The implementation of the proposed extension is technically feasible. | ||||
To limit the impact of processing the search predicates, servers are | To limit the impact of processing the search predicates, servers are | |||
RECOMMENDED to mandate the use of at least one property among those | RECOMMENDED to make use of indexes and similar functionality in their | |||
mapped to indexed fields of the registry database. Other properties, | underlying data store. In addition, risks with respect to | |||
such as "role", MAY be allowed to further restrict the set of | performance degradation or result set generation can be mitigated by | |||
possible results. In addition, the risks to degrade the performance | adopting practices used for standard searches, e.g. restricting the | |||
or to generate huge result sets can be mitigated by adopting the same | search functionality, limiting the rate of search requests according | |||
policies valid for handling searches (e.g. restricting the search | to the user's authorization, truncating and paging the results, and | |||
functionality, limiting the rate of search requests according to the | returning partial responses. | |||
user profile, truncating and paging the results, returning partial | ||||
responses). | ||||
5. Implementation Status | 7. Implementation Status | |||
NOTE: Please remove this section and the reference to RFC 7942 prior | NOTE: Please remove this section and the reference to RFC 7942 prior | |||
to publication as an RFC. | to publication as an RFC. | |||
This section records the status of known implementations of the | This section records the status of known implementations of the | |||
protocol defined by this specification at the time of posting of this | protocol defined by this specification at the time of posting of this | |||
Internet-Draft, and is based on a proposal described in [RFC7942]. | Internet-Draft, and is based on a proposal described in [RFC7942]. | |||
The description of implementations in this section is intended to | The description of implementations in this section is intended to | |||
assist the IETF in its decision processes in progressing drafts to | assist the IETF in its decision processes in progressing drafts to | |||
RFCs. Please note that the listing of any individual implementation | RFCs. Please note that the listing of any individual implementation | |||
skipping to change at page 7, line 16 ¶ | skipping to change at page 7, line 30 ¶ | |||
features. Readers are advised to note that other implementations may | features. Readers are advised to note that other implementations may | |||
exist. | exist. | |||
According to RFC 7942, "this will allow reviewers and working groups | According to RFC 7942, "this will allow reviewers and working groups | |||
to assign due consideration to documents that have the benefit of | to assign due consideration to documents that have the benefit of | |||
running code, which may serve as evidence of valuable experimentation | running code, which may serve as evidence of valuable experimentation | |||
and feedback that have made the implemented protocols more mature. | and feedback that have made the implemented protocols more mature. | |||
It is up to the individual working groups to use this information as | It is up to the individual working groups to use this information as | |||
they see fit". | they see fit". | |||
5.1. IIT-CNR/Registro.it RDAP Server | 7.1. IIT-CNR/Registro.it RDAP Server | |||
* Responsible Organization: Institute of Informatics and Telematics | * Responsible Organization: Institute of Informatics and Telematics | |||
of National Research Council (IIT-CNR)/Registro.it | of National Research Council (IIT-CNR)/Registro.it | |||
* Location: https://rdap.pubtest.nic.it/ | * Location: https://rdap.pubtest.nic.it/ | |||
* Description: This implementation includes support for RDAP queries | * Description: This implementation includes support for RDAP queries | |||
using data from the public test environment of .it ccTLD. Reverse | using data from the public test environment of .it ccTLD. Reverse | |||
search is allowed to authenticated users. Registrar users are | search is allowed to authenticated users. Registrar users are | |||
allowed to perform reverse searches on their own domains and | allowed to perform reverse searches on their own domains and | |||
contacts. This is achieved by adding an implicit condition to the | contacts. This is achieved by adding an implicit predicate to the | |||
search pattern. | search condition. | |||
* Level of Maturity: This is an "alpha" test implementation. | * Level of Maturity: This is an "alpha" test implementation. | |||
* Coverage: This implementation includes all of the features | * Coverage: This implementation includes all of the features | |||
described in this specification. | described in this specification. | |||
* Contact Information: Mario Loffredo, mario.loffredo@iit.cnr.it | * Contact Information: Mario Loffredo, mario.loffredo@iit.cnr.it | |||
5.2. IIT-CNR/Registro.it RDAP Client | 7.2. IIT-CNR/Registro.it RDAP Client | |||
* Responsible Organization: Institute of Informatics and Telematics | * Responsible Organization: Institute of Informatics and Telematics | |||
of National Research Council (IIT-CNR)/Registro.it | of National Research Council (IIT-CNR)/Registro.it | |||
* Location: https://web-rdap.pubtest.nic.it/ | * Location: https://web-rdap.pubtest.nic.it/ | |||
* Description: This is a Javascript web-based RDAP client. RDAP | * Description: This is a Javascript web-based RDAP client. RDAP | |||
responses are retrieved from RDAP servers by the browser, parsed | responses are retrieved from RDAP servers by the browser, parsed | |||
into an HTML representation, and displayed in a format improving | into an HTML representation, and displayed in a format improving | |||
the user experience. Reverse search is allowed to authenticated | the user experience. Reverse search is allowed to authenticated | |||
users. | users. | |||
* Level of Maturity: This is an "alpha" test implementation. | * Level of Maturity: This is an "alpha" test implementation. | |||
* Coverage: This implementation includes all of the features | * Coverage: This implementation includes all of the features | |||
described in this specification. | described in this specification. | |||
* Contact Information: Francesco Donini, francesco.donini@iit.cnr.it | * Contact Information: Francesco Donini, francesco.donini@iit.cnr.it | |||
6. IANA Considerations | 8. IANA Considerations | |||
IANA is requested to register the following value in the RDAP | IANA is requested to register the following value in the RDAP | |||
Extensions Registry: | Extensions Registry: | |||
* Extension identifier: reverse_search_0 | * Extension identifier: reverse_search_0 | |||
* Registry operator: Any | * Registry operator: Any | |||
* Published specification: This document. | * Published specification: This document. | |||
* Contact: IETF <iesg@ietf.org> | * Contact: IETF <iesg@ietf.org> | |||
* Intended usage: This extension describes reverse search query | * Intended usage: This extension describes reverse search query | |||
patterns for RDAP. | patterns for RDAP. | |||
7. Privacy Considerations | 9. Privacy Considerations | |||
The use of the capability described in this document whenever a | The search functionality defined in this document may affect the | |||
contact detail is taken MUST be compliant with the rules about | privacy of entities in the registry (and elsewhere) in various ways: | |||
privacy protection each RDAP provider is subject to. Sensitive | see [RFC6973] for a general treatment of privacy in protocol | |||
registration data MUST be protected and accessible for permissible | specifications. Registry operators should be aware of the tradeoffs | |||
purposes only. This feature SHOULD be only accessible to authorized | that result from implementation of this functionality. | |||
users and only for a specified use case. | ||||
Since the request for this feature could contain Personal | Many jurisdictions have laws or regulations that restrict the use of | |||
Identifiable Information, it SHOULD only be accessible to authorized | "Personal Data", per the definition in [RFC6973]. Given that, | |||
users and available over HTTPS. | registry operators should ascertain whether the regulatory | |||
environment in which they operate permits implementation of the | ||||
functionality defined in this document. | ||||
In general, given the sensitivity of this functionality,it SHOULD be | ||||
accessible to authorized users only, and for specific use cases only. | ||||
Since reverse search requests and responses could contain Personally | ||||
Identifiable Information (PII), reverse search functionality SHOULD | ||||
be available over HTTPS only. | ||||
Providing reverse search in RDAP carries the following threats as | Providing reverse search in RDAP carries the following threats as | |||
described in [RFC6973]: | described in [RFC6973]: | |||
* Correlation | * Correlation | |||
* Disclosure | * Disclosure | |||
* Misuse of information | * Misuse of information | |||
Therefore, RDAP providers are REQUIRED to mitigate the risk of those | Therefore, RDAP providers are REQUIRED to mitigate the risk of those | |||
threats by implementing appropriate measures supported by security | threats by implementing appropriate measures supported by security | |||
services (see Section 8). | services (see Section 10). | |||
8. Security Considerations | 10. Security Considerations | |||
Security services required to provide controlled access to the | Security services required to provide controlled access to the | |||
operations specified in this document are described in [RFC7481]. A | operations specified in this document are described in [RFC7481]. A | |||
non-exhaustive list of access control paradigms an RDAP provider can | non-exhaustive list of access control paradigms an RDAP provider can | |||
implement is presented in Appendix A. | implement is presented in Appendix A. | |||
The specification of the relationship within the reverse search path | The specification of the relationship within the reverse search path | |||
allows the RDAP servers to implement different authorization policies | allows the RDAP servers to implement different authorization policies | |||
on a per-relationship basis. | on a per-relationship basis. | |||
9. Acknowledgements | 11. Acknowledgements | |||
The authors would like to acknowledge the following individuals for | The authors would like to acknowledge the following individuals for | |||
their contributions to this document: Francesco Donini, Scott | their contributions to this document: Francesco Donini, Scott | |||
Hollenbeck, Francisco Arias, Gustavo Lozano, Eduardo Alvarez and | Hollenbeck, Francisco Arias, Gustavo Lozano, Eduardo Alvarez, Ulrich | |||
Ulrich Wisser. | Wisser and James Gould. | |||
Tom Harrison and Jasdip Singh provided relevant feedback and constant | Tom Harrison and Jasdip Singh provided relevant feedback and constant | |||
support to the implementation of this proposal. Their contributions | support to the implementation of this proposal. Their contributions | |||
are greatly appreciated. | have been greatly appreciated. | |||
10. References | 12. References | |||
10.1. Normative References | 12.1. Normative References | |||
[OIDCC] OpenID Foundation, "OpenID Connect Core incorporating | [OIDCC] OpenID Foundation, "OpenID Connect Core incorporating | |||
errata set 1", November 2014, | errata set 1", November 2014, | |||
<http://openid.net/specs/openid-connect-core-1_0.html>. | <http://openid.net/specs/openid-connect-core-1_0.html>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
skipping to change at page 9, line 44 ¶ | skipping to change at page 10, line 19 ¶ | |||
[RFC6973] Cooper, A., Tschofenig, H., Aboba, B., Peterson, J., | [RFC6973] Cooper, A., Tschofenig, H., Aboba, B., Peterson, J., | |||
Morris, J., Hansen, M., and R. Smith, "Privacy | Morris, J., Hansen, M., and R. Smith, "Privacy | |||
Considerations for Internet Protocols", RFC 6973, | Considerations for Internet Protocols", RFC 6973, | |||
DOI 10.17487/RFC6973, July 2013, | DOI 10.17487/RFC6973, July 2013, | |||
<https://www.rfc-editor.org/info/rfc6973>. | <https://www.rfc-editor.org/info/rfc6973>. | |||
[RFC7095] Kewisch, P., "jCard: The JSON Format for vCard", RFC 7095, | [RFC7095] Kewisch, P., "jCard: The JSON Format for vCard", RFC 7095, | |||
DOI 10.17487/RFC7095, January 2014, | DOI 10.17487/RFC7095, January 2014, | |||
<https://www.rfc-editor.org/info/rfc7095>. | <https://www.rfc-editor.org/info/rfc7095>. | |||
[RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | ||||
Protocol (HTTP/1.1): Message Syntax and Routing", | ||||
RFC 7230, DOI 10.17487/RFC7230, June 2014, | ||||
<https://www.rfc-editor.org/info/rfc7230>. | ||||
[RFC7480] Newton, A., Ellacott, B., and N. Kong, "HTTP Usage in the | [RFC7480] Newton, A., Ellacott, B., and N. Kong, "HTTP Usage in the | |||
Registration Data Access Protocol (RDAP)", STD 95, | Registration Data Access Protocol (RDAP)", STD 95, | |||
RFC 7480, DOI 10.17487/RFC7480, March 2015, | RFC 7480, DOI 10.17487/RFC7480, March 2015, | |||
<https://www.rfc-editor.org/info/rfc7480>. | <https://www.rfc-editor.org/info/rfc7480>. | |||
[RFC7481] Hollenbeck, S. and N. Kong, "Security Services for the | [RFC7481] Hollenbeck, S. and N. Kong, "Security Services for the | |||
Registration Data Access Protocol (RDAP)", STD 95, | Registration Data Access Protocol (RDAP)", STD 95, | |||
RFC 7481, DOI 10.17487/RFC7481, March 2015, | RFC 7481, DOI 10.17487/RFC7481, March 2015, | |||
<https://www.rfc-editor.org/info/rfc7481>. | <https://www.rfc-editor.org/info/rfc7481>. | |||
skipping to change at page 10, line 29 ¶ | skipping to change at page 10, line 48 ¶ | |||
[RFC9082] Hollenbeck, S. and A. Newton, "Registration Data Access | [RFC9082] Hollenbeck, S. and A. Newton, "Registration Data Access | |||
Protocol (RDAP) Query Format", STD 95, RFC 9082, | Protocol (RDAP) Query Format", STD 95, RFC 9082, | |||
DOI 10.17487/RFC9082, June 2021, | DOI 10.17487/RFC9082, June 2021, | |||
<https://www.rfc-editor.org/info/rfc9082>. | <https://www.rfc-editor.org/info/rfc9082>. | |||
[RFC9083] Hollenbeck, S. and A. Newton, "JSON Responses for the | [RFC9083] Hollenbeck, S. and A. Newton, "JSON Responses for the | |||
Registration Data Access Protocol (RDAP)", STD 95, | Registration Data Access Protocol (RDAP)", STD 95, | |||
RFC 9083, DOI 10.17487/RFC9083, June 2021, | RFC 9083, DOI 10.17487/RFC9083, June 2021, | |||
<https://www.rfc-editor.org/info/rfc9083>. | <https://www.rfc-editor.org/info/rfc9083>. | |||
10.2. Informative References | 12.2. Informative References | |||
[I-D.ietf-calext-jscontact] | ||||
Stepanek, R. and M. Loffredo, "JSContact: A JSON | ||||
representation of contact data", Work in Progress, | ||||
Internet-Draft, draft-ietf-calext-jscontact-00, 17 January | ||||
2020, <https://www.ietf.org/archive/id/draft-ietf-calext- | ||||
jscontact-00.txt>. | ||||
[I-D.ietf-jsonpath-base] | [I-D.ietf-jsonpath-base] | |||
Gössner, S., Normington, G., and C. Bormann, "JSONPath: | Gössner, S., Normington, G., and C. Bormann, "JSONPath: | |||
Query expressions for JSON", Work in Progress, Internet- | Query expressions for JSON", Work in Progress, Internet- | |||
Draft, draft-ietf-jsonpath-base-03, 16 January 2022, | Draft, draft-ietf-jsonpath-base-03, 16 January 2022, | |||
<https://www.ietf.org/archive/id/draft-ietf-jsonpath-base- | <https://www.ietf.org/archive/id/draft-ietf-jsonpath-base- | |||
03.txt>. | 03.txt>. | |||
[I-D.ietf-regext-rdap-jscontact] | ||||
Loffredo, M. and G. Brown, "Using JSContact in | ||||
Registration Data Access Protocol (RDAP) JSON Responses", | ||||
Work in Progress, Internet-Draft, draft-ietf-regext-rdap- | ||||
jscontact-09, 7 March 2022, | ||||
<https://www.ietf.org/archive/id/draft-ietf-regext-rdap- | ||||
jscontact-09.txt>. | ||||
[I-D.ietf-regext-rdap-openid] | [I-D.ietf-regext-rdap-openid] | |||
Hollenbeck, S., "Federated Authentication for the | Hollenbeck, S., "Federated Authentication for the | |||
Registration Data Access Protocol (RDAP) using OpenID | Registration Data Access Protocol (RDAP) using OpenID | |||
Connect", Work in Progress, Internet-Draft, draft-ietf- | Connect", Work in Progress, Internet-Draft, draft-ietf- | |||
regext-rdap-openid-08, 8 November 2021, | regext-rdap-openid-08, 8 November 2021, | |||
<https://www.ietf.org/archive/id/draft-ietf-regext-rdap- | <https://www.ietf.org/archive/id/draft-ietf-regext-rdap- | |||
openid-08.txt>. | openid-08.txt>. | |||
[ICANN-RA] Internet Corporation For Assigned Names and Numbers, | [ICANN-RA] Internet Corporation For Assigned Names and Numbers, | |||
"Registry Agreement", July 2017, | "Registry Agreement", July 2017, | |||
skipping to change at page 11, line 33 ¶ | skipping to change at page 11, line 36 ¶ | |||
<https://www.icann.org/en/system/files/files/final-report- | <https://www.icann.org/en/system/files/files/final-report- | |||
06jun14-en.pdf>. | 06jun14-en.pdf>. | |||
[ICANN-RDS2] | [ICANN-RDS2] | |||
Internet Corporation For Assigned Names and Numbers, | Internet Corporation For Assigned Names and Numbers, | |||
"Final Issue Report on a Next-Generation gTLD RDS to | "Final Issue Report on a Next-Generation gTLD RDS to | |||
Replace WHOIS", October 2015, | Replace WHOIS", October 2015, | |||
<http://whois.icann.org/sites/default/files/files/final- | <http://whois.icann.org/sites/default/files/files/final- | |||
issue-report-next-generation-rds-07oct15-en.pdf>. | issue-report-next-generation-rds-07oct15-en.pdf>. | |||
[REST] Fielding, R., "Architectural Styles and the Design of | ||||
Network-based Software Architectures", 2000, | ||||
<http://www.ics.uci.edu/~fielding/pubs/dissertation/ | ||||
fielding_dissertation.pdf>. | ||||
Appendix A. Paradigms to Enforce Access Control on Reverse Search in | Appendix A. Paradigms to Enforce Access Control on Reverse Search in | |||
RDAP | RDAP | |||
Access control can be implemented according to different paradigms | Access control can be implemented according to different paradigms | |||
introducing increasingly stringent rules. The paradigms reported | introducing increasingly stringent rules. The paradigms reported | |||
here in the following leverage the capabilities either supported | here in the following leverage the capabilities either supported | |||
natively or provided as extensions by the OpenID Connect [OIDCC]: | natively or provided as extensions by the OpenID Connect [OIDCC]: | |||
* Role-Based Access Control: access rights are granted depending on | * Role-Based Access Control: access rights are granted depending on | |||
roles. Generally, this is done by grouping users into fixed | roles. Generally, this is done by grouping users into fixed | |||
categories and assigning each category with static grants. A more | categories and assigning static grants to each category. A more | |||
dynamic approach can be implemented by using the OpenID Connect | dynamic approach can be implemented by using the OpenID Connect | |||
"scope" claim; | "scope" claim; | |||
* Purpose-Based Access Control: access rules are based on the notion | * Purpose-Based Access Control: access rules are based on the notion | |||
of purpose which means the intended usage of some data by a user. | of purpose, being the intended use of some data by a user. It can | |||
It can be implemented by tagging a request with the usage purpose | be implemented by tagging a request with the usage purpose and | |||
and making the RDAP server check the compliance between the given | making the RDAP server check the compliance between the given | |||
purpose and the control rules applied to data to be returned. The | purpose and the control rules applied to the data to be returned. | |||
purpose can be stated within an out-of-band process by setting the | The purpose can be stated within an out-of-band process by setting | |||
OpenID Connect RDAP specific "purpose" claim as defined in | the OpenID Connect RDAP-specific "purpose" claim as defined in | |||
[I-D.ietf-regext-rdap-openid]; | [I-D.ietf-regext-rdap-openid]; | |||
* Attribute-Based Access Control: rules to manage access rights are | * Attribute-Based Access Control: rules to manage access rights are | |||
evaluated and applied according to specific attributes describing | evaluated and applied according to specific attributes describing | |||
the context within which data are requested. It can be | the context within which data are requested. It can be | |||
implemented by setting within an out-of-band process additional | implemented by setting within an out-of-band process additional | |||
OpenID Connect claims describing the request context and making | OpenID Connect claims describing the request context and making | |||
the RDAP server check the compliance between the given context and | the RDAP server check the compliance between the given context and | |||
the control rules applied to data to be returned; | the control rules applied to the data to be returned; | |||
* Time-Based Access Control: data access is allowed for a limited | * Time-Based Access Control: data access is allowed for a limited | |||
time only. It can be implemented by assigning the users with | time only. It can be implemented by assigning the users with | |||
temporary credentials linked to access grants whose scope is | temporary credentials linked to access grants whose scope is | |||
limited. | limited. | |||
Appendix B. Change Log | Appendix B. Change Log | |||
00: Initial working group version ported from draft-loffredo-regext- | 00: Initial working group version ported from draft-loffredo-regext- | |||
rdap-reverse-search-04 | rdap-reverse-search-04 | |||
01: Updated "Privacy Considerations" section. | 01: Updated "Privacy Considerations" section. | |||
skipping to change at page 12, line 49 ¶ | skipping to change at page 12, line 45 ¶ | |||
references. Added Appendix A. | references. Added Appendix A. | |||
07: Updated normative references. | 07: Updated normative references. | |||
08: Changed "Implementation Status" section. Updated informative | 08: Changed "Implementation Status" section. Updated informative | |||
references. | references. | |||
09: Extended the query model to represent a reverse search based on | 09: Extended the query model to represent a reverse search based on | |||
any relationship between the RDAP object classes. Changed the | any relationship between the RDAP object classes. Changed the | |||
path segment "role" into a query parameter. | path segment "role" into a query parameter. | |||
10: Updated "Reverse Searches Based on Entity Details" section to | 10: Updated "Reverse Searches Based on Entity Details" section to | |||
consider the use of JSContact format instead of jCard. Added | consider the use of JSContact format instead of jCard. Added | |||
references to JSContact documents. | references to JSContact documents. | |||
11: Updated the document based on Tom Harrison and James Gould | ||||
feedback: | ||||
* Updated section "RDAP Path Segment Specification": | ||||
- Clarified how servers must evaluate a reverse search | ||||
including predicates that are for the same property. | ||||
- Specified the error response servers must return when | ||||
receiving a wrong reverse search request according to their | ||||
policy. | ||||
- Clarified that searchs for the related-resource-type values | ||||
other than "entity" may be defined in future documents. | ||||
* Reviewed text in section "Reverse Searches Based on Entity | ||||
Details" about reverse searches based on custom response | ||||
extensions. | ||||
* Removed references to JSContact documents in section "Reverse | ||||
Searches Based on Entity Details". Moved the mapping between | ||||
jCard properties used in the RDAP response and JSContact | ||||
counterparts to draft-ietf-regext-rdap-jscontact. | ||||
* Added section "RDAP Response Specification". | ||||
* Changed the text to present reverse search as a single | ||||
extension with multiple features. | ||||
* Changed the definition of searchable-resource-type and related- | ||||
resource-type to consider also the resource type extensions. | ||||
* Replaced "reverse" with "reverse_search_0" in the generic | ||||
reverse search path. Updated Figure 1 accordingly. | ||||
* Removed the phrase "but with a special focus on its privacy | ||||
implications" from both the "Abstract" and the "Introduction". | ||||
Moved the mapping between jCard properties used in the RDAP | ||||
response and JSContact counterparts to draft-ietf-regext-rdap- | ||||
jscontact. | ||||
* Reviewed the text of "Privacy Considerations" section. | ||||
* Text cleaning. | ||||
Authors' Addresses | Authors' Addresses | |||
Mario Loffredo | Mario Loffredo | |||
IIT-CNR/Registro.it | IIT-CNR/Registro.it | |||
Via Moruzzi,1 | Via Moruzzi,1 | |||
56124 Pisa | 56124 Pisa | |||
Italy | Italy | |||
Email: mario.loffredo@iit.cnr.it | Email: mario.loffredo@iit.cnr.it | |||
URI: http://www.iit.cnr.it | URI: http://www.iit.cnr.it | |||
Maurizio Martinelli | Maurizio Martinelli | |||
IIT-CNR/Registro.it | IIT-CNR/Registro.it | |||
End of changes. 65 change blocks. | ||||
175 lines changed or deleted | 199 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |