draft-ietf-regext-rdap-object-tag-04.txt | draft-ietf-regext-rdap-object-tag-05.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: January 16, 2019 July 15, 2018 | Expires: February 4, 2019 August 3, 2018 | |||
Registration Data Access Protocol (RDAP) Object Tagging | Registration Data Access Protocol (RDAP) Object Tagging | |||
draft-ietf-regext-rdap-object-tag-04 | draft-ietf-regext-rdap-object-tag-05 | |||
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 updates RFC 7484 by | types are typically unstructured. This document updates RFC 7484 by | |||
skipping to change at page 1, line 40 ¶ | skipping to change at page 1, line 40 ¶ | |||
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 January 16, 2019. | This Internet-Draft will expire on February 4, 2019. | |||
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 | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
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 Provider Object Tags . . . . . 8 | |||
3.1. Registration Procedure . . . . . . . . . . . . . . . . . 9 | 3.1. Registration Procedure . . . . . . . . . . . . . . . . . 9 | |||
4. RDAP Conformance . . . . . . . . . . . . . . . . . . . . . . 9 | 4. RDAP Conformance . . . . . . . . . . . . . . . . . . . . . . 10 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | |||
5.1. Bootstrap Service Registry for RDAP Service Providers . . 10 | 5.1. Bootstrap Service Registry Structure . . . . . . . . . . 10 | |||
5.2. RDAP Extensions Registry . . . . . . . . . . . . . . . . 10 | 5.2. RDAP Extensions Registry . . . . . . . . . . . . . . . . 10 | |||
6. Implementation Status . . . . . . . . . . . . . . . . . . . . 10 | 6. Implementation Status . . . . . . . . . . . . . . . . . . . . 11 | |||
6.1. Verisign Labs . . . . . . . . . . . . . . . . . . . . . . 11 | 6.1. Verisign Labs . . . . . . . . . . . . . . . . . . . . . . 11 | |||
6.2. OpenRDAP . . . . . . . . . . . . . . . . . . . . . . . . 11 | 6.2. OpenRDAP . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12 | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 12 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 12 | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 13 | 9.2. Informative References . . . . . . . . . . . . . . . . . 13 | |||
Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 13 | Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 13 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
skipping to change at page 3, line 24 ¶ | skipping to change at page 3, line 24 ¶ | |||
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 HYPHEN-MINUS | provider tag is constructed by prepending the Unicode HYPHEN-MINUS | |||
character "-" (U+002D, described as an "unreserved" character in RFC | character "-" (U+002D, described as an "unreserved" character in RFC | |||
3986 [RFC3986]) to an IANA-registered value that represents the | 3986 [RFC3986]) to an IANA-registered value that represents the | |||
service provider. For example, a tag for a service provider | service provider. For example, a tag for a service provider | |||
identified by 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 | In combination with the rdapConformance attribute described in | |||
object identifiers to unambiguously identify the authoritative server | Section 4, service provider tags are concatenated to the end of RDAP | |||
for processing an RDAP query. Building on the example from | query object identifiers to unambiguously identify the authoritative | |||
server 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 HYPHEN-MINUS characters; | elements. Handles can themselves contain HYPHEN-MINUS characters; | |||
skipping to change at page 5, line 31 ¶ | skipping to change at page 5, line 33 ¶ | |||
"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-YYY-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": | |||
[ | [ | |||
... | ... | |||
skipping to change at page 8, line 4 ¶ | skipping to change at page 8, line 7 ¶ | |||
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 HYPHEN- | There is a risk of unpredictable processing behavior if the HYPHEN- | |||
MINUS character is used for naturally occurring, non-separator | MINUS character is used for naturally occurring, non-separator | |||
purposes in an entity handle. This could lead to a client mistakenly | purposes in an entity handle. This could lead to a client mistakenly | |||
assuming that a HYPHEN-MINUS character represents a separator and the | assuming that a HYPHEN-MINUS character represents a separator and the | |||
text that follows HYPHEN-MINUS is a service provider identifier. A | text that follows HYPHEN-MINUS is a service provider identifier. A | |||
client that queries the IANA registry for what they assume is a valid | client that queries the IANA registry for what they assume is a valid | |||
service provider will likely receive an unexpected, invalid result. | service provider will likely receive an unexpected, invalid result. | |||
As a consequence, use of the HYPHEN-MINUS character as a service | As a consequence, use of the HYPHEN-MINUS character as a service | |||
provider tag separator MUST be noted by adding rdapConformance value | provider tag separator MUST be noted by adding an rdapConformance | |||
to query responses as described in Section 4. | value to query responses as described in Section 4. | |||
The HYPHEN-MINUS character was chosen as a separator for two reasons: | The HYPHEN-MINUS character was chosen as a separator for two reasons: | |||
1) it is a familiar separator character in operational use, and 2) it | 1) it is a familiar separator character in operational use, and 2) it | |||
avoids collision with URI-reserved characters. The list of | avoids collision with URI-reserved characters. The list of | |||
unreserved characters specified in Section 2.3 of RFC 3986 [RFC3986] | unreserved characters specified in Section 2.3 of RFC 3986 [RFC3986] | |||
provided multiple options for consideration: | 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 for non-separator purposes. HYPHEN-MINUS is | used in entity handles for non-separator purposes. HYPHEN-MINUS is | |||
commonly used as a separator and recognition of this practice will | commonly used as a separator and recognition of this practice will | |||
reduce implementation requirements and operational risk. The | reduce implementation requirements and operational risk. The | |||
remaining characters were excluded because they are not broadly used | remaining characters were excluded because they are not broadly used | |||
as separators in entity handles. | as separators in entity handles. | |||
3. Bootstrap Service Registry for RDAP Service Providers | 3. Bootstrap Service Registry for Provider Object Tags | |||
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 contact | |||
identifiers that identify RDAP service providers, grouped by base | information for the registered service provider identifiers, | |||
RDAP URLs, as shown in this example. | alphanumeric identifiers that identify RDAP service providers, and | |||
base RDAP service URLs as shown in this example. | ||||
{ | { | |||
"version": "1.0", | "version": "1.0", | |||
"publication": "YYYY-MM-DDTHH:MM:SSZ", | "publication": "YYYY-MM-DDTHH:MM:SSZ", | |||
"description": "RDAP service provider bootstrap values", | "description": "RDAP bootstrap file for service provider object tags", | |||
"services": [ | "services": [ | |||
[ | [ | |||
["YYYY"], | ["contact@example.com"], | |||
[ | ["YYYY"], | |||
"https://example.com/rdap/" | [ | |||
] | "https://example.com/rdap/" | |||
], | ] | |||
[ | ], | |||
["ZZ54"], | [ | |||
[ | ["contact@example.org"], | |||
"http://rdap.example.org/" | ["ZZ54"], | |||
] | [ | |||
], | "http://rdap.example.org/" | |||
[ | ] | |||
["1754"], | ], | |||
[ | [ | |||
"https://example.net/rdap/", | ["contact@example.net"], | |||
"http://example.net/rdap/" | ["1754"], | |||
] | [ | |||
] | "https://example.net/rdap/", | |||
] | "http://example.net/rdap/" | |||
} | ] | |||
] | ||||
] | ||||
} | ||||
Figure 3 | Figure 3 | |||
Alphanumeric service provider identifiers conform to the suffix | Alphanumeric service provider identifiers conform to the suffix | |||
portion ("\w{1,8}") of the "roidType" syntax specified in Section 4.2 | portion ("\w{1,8}") of the "roidType" syntax specified in Section 4.2 | |||
of RFC 5730 [RFC5730]. | 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 8126 [RFC8126]. 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 an email address to be associated with | |||
identifier (or an indication that IANA should assign an identifier) | the registered service provider identifier, the requested service | |||
and one or more base RDAP URLs to be associated with the service | provider identifier (or an indication that IANA should assign an | |||
provider identifier. | identifier), and one or more base RDAP URLs to be associated with the | |||
service provider identifier. | ||||
4. RDAP Conformance | 4. RDAP Conformance | |||
RDAP responses that contain values described in this document MUST | RDAP responses that contain values described in this document MUST | |||
indicate conformance with this specification by including an | indicate conformance with this specification by including an | |||
rdapConformance ([RFC7483]) value of "rdap_objectTag_level_0". The | rdapConformance ([RFC7483]) value of "rdap_objectTag_level_0". The | |||
information needed to register this value in the RDAP Extensions | information needed to register this value in the RDAP Extensions | |||
Registry is described in Section 5.2. | Registry is described in Section 5.2. | |||
Example rdapConformance structure with extension specified: | Example rdapConformance structure with extension specified: | |||
skipping to change at page 10, line 19 ¶ | skipping to change at page 10, line 25 ¶ | |||
"rdapConformance" : | "rdapConformance" : | |||
[ | [ | |||
"rdap_level_0", | "rdap_level_0", | |||
"rdap_objectTag_level_0" | "rdap_objectTag_level_0" | |||
] | ] | |||
Figure 4 | Figure 4 | |||
5. IANA Considerations | 5. IANA Considerations | |||
IANA is requested to create the RDAP Bootstrap Services Registry | IANA is requested to create the RDAP "Bootstrap Service Registry for | |||
listed below and make it available as JSON objects. The contents of | Provider Object Tags" listed below and make it available as JSON | |||
this registry is described in Section 3, with the formal syntax | objects. The contents of this registry is described in Section 3, | |||
specified in Section 10 of RFC 7484 [RFC7484]. | with the formal syntax specified in Section 10 of RFC 7484 [RFC7484]. | |||
5.1. Bootstrap Service Registry for RDAP Service Providers | 5.1. Bootstrap Service Registry Structure | |||
Entries in this registry contain at least the following: | Entries in this registry contain the following information: | |||
o An email address that identifies a contact associated with the | ||||
registered RDAP service provider value. | ||||
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. The URLS are expected to supply the same data, but | |||
they can differ in scheme or other components as required by the | ||||
service operator. | ||||
5.2. RDAP Extensions Registry | 5.2. RDAP Extensions Registry | |||
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: rdap_objectTag | Extension identifier: rdap_objectTag | |||
Registry operator: Any | Registry operator: Any | |||
Published specification: This document. | Published specification: This document. | |||
Contact: IESG <iesg@ietf.org> | Contact: IESG <iesg@ietf.org> | |||
skipping to change at page 12, line 7 ¶ | skipping to change at page 12, line 14 ¶ | |||
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 HYPHEN-MINUS | Coverage: Implements draft 04+, supports the HYPHEN-MINUS | |||
separator character only. | separator character only. | |||
Contact Information: Tom Harwood, tfh@skip.org | Contact Information: Tom Harwood, tfh@skip.org | |||
7. Security Considerations | 7. Security Considerations | |||
This practice helps to ensure that end users will get RDAP data from | This practice uses IANA as a well-known, central trusted authority to | |||
an authoritative source using a bootstrap method to find | allow users to get RDAP data from an authoritative source, reducing | |||
authoritative RDAP servers, reducing the risk of sending queries to | the risk of sending queries to non-authoritative sources and | |||
non-authoritative sources. The method has the same security | divulging query information to unintended parties. Using TLS | |||
properties as the RDAP protocols themselves. The transport used to | [RFC5246] to protect the connection to IANA allows the server to | |||
access the IANA registries can be more secure by using TLS [RFC5246], | authenticate itself as being operated by IANA and provides integrity | |||
which IANA supports. Additional considerations associated with RDAP | protection for the resulting referral information, as well as | |||
are described in RFC 7481 [RFC7481]. | providing privacy protection via data confidentiality. The | |||
subsequent RDAP connection is performed as usual, and retains the | ||||
same security properties of the RDAP protocols themselves. | ||||
8. 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, Patrick Mevzek, and Marcos Sanz. In addition, the authors | Harrison, Patrick Mevzek, and Marcos Sanz. In addition, the authors | |||
would like to recognize the Regional Internet Registry (RIR) | would like to recognize the Regional Internet Registry (RIR) | |||
operators (AFRINIC, APNIC, ARIN, LACNIC, and RIPE) that have been | operators (AFRINIC, APNIC, ARIN, LACNIC, and RIPE) that have been | |||
implementing and using the practice of tagging handle identifiers for | implementing and using the practice of tagging handle identifiers for | |||
several years. Their experience provided significant inspiration for | several years. Their experience provided significant inspiration for | |||
skipping to change at page 14, line 4 ¶ | skipping to change at page 14, line 13 ¶ | |||
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 6). | 03: Added Implementation Status section (Section 6). | |||
04: Keepalive refresh. | 04: Keepalive refresh. | |||
05: Added OpenRDAP implementation information to Section 6. | 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 | 02: Nit fixes. Added rdapConformance text, switched back to HYPHEN | |||
MINUS, and added IANA registration instructions per working group | MINUS, and added IANA registration instructions per working group | |||
last call discussion. Updated suffix syntax reference from the | last call discussion. Updated suffix syntax reference from the | |||
IANA EPP ROID registry to RFC 5730 (which is what the IANA | IANA EPP ROID registry to RFC 5730 (which is what the IANA | |||
registry references). | registry references). | |||
03: Shephered writeup review updates to explain examples in | 03: Shepherd writeup review updates to explain examples in | |||
Section 2. | Section 2. | |||
04: AD review update to clarify query path construction. | 04: AD review update to clarify query path construction. | |||
05: IESG review update: object naming practice, revised an example | ||||
to include multiple separator HYPHEN-MINUS characters, revised | ||||
security considerations, revised IANA considerations, revised IANA | ||||
registry description and registration procedure to add email | ||||
address contact information. | ||||
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. 24 change blocks. | ||||
65 lines changed or deleted | 80 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |