draft-ietf-regext-rdap-object-tag-01.txt | draft-ietf-regext-rdap-object-tag-02.txt | |||
---|---|---|---|---|
Registration Protocols Extensions S. Hollenbeck | Registration Protocols Extensions S. Hollenbeck | |||
Internet-Draft Verisign Labs | Internet-Draft Verisign Labs | |||
Updates: 7484 (if approved) A. Newton | Updates: 7484 (if approved) A. Newton | |||
Intended status: Best Current Practice ARIN | Intended status: Best Current Practice ARIN | |||
Expires: September 27, 2018 March 26, 2018 | Expires: October 29, 2018 April 27, 2018 | |||
Registration Data Access Protocol (RDAP) Object Tagging | Registration Data Access Protocol (RDAP) Object Tagging | |||
draft-ietf-regext-rdap-object-tag-01 | draft-ietf-regext-rdap-object-tag-02 | |||
Abstract | Abstract | |||
The Registration Data Access Protocol (RDAP) includes a method that | The Registration Data Access Protocol (RDAP) includes a method that | |||
can be used to identify the authoritative server for processing | can be used to identify the authoritative server for processing | |||
domain name, IP address, and autonomous system number queries. The | domain name, IP address, and autonomous system number queries. The | |||
method does not describe how to identify the authoritative server for | method does not describe how to identify the authoritative server for | |||
processing other RDAP query types, such as entity queries. This | processing other RDAP query types, such as entity queries. This | |||
limitation exists because the identifiers associated with these query | limitation exists because the identifiers associated with these query | |||
types are typically unstructured. This document describes an | types are typically unstructured. This document updates RFC 7484 by | |||
operational practice that can be used to add structure to RDAP | describing an operational practice that can be used to add structure | |||
identifiers that makes it possible to identify the authoritative | to RDAP identifiers that makes it possible to identify the | |||
server for additional RDAP queries. | authoritative server for additional RDAP queries. | |||
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 September 27, 2018. | This Internet-Draft will expire on October 29, 2018. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 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 | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 17 ¶ | skipping to change at page 2, line 17 ¶ | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Object Naming Practice . . . . . . . . . . . . . . . . . . . 3 | 2. Object Naming Practice . . . . . . . . . . . . . . . . . . . 3 | |||
3. Bootstrap Service Registry for RDAP Service Providers . . . . 8 | 3. Bootstrap Service Registry for RDAP Service Providers . . . . 8 | |||
3.1. Registration Procedure . . . . . . . . . . . . . . . . . 9 | 3.1. Registration Procedure . . . . . . . . . . . . . . . . . 9 | |||
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 4. RDAP Conformance . . . . . . . . . . . . . . . . . . . . . . 9 | |||
4.1. Bootstrap Service Registry for RDAP Service Providers . . 9 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | |||
5. Implementation Status . . . . . . . . . . . . . . . . . . . . 9 | 5.1. Bootstrap Service Registry for RDAP Service Providers . . 10 | |||
5.1. Verisign Labs . . . . . . . . . . . . . . . . . . . . . . 10 | 5.2. RDAP Extensions Registry . . . . . . . . . . . . . . . . 10 | |||
5.2. OpenRDAP . . . . . . . . . . . . . . . . . . . . . . . . 10 | 6. Implementation Status . . . . . . . . . . . . . . . . . . . . 10 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | 6.1. Verisign Labs . . . . . . . . . . . . . . . . . . . . . . 11 | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11 | 6.2. OpenRDAP . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 11 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
8.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 12 | |||
Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 12 | 9.2. Informative References . . . . . . . . . . . . . . . . . 13 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 13 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 | ||||
1. Introduction | 1. Introduction | |||
The Registration Data Access Protocol (RDAP) includes a method | The Registration Data Access Protocol (RDAP) includes a method | |||
([RFC7484]) that can be used to identify the authoritative server for | ([RFC7484]) that can be used to identify the authoritative server for | |||
processing domain name, IP address, and autonomous system number | processing domain name, IP address, and autonomous system number | |||
(ASN) queries. This method works because each of these data elements | (ASN) queries. This method works because each of these data elements | |||
is structured in a way that facilitates automated parsing of the | is structured in a way that facilitates automated parsing of the | |||
element and association of the data element with a particular RDAP | element and association of the data element with a particular RDAP | |||
service provider. For example, domain names include labels (such as | service provider. For example, domain names include labels (such as | |||
skipping to change at page 3, line 7 ¶ | skipping to change at page 3, line 7 ¶ | |||
describe how to identify the authoritative server for processing | describe how to identify the authoritative server for processing | |||
entity queries, name server queries, help queries, or queries using | entity queries, name server queries, help queries, or queries using | |||
certain search patterns. This limitation exists because the | certain search patterns. This limitation exists because the | |||
identifiers bound to these queries are typically not structured in a | identifiers bound to these queries are typically not structured in a | |||
way that makes it easy to associate an identifier with a specific | way that makes it easy to associate an identifier with a specific | |||
service provider. This document describes an operational practice | service provider. This document describes an operational practice | |||
that can be used to add structure to RDAP identifiers that makes it | that can be used to add structure to RDAP identifiers that makes it | |||
possible to identify the authoritative server for additional RDAP | possible to identify the authoritative server for additional RDAP | |||
queries. | queries. | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
"OPTIONAL" in this document are to be interpreted as described in BCP | ||||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
capitals, as shown here. | ||||
2. Object Naming Practice | 2. Object Naming Practice | |||
Tagging object identifiers with a service provider tag makes it | Tagging object identifiers with a service provider tag makes it | |||
possible to identify the authoritative server for processing an RDAP | possible to identify the authoritative server for processing an RDAP | |||
query using the method described in RFC 7484 [RFC7484]. A service | query using the method described in RFC 7484 [RFC7484]. A service | |||
provider tag is constructed by prepending the Unicode TILDE character | provider tag is constructed by prepending the Unicode HYPHEN-MINUS | |||
"~" (U+007E, described as an "unreserved" character in RFC 3986 | character "-" (U+002D, described as an "unreserved" character in RFC | |||
[RFC3986]) to an IANA-registered value that represents the service | 3986 [RFC3986]) to an IANA-registered value that represents the | |||
provider. For example, a tag for a service provider identified by | service provider. For example, a tag for a service provider | |||
the string value "ARIN" is represented as "~ARIN". | identified by the string value "ARIN" is represented as "-ARIN". | |||
Service provider tags are concatenated to the end of RDAP query | Service provider tags are concatenated to the end of RDAP query | |||
object identifiers to unambiguously identify the authoritative server | object identifiers to unambiguously identify the authoritative server | |||
for processing an RDAP query. Building on the example from | for processing an RDAP query. Building on the example from | |||
Section 3.1.5 of RFC 7482 [RFC7482], an RDAP entity handle can be | Section 3.1.5 of RFC 7482 [RFC7482], an RDAP entity handle can be | |||
constructed that allows an RDAP client to bootstrap an entity query. | constructed that allows an RDAP client to bootstrap an entity query. | |||
The following identifier is used to find information for the entity | The following identifier is used to find information for the entity | |||
associated with handle "XXXX" at service provider "ARIN": | associated with handle "XXXX" at service provider "ARIN": | |||
XXXX~ARIN | XXXX-ARIN | |||
Clients that wish to bootstrap an entity query can parse this | Clients that wish to bootstrap an entity query can parse this | |||
identifier into distinct handle and service provider identifier | identifier into distinct handle and service provider identifier | |||
elements. Handles can themselves contain TILDE characters; the | elements. Handles can themselves contain HYPHEN-MINUS characters; | |||
service provider identifier is found following the last TILDE | the service provider identifier is found following the last HYPHEN- | |||
character in the tagged identifier. The service provider identifier | MINUS character in the tagged identifier. The service provider | |||
is used to retrieve a base RDAP URL from an IANA registry. The base | identifier is used to retrieve a base RDAP URL from an IANA registry. | |||
URL and entity handle are then used to form a complete RDAP query | The base URL and entity handle are then used to form a complete RDAP | |||
path segment. For example, if the base RDAP URL | query path segment. For example, if the base RDAP URL | |||
"https://example.com/rdap/" is associated with service provider | "https://example.com/rdap/" is associated with service provider | |||
"YYYY" in an IANA registry, an RDAP client will parse a tagged entity | "YYYY" in an IANA registry, an RDAP client will parse a tagged entity | |||
identifier "XXXX~YYYY" into distinct handle ("XXXX") and service | identifier "XXXX-YYYY" into distinct handle ("XXXX") and service | |||
provider ("YYYY") identifiers. The service provider identifier | provider ("YYYY") identifiers. The service provider identifier | |||
"YYYY" is used to query an IANA registry to retrieve the base RDAP | "YYYY" is used to query an IANA registry to retrieve the base RDAP | |||
URL "https://example.com/rdap/". The base RDAP URL is concatenated | URL "https://example.com/rdap/". The base RDAP URL is concatenated | |||
to the entity handle to create a complete RDAP query path segment of | to the entity handle to create a complete RDAP query path segment of | |||
"https://example.com/rdap/entity/XXXX~YYYY". | "https://example.com/rdap/entity/XXXX-YYYY". | |||
Implementation of this practice requires tagging of unstructured | Implementation of this practice requires tagging of unstructured | |||
potential query identifiers in RDAP responses. Consider these elided | potential query identifiers in RDAP responses. Consider these elided | |||
examples from Section 5.3 of RFC 7483 [RFC7483] in which the handle | examples from Section 5.3 of RFC 7483 [RFC7483] in which the handle | |||
identifiers have been tagged with a service provider tag: | identifiers have been tagged with a service provider tag: | |||
{ | { | |||
"objectClassName" : "domain", | "objectClassName" : "domain", | |||
"handle" : "XXXX~RIR", | "handle" : "XXXX-RIR", | |||
"ldhName" : "0.2.192.in-addr.arpa", | "ldhName" : "0.2.192.in-addr.arpa", | |||
"nameservers" : | "nameservers" : | |||
[ | [ | |||
... | ... | |||
], | ], | |||
"secureDNS": | "secureDNS": | |||
{ | { | |||
... | ... | |||
}, | }, | |||
"remarks" : | "remarks" : | |||
skipping to change at page 4, line 30 ¶ | skipping to change at page 4, line 38 ¶ | |||
... | ... | |||
], | ], | |||
"events" : | "events" : | |||
[ | [ | |||
... | ... | |||
], | ], | |||
"entities" : | "entities" : | |||
[ | [ | |||
{ | { | |||
"objectClassName" : "entity", | "objectClassName" : "entity", | |||
"handle" : "XXXX~RIR", | "handle" : "XXXX-RIR", | |||
"vcardArray": | "vcardArray": | |||
[ | [ | |||
... | ... | |||
], | ], | |||
"roles" : [ "registrant" ], | "roles" : [ "registrant" ], | |||
"remarks" : | "remarks" : | |||
[ | [ | |||
... | ... | |||
], | ], | |||
"links" : | "links" : | |||
skipping to change at page 4, line 45 ¶ | skipping to change at page 5, line 4 ¶ | |||
"roles" : [ "registrant" ], | "roles" : [ "registrant" ], | |||
"remarks" : | "remarks" : | |||
[ | [ | |||
... | ... | |||
], | ], | |||
"links" : | "links" : | |||
[ | [ | |||
... | ... | |||
], | ], | |||
"events" : | "events" : | |||
[ | [ | |||
... | ... | |||
] | ] | |||
} | } | |||
], | ], | |||
"network" : | "network" : | |||
{ | { | |||
"objectClassName" : "ip network", | "objectClassName" : "ip network", | |||
"handle" : "XXXX~RIR", | "handle" : "XXXX-RIR", | |||
"startAddress" : "192.0.2.0", | "startAddress" : "192.0.2.0", | |||
"endAddress" : "192.0.2.255", | "endAddress" : "192.0.2.255", | |||
"ipVersion" : "v4", | "ipVersion" : "v4", | |||
"name": "NET-RTR-1", | "name": "NET-RTR-1", | |||
"type" : "DIRECT ALLOCATION", | "type" : "DIRECT ALLOCATION", | |||
"country" : "AU", | "country" : "AU", | |||
"parentHandle" : "YYYY~RIR", | "parentHandle" : "YYYY-RIR", | |||
"status" : [ "active" ] | "status" : [ "active" ] | |||
} | } | |||
} | } | |||
Figure 1 | Figure 1 | |||
{ | { | |||
"objectClassName" : "domain", | "objectClassName" : "domain", | |||
"handle" : "XXXX~DNR", | "handle" : "XXXX-DNR", | |||
"ldhName" : "xn--fo-5ja.example", | "ldhName" : "xn--fo-5ja.example", | |||
"unicodeName" : "foo.example", | "unicodeName" : "foo.example", | |||
"variants" : | "variants" : | |||
[ | [ | |||
... | ... | |||
], | ], | |||
"status" : [ "locked", "transfer prohibited" ], | "status" : [ "locked", "transfer prohibited" ], | |||
"publicIds": | "publicIds": | |||
[ | [ | |||
... | ... | |||
], | ], | |||
"nameservers" : | "nameservers" : | |||
[ | [ | |||
{ | { | |||
"objectClassName" : "nameserver", | "objectClassName" : "nameserver", | |||
"handle" : "XXXX~DNR", | "handle" : "XXXX-DNR", | |||
"ldhName" : "ns1.example.com", | "ldhName" : "ns1.example.com", | |||
"status" : [ "active" ], | "status" : [ "active" ], | |||
"ipAddresses" : | "ipAddresses" : | |||
{ | { | |||
... | ... | |||
}, | }, | |||
"remarks" : | "remarks" : | |||
[ | [ | |||
... | ... | |||
], | ], | |||
"links" : | "links" : | |||
[ | [ | |||
... | ... | |||
], | ], | |||
"events" : | "events" : | |||
[ | [ | |||
... | ... | |||
skipping to change at page 6, line 11 ¶ | skipping to change at page 6, line 19 ¶ | |||
[ | [ | |||
... | ... | |||
], | ], | |||
"events" : | "events" : | |||
[ | [ | |||
... | ... | |||
] | ] | |||
}, | }, | |||
{ | { | |||
"objectClassName" : "nameserver", | "objectClassName" : "nameserver", | |||
"handle" : "XXXX~DNR", | "handle" : "XXXX-DNR", | |||
"ldhName" : "ns2.example.com", | "ldhName" : "ns2.example.com", | |||
"status" : [ "active" ], | "status" : [ "active" ], | |||
"ipAddresses" : | "ipAddresses" : | |||
{ | { | |||
... | ... | |||
}, | }, | |||
"remarks" : | "remarks" : | |||
[ | [ | |||
... | ... | |||
], | ], | |||
skipping to change at page 7, line 5 ¶ | skipping to change at page 7, line 12 ¶ | |||
], | ], | |||
"port43" : "whois.example.net", | "port43" : "whois.example.net", | |||
"events" : | "events" : | |||
[ | [ | |||
... | ... | |||
], | ], | |||
"entities" : | "entities" : | |||
[ | [ | |||
{ | { | |||
"objectClassName" : "entity", | "objectClassName" : "entity", | |||
"handle" : "XXXX~ABC", | "handle" : "XXXX-ABC", | |||
"vcardArray": | "vcardArray": | |||
[ | [ | |||
... | ... | |||
], | ], | |||
"status" : [ "validated", "locked" ], | "status" : [ "validated", "locked" ], | |||
"roles" : [ "registrant" ], | "roles" : [ "registrant" ], | |||
"remarks" : | "remarks" : | |||
[ | [ | |||
... | ... | |||
], | ], | |||
skipping to change at page 7, line 36 ¶ | skipping to change at page 7, line 43 ¶ | |||
} | } | |||
Figure 2 | Figure 2 | |||
As described in Section 5 of RFC 7483 [RFC7483], RDAP responses can | As described in Section 5 of RFC 7483 [RFC7483], RDAP responses can | |||
contain "self" links. Service provider tags and self references | contain "self" links. Service provider tags and self references | |||
SHOULD be consistent. If they are inconsistent, the service provider | SHOULD be consistent. If they are inconsistent, the service provider | |||
tag is processed with higher priority when using these values to | tag is processed with higher priority when using these values to | |||
identify a service provider. | identify a service provider. | |||
There is a risk of unpredictable processing behavior if the TILDE | There is a risk of unpredictable processing behavior if the HYPHEN- | |||
character is used for naturally occurring, non-separator purposes in | MINUS character is used for naturally occurring, non-separator | |||
an entity handle. This could lead to a client mistakenly assuming | purposes in an entity handle. This could lead to a client mistakenly | |||
that a TILDE character represents a separator and the text that | assuming that a HYPHEN-MINUS character represents a separator and the | |||
follows TILDE is a service provider identifier. A client that | text that follows HYPHEN-MINUS is a service provider identifier. A | |||
queries the IANA registry for what they assume is a valid service | client that queries the IANA registry for what they assume is a valid | |||
provider will likely receive an unexpected invalid result. As a | service provider will likely receive an unexpected, invalid result. | |||
consequence, the TILDE character MUST NOT be used in an entity handle | As a consequence, use of the HYPHEN-MINUS character as a service | |||
for any purpose other than to separate an object identifier from a | provider tag separator MUST be noted by adding rdapConformance value | |||
service provider tag. | to query responses as described in Section 4. | |||
The TILDE character was chosen as a separator for two reasons: 1) to | The HYPHEN-MINUS character was chosen as a separator for two reasons: | |||
avoid collisions with characters that are commonly found in entity | 1) it is a familiar separator character in operational use, and 2) it | |||
handles, and 2) to avoid collisons with URI-reserved characters. The | avoids collision with URI-reserved characters. The list of | |||
list of unreserved characters specified in Section 2.3 of RFC 3986 | unreserved characters specified in Section 2.3 of RFC 3986 [RFC3986] | |||
[RFC3986] provided multiple options for consideration as follows: | provided multiple options for consideration: | |||
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" | unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" | |||
ALPHA and DIGIT characters were excluded because they are commonly | ALPHA and DIGIT characters were excluded because they are commonly | |||
used in entity handles. The "-" (HYPHEN MINUS, U+002D) and "_" (LOW | used in entity handles for non-separator purposes. HYPHEN-MINUS is | |||
LINE, U+005F) characters were also excluded as a result of being | commonly used as a separator and recognition of this practice will | |||
observed in current operational use. The TILDE character was chosen | reduce implementation requirements and operational risk. The | |||
over the "." (FULL STOP, U+002E) character due to the authors' | remaining characters were excluded because they are not broadly used | |||
belief that it is less likely to be in use in entity handles as of | as separators in entity handles. | |||
the time of this writing. | ||||
3. Bootstrap Service Registry for RDAP Service Providers | 3. Bootstrap Service Registry for RDAP Service Providers | |||
The bootstrap service registry for the RDAP service provider space is | The bootstrap service registry for the RDAP service provider space is | |||
represented using the structure specified in Section 3 of RFC 7484 | represented using the structure specified in Section 3 of RFC 7484 | |||
[RFC7484]. The JSON output of this registry contains alphanumeric | [RFC7484]. The JSON output of this registry contains alphanumeric | |||
identifiers that identify RDAP service providers, grouped by base | identifiers that identify RDAP service providers, grouped by base | |||
RDAP URLs, as shown in this example. | RDAP URLs, as shown in this example. | |||
{ | { | |||
skipping to change at page 9, line 5 ¶ | skipping to change at page 9, line 34 ¶ | |||
[ | [ | |||
"https://example.net/rdap/", | "https://example.net/rdap/", | |||
"http://example.net/rdap/" | "http://example.net/rdap/" | |||
] | ] | |||
] | ] | |||
] | ] | |||
} | } | |||
Figure 3 | Figure 3 | |||
Alphanumeric service provider identifiers conform to the syntax | Alphanumeric service provider identifiers conform to the suffix | |||
specified in the IANA registry of Extensible Provisioning Protocol | portion ("\w{1,8}") of the "roidType" syntax specified in Section 4.2 | |||
(EPP) Repository Identifiers [1]. | of RFC 5730 [RFC5730]. | |||
3.1. Registration Procedure | 3.1. Registration Procedure | |||
The service provider registry is populated using the "First Come | The service provider registry is populated using the "First Come | |||
First Served" policy defined in RFC 5226 [RFC5226]. Provider | First Served" policy defined in RFC 8126 [RFC8126]. Provider | |||
identifier values can be derived and assigned by IANA on request. | identifier values can be derived and assigned by IANA on request. | |||
Registration requests include the requested service provider | Registration requests include the requested service provider | |||
identifier (or an indication that IANA should assign an identifier) | identifier (or an indication that IANA should assign an identifier) | |||
and one or more base RDAP URLs to be associated with the service | and one or more base RDAP URLs to be associated with the service | |||
provider identifier. | provider identifier. | |||
4. IANA Considerations | 4. RDAP Conformance | |||
RDAP responses that contain values described in this document MUST | ||||
indicate conformance with this specification by including an | ||||
rdapConformance ([RFC7483]) value of "rdap_objectTag_level_0". The | ||||
information needed to register this value in the RDAP Extensions | ||||
Registry is described in Section 5.2. | ||||
Example rdapConformance structure with extension specified: | ||||
"rdapConformance" : | ||||
[ | ||||
"rdap_level_0", | ||||
"rdap_objectTag_level_0" | ||||
] | ||||
Figure 4 | ||||
5. IANA Considerations | ||||
IANA is requested to create the RDAP Bootstrap Services Registry | IANA is requested to create the RDAP Bootstrap Services Registry | |||
listed below and make it available as JSON objects. The contents of | listed below and make it available as JSON objects. The contents of | |||
this registry is described in Section 3, with the formal syntax | this registry is described in Section 3, with the formal syntax | |||
specified in Section 10 of RFC 7484 [RFC7484]. | specified in Section 10 of RFC 7484 [RFC7484]. | |||
4.1. Bootstrap Service Registry for RDAP Service Providers | 5.1. Bootstrap Service Registry for RDAP Service Providers | |||
Entries in this registry contain at least the following: | Entries in this registry contain at least the following: | |||
o An alphanumeric value that identifies the RDAP service provider | o An alphanumeric value that identifies the RDAP service provider | |||
being registered. | being registered. | |||
o One or more URLs that provide the RDAP service regarding this | o One or more URLs that provide the RDAP service regarding this | |||
registration. | registration. | |||
5. Implementation Status | 5.2. RDAP Extensions Registry | |||
IANA is requested to register the following value in the RDAP | ||||
Extensions Registry: | ||||
Extension identifier: rdap_objectTag | ||||
Registry operator: Any | ||||
Published specification: This document. | ||||
Contact: IESG <iesg@ietf.org> | ||||
Intended usage: This extension describes a best practice for | ||||
structuring entity identifiers to enable query bootstrapping. | ||||
6. 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 RFC 7942 | Internet-Draft, and is based on a proposal described in RFC 7942 | |||
[RFC7942]. The description of implementations in this section is | [RFC7942]. The description of implementations in this section is | |||
intended to assist the IETF in its decision processes in progressing | intended to assist the IETF in its decision processes in progressing | |||
drafts to RFCs. Please note that the listing of any individual | drafts to RFCs. Please note that the listing of any individual | |||
skipping to change at page 10, line 12 ¶ | skipping to change at page 11, line 22 ¶ | |||
implementations or their features. Readers are advised to note that | implementations or their features. Readers are advised to note that | |||
other implementations may exist. | other implementations may 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. Verisign Labs | 6.1. Verisign Labs | |||
Responsible Organization: Verisign Labs | Responsible Organization: Verisign Labs | |||
Location: https://rdap.verisignlabs.com/ | Location: https://rdap.verisignlabs.com/ | |||
Description: This implementation includes support for domain | Description: This implementation includes support for domain | |||
registry RDAP queries using live data from the .cc and .tv country | registry RDAP queries using live data from the .cc and .tv country | |||
code top-level domains. Client authentication is required to | code top-level domains. Client authentication is required to | |||
receive entity information in query responses. | receive entity information in query responses. | |||
Level of Maturity: This is a "proof of concept" research | Level of Maturity: This is a "proof of concept" research | |||
implementation. | 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: Scott Hollenbeck, shollenbeck@verisign.com | Contact Information: Scott Hollenbeck, shollenbeck@verisign.com | |||
5.2. OpenRDAP | 6.2. OpenRDAP | |||
Responsible Organization: OpenRDAP | Responsible Organization: OpenRDAP | |||
Location: https://www.openrdap.org | Location: https://www.openrdap.org | |||
Description: RDAP client implementing bootstrapping for entity | Description: RDAP client implementing bootstrapping for entity | |||
handles with a service provider tag. A test Bootstrap Services | handles with a service provider tag. A test Bootstrap Services | |||
Registry file is currently used in lieu of an official one. | Registry file is currently used in lieu of an official one. | |||
Level of Maturity: Alpha | Level of Maturity: Alpha | |||
Coverage: Implements draft 04+, supports the TILDE separator | Coverage: Implements draft 04+, supports the HYPHEN-MINUS | |||
character only. | separator character only. | |||
Contact Information: Tom Harwood, tfh@skip.org | Contact Information: Tom Harwood, tfh@skip.org | |||
6. Security Considerations | 7. Security Considerations | |||
This practice helps to ensure that end users will get RDAP data from | This practice helps to ensure that end users will get RDAP data from | |||
an authoritative source using a bootstrap method to find | an authoritative source using a bootstrap method to find | |||
authoritative RDAP servers, reducing the risk of sending queries to | authoritative RDAP servers, reducing the risk of sending queries to | |||
non-authoritative sources. The method has the same security | non-authoritative sources. The method has the same security | |||
properties as the RDAP protocols themselves. The transport used to | properties as the RDAP protocols themselves. The transport used to | |||
access the IANA registries can be more secure by using TLS [RFC5246], | access the IANA registries can be more secure by using TLS [RFC5246], | |||
which IANA supports. Additional considerations associated with RDAP | which IANA supports. Additional considerations associated with RDAP | |||
are described in RFC 7481 [RFC7481]. | are described in RFC 7481 [RFC7481]. | |||
7. Acknowledgements | 8. Acknowledgements | |||
The author would like to acknowledge the following individuals for | The author would like to acknowledge the following individuals for | |||
their contributions to the development of this document: Tom | their contributions to the development of this document: Tom | |||
Harrison, and Marcos Sanz. In addition, the authors would like to | Harrison, Patrick Mevzek, and Marcos Sanz. In addition, the authors | |||
recognize the Regional Internet Registry (RIR) operators (AFRINIC, | would like to recognize the Regional Internet Registry (RIR) | |||
APNIC, ARIN, LACNIC, and RIPE) that have been implementing and using | operators (AFRINIC, APNIC, ARIN, LACNIC, and RIPE) that have been | |||
the practice of tagging handle identifiers for several years. Their | implementing and using the practice of tagging handle identifiers for | |||
experience provided significant inspiration for the development of | several years. Their experience provided significant inspiration for | |||
this document. | the development of this document. | |||
8. References | 9. References | |||
8.1. Normative References | 9.1. Normative References | |||
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
IANA Considerations Section in RFCs", RFC 5226, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC5226, May 2008, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc5226>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC5730] Hollenbeck, S., "Extensible Provisioning Protocol (EPP)", | ||||
STD 69, RFC 5730, DOI 10.17487/RFC5730, August 2009, | ||||
<https://www.rfc-editor.org/info/rfc5730>. | ||||
[RFC7484] Blanchet, M., "Finding the Authoritative Registration Data | [RFC7484] Blanchet, M., "Finding the Authoritative Registration Data | |||
(RDAP) Service", RFC 7484, DOI 10.17487/RFC7484, March | (RDAP) Service", RFC 7484, DOI 10.17487/RFC7484, March | |||
2015, <https://www.rfc-editor.org/info/rfc7484>. | 2015, <https://www.rfc-editor.org/info/rfc7484>. | |||
8.2. Informative References | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
Writing an IANA Considerations Section in RFCs", BCP 26, | ||||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | ||||
<https://www.rfc-editor.org/info/rfc8126>. | ||||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
9.2. Informative References | ||||
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
Resource Identifier (URI): Generic Syntax", STD 66, | Resource Identifier (URI): Generic Syntax", STD 66, | |||
RFC 3986, DOI 10.17487/RFC3986, January 2005, | RFC 3986, DOI 10.17487/RFC3986, January 2005, | |||
<https://www.rfc-editor.org/info/rfc3986>. | <https://www.rfc-editor.org/info/rfc3986>. | |||
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
(TLS) Protocol Version 1.2", RFC 5246, | (TLS) Protocol Version 1.2", RFC 5246, | |||
DOI 10.17487/RFC5246, August 2008, | DOI 10.17487/RFC5246, August 2008, | |||
<https://www.rfc-editor.org/info/rfc5246>. | <https://www.rfc-editor.org/info/rfc5246>. | |||
skipping to change at page 12, line 15 ¶ | skipping to change at page 13, line 37 ¶ | |||
[RFC7483] Newton, A. and S. Hollenbeck, "JSON Responses for the | [RFC7483] Newton, A. and S. Hollenbeck, "JSON Responses for the | |||
Registration Data Access Protocol (RDAP)", RFC 7483, | Registration Data Access Protocol (RDAP)", RFC 7483, | |||
DOI 10.17487/RFC7483, March 2015, | DOI 10.17487/RFC7483, March 2015, | |||
<https://www.rfc-editor.org/info/rfc7483>. | <https://www.rfc-editor.org/info/rfc7483>. | |||
[RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running | [RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running | |||
Code: The Implementation Status Section", BCP 205, | Code: The Implementation Status Section", BCP 205, | |||
RFC 7942, DOI 10.17487/RFC7942, July 2016, | RFC 7942, DOI 10.17487/RFC7942, July 2016, | |||
<https://www.rfc-editor.org/info/rfc7942>. | <https://www.rfc-editor.org/info/rfc7942>. | |||
8.3. URIs | ||||
[1] http://www.iana.org/assignments/epp-repository-ids/epp- | ||||
repository-ids.xhtml#epp-repository-ids-1 | ||||
Appendix A. Change Log | Appendix A. Change Log | |||
00: Initial version. | 00: Initial version. | |||
01: Changed separator character from HYPHEN MINUS to COMMERCIAL AT. | 01: Changed separator character from HYPHEN MINUS to COMMERCIAL AT. | |||
Added a recommendation to maintain consistency between service | Added a recommendation to maintain consistency between service | |||
provider tags and "self" links (suggestion received from Tom | provider tags and "self" links (suggestion received from Tom | |||
Harrison). Fixed a spelling error, and corrected the network | Harrison). Fixed a spelling error, and corrected the network | |||
example in Section 2 (editorial erratum reported for RFC 7483 by | example in Section 2 (editorial erratum reported for RFC 7483 by | |||
Marcos Sanz). Added acknowledgements. | Marcos Sanz). Added acknowledgements. | |||
02: Changed separator character from COMMERCIAL AT to TILDE. | 02: Changed separator character from COMMERCIAL AT to TILDE. | |||
Clarity updates and fixed an example handle. Added text to | Clarity updates and fixed an example handle. Added text to | |||
describe the risk of separator characters appearing naturally in | describe the risk of separator characters appearing naturally in | |||
entity handles and being misinterpreted as separator characters. | entity handles and being misinterpreted as separator characters. | |||
03: Added Implementation Status section (Section 5). | 03: Added Implementation Status section (Section 6). | |||
04: Keepalive refresh. | 04: Keepalive refresh. | |||
05: Added OpenRDAP implementation information to Section 5. | 05: Added OpenRDAP implementation information to Section 6. | |||
00: Initial working group version. | 00: Initial working group version. | |||
01: Added text to describe why the TILDE character was chosen as the | 01: Added text to describe why the TILDE character was chosen as the | |||
separator character. | separator character. | |||
02: Nit fixes. Added rdapConformance text, switched back to HYPHEN | ||||
MINUS, and added IANA registration instructions per working group | ||||
last call discussion. Updated suffix syntax reference from the | ||||
IANA EPP ROID registry to RFC 5730 (which is what the IANA | ||||
registry references). | ||||
Authors' Addresses | Authors' Addresses | |||
Scott Hollenbeck | Scott Hollenbeck | |||
Verisign Labs | Verisign Labs | |||
12061 Bluemont Way | 12061 Bluemont Way | |||
Reston, VA 20190 | Reston, VA 20190 | |||
USA | USA | |||
Email: shollenbeck@verisign.com | Email: shollenbeck@verisign.com | |||
End of changes. 43 change blocks. | ||||
96 lines changed or deleted | 148 lines changed or added | |||
This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |