mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
1180 lines
41 KiB
Plaintext
1180 lines
41 KiB
Plaintext
|
||
|
||
|
||
|
||
|
||
|
||
Network Working Group A. Newton
|
||
Request for Comments: 3663 VeriSign, Inc.
|
||
Category: Experimental December 2003
|
||
|
||
|
||
Domain Administrative Data
|
||
in Lightweight Directory Access Protocol (LDAP)
|
||
|
||
Status of this Memo
|
||
|
||
This memo defines an Experimental Protocol for the Internet
|
||
community. It does not specify an Internet standard of any kind.
|
||
Discussion and suggestions for improvement are requested.
|
||
Distribution of this memo is unlimited.
|
||
|
||
Copyright Notice
|
||
|
||
Copyright (C) The Internet Society (2003). All Rights Reserved.
|
||
|
||
Abstract
|
||
|
||
Domain registration data has typically been exposed to the general
|
||
public via Nicname/Whois for administrative purposes. This document
|
||
describes the Referral Lightweight Directory Access Protocol (LDAP)
|
||
Service, an experimental service using LDAP and well-known LDAP types
|
||
to make domain administrative data available.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 1]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
Table of Contents
|
||
|
||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||
1.1. Historical Directory Services for Domain Registration
|
||
Data . . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||
1.2. Motivations. . . . . . . . . . . . . . . . . . . . . . . 3
|
||
1.3. Abbreviations Used . . . . . . . . . . . . . . . . . . . 4
|
||
2. Service Description. . . . . . . . . . . . . . . . . . . . . . 4
|
||
3. Registry LDAP Service. . . . . . . . . . . . . . . . . . . . . 6
|
||
3.1. TLD DIT. . . . . . . . . . . . . . . . . . . . . . . . . 6
|
||
3.1.1. DIT Structure. . . . . . . . . . . . . . . . . . 6
|
||
3.1.2. Allowed Searches . . . . . . . . . . . . . . . . 7
|
||
3.1.3. Access Control . . . . . . . . . . . . . . . . . 7
|
||
3.2. Name Server DIT. . . . . . . . . . . . . . . . . . . . . 8
|
||
3.2.1. DIT Structure. . . . . . . . . . . . . . . . . . 8
|
||
3.2.2. Allowed Searches . . . . . . . . . . . . . . . . 8
|
||
3.3. Registrar Referral DIT . . . . . . . . . . . . . . . . . 9
|
||
3.3.1. DIT Structure. . . . . . . . . . . . . . . . . . 9
|
||
4. Registrar LDAP Service . . . . . . . . . . . . . . . . . . . . 10
|
||
4.1. TLD DIT. . . . . . . . . . . . . . . . . . . . . . . . . 10
|
||
4.1.1. DIT Structure. . . . . . . . . . . . . . . . . . 10
|
||
4.1.2. Allowed Searches . . . . . . . . . . . . . . . . 11
|
||
4.1.3. Access Control . . . . . . . . . . . . . . . . . 11
|
||
4.2. Name Server and Contact DIT. . . . . . . . . . . . . . . 12
|
||
4.2.1. DIT Structure. . . . . . . . . . . . . . . . . . 12
|
||
4.2.2. Allowed Searches . . . . . . . . . . . . . . . . 13
|
||
5. Clients. . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
|
||
6. Lessons Learned. . . . . . . . . . . . . . . . . . . . . . . . 14
|
||
6.1. Intra-Server Referrals . . . . . . . . . . . . . . . . . 14
|
||
6.2. Inter-Server Referrals . . . . . . . . . . . . . . . . . 15
|
||
6.3. Common DIT . . . . . . . . . . . . . . . . . . . . . . . 15
|
||
6.4. Universal Client . . . . . . . . . . . . . . . . . . . . 16
|
||
6.5. Targeting Searches by Tier . . . . . . . . . . . . . . . 16
|
||
6.6. Data Mining. . . . . . . . . . . . . . . . . . . . . . . 16
|
||
7. IANA Considerations. . . . . . . . . . . . . . . . . . . . . . 16
|
||
8. Internationalization Considerations. . . . . . . . . . . . . . 16
|
||
9. Security Considerations. . . . . . . . . . . . . . . . . . . . 17
|
||
10. Intellectual Property Statement. . . . . . . . . . . . . . . . 17
|
||
11. Normative References . . . . . . . . . . . . . . . . . . . . . 18
|
||
Appendix A. Other Work. . . . . . . . . . . . . . . . . . . . . . 19
|
||
Appendix B. Acknowledgments . . . . . . . . . . . . . . . . . . . 19
|
||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 20
|
||
Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 21
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 2]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
1. Introduction
|
||
|
||
This document describes the Referral Lightweight Directory Access
|
||
Protocol (LDAP) Service, an experimental project launched by
|
||
VeriSign, Inc., to explore the use of LDAP and LDAP-related
|
||
technologies for use as a directory service of administrative domain
|
||
registration information.
|
||
|
||
1.1. Historical Directory Services for Domain Registration Data
|
||
|
||
The original National Science Foundation contract for the InterNIC
|
||
called for the creation of an X.500 directory service for the
|
||
administrative needs of the domain registration data and information.
|
||
Due to problems with implementations of X.500 server software, a
|
||
server based on the Nicname/Whois [1] protocol was temporarily
|
||
erected.
|
||
|
||
In 1994, the Rwhois [3] protocol was introduced to enhance the
|
||
Nicname/Whois protocol. This directory service never gained wide
|
||
acceptance for use with domain data.
|
||
|
||
Presently, ICANN requires the operation of Nicname/Whois servers by
|
||
registries and registrars of generic Top-Level Domains (TLD's).
|
||
|
||
1.2. Motivations
|
||
|
||
With the recent split in functional responsibilities between
|
||
registries and registrars, the constant misuse and data-mining of
|
||
domain registration data, and the difficulties with machine-
|
||
readability of Nicname/Whois output, the creation of the Referral
|
||
LDAP Service had the following motivations:
|
||
|
||
o Use a mechanism native to the directory protocol to refer clients
|
||
from inquiries about specific domains made at a registry to the
|
||
appropriate domain within the appropriate directory service at a
|
||
registrar.
|
||
|
||
o Limit access to domain data based on authentication of the client.
|
||
|
||
o Provide structured queries and well-known and structured results.
|
||
|
||
o Use a directory service technology already in general use.
|
||
|
||
Given these general criteria, LDAP [5] was selected as the protocol
|
||
for this directory service. The decision was also made to restrict
|
||
the use of LDAP to features most readily available in common
|
||
implementations. Therefore, a goal was set to not define any new
|
||
object classes, syntaxes, or matching rules.
|
||
|
||
|
||
|
||
Newton Experimental [Page 3]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
The experiment was successful in exploring how LDAP might be used in
|
||
this context and demonstrating the level of customization required
|
||
for an operational service. Conclusions and observations about this
|
||
experiment are outlined in Section 6.
|
||
|
||
1.3. Abbreviations Used
|
||
|
||
The following abbreviations are used to describe the nature of this
|
||
experiment:
|
||
|
||
TLD: Top-Level Domain. Refers to the domain names just beneath
|
||
the root in the Domain Name System. This experiment used the
|
||
TLD's .com, .net, .org, and .edu.
|
||
|
||
SLD: Second-Level Domain. Refers to the domain names just beneath
|
||
a TLD in the Domain Name System. An example of such a domain name
|
||
would be "example.com".
|
||
|
||
DIT: Directory Information Tree. One of many hierarchies of data
|
||
entries in an LDAP server.
|
||
|
||
DN: Distinguished Name. The unique name of an entry in a DIT.
|
||
|
||
cn: common name. See RFC 2256 [7].
|
||
|
||
dc: domain component. See RFC 2247 [4].
|
||
|
||
uid: user id. See RFC 2798 [9].
|
||
|
||
2. Service Description
|
||
|
||
The service is composed of three distinct server types: a registry
|
||
LDAP server, registrar LDAP servers, and registrant LDAP servers.
|
||
|
||
The registry LDAP server contains three Directory Information Trees
|
||
(DIT's).
|
||
|
||
o The Top-Level Domain DIT's follow the DNS hierarchy for domains
|
||
(e.g., dc=foo,dc=com).
|
||
|
||
o The name server DIT allows a view of the name servers, many of
|
||
which serve multiple domains.
|
||
|
||
o The registrar-referral DIT provides referrals from the registry
|
||
into the respective TLD DIT of the registrars (on a TLD basis).
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 4]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
The registrar LDAP server contains two types of DIT's.
|
||
|
||
o The TLD DIT follows the DNS hierarchy for domains (e.g.,
|
||
dc=foo,dc=com) and parallels the TLD DIT of the registry.
|
||
|
||
o The name server and contact DIT allow a view of the name servers
|
||
and contacts, many of which are associated and serve multiple
|
||
domains.
|
||
|
||
There is no specification on the DIT or schema for the registrant
|
||
LDAP server. Referrals from the registrar server to the registrant
|
||
server are provided solely for the purpose of allowing the registrant
|
||
direct control over extra administrative information as it relates to
|
||
a particular domain.
|
||
|
||
Access control for this service is merely a demonstration of using a
|
||
Distinguished Name (DN) and password. Should registries and
|
||
registrars uniformly adopt LDAP as a means to disseminate domain
|
||
registration data, standardization of these DN's would need to be
|
||
undertaken based on each type of user base.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 5]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
3. Registry LDAP Service
|
||
|
||
3.1. TLD DIT
|
||
|
||
3.1.1. DIT Structure
|
||
|
||
The registry TLD DIT has the following structural hierarchy:
|
||
|
||
TLD (e.g., dc=net)
|
||
|
|
||
|
|
||
-------------------------------------
|
||
| |
|
||
SLD (e.g., dc=foo,dc=net) SLD (e.g., dc=bar,dc=net)
|
||
| |
|
||
--------------------- ---------------------
|
||
| | | | | |
|
||
name server | | name server | |
|
||
(e.g., | | (e.g., | |
|
||
cn=nameserver1, | | cn=nameserver1, | |
|
||
dc=foo,dc=net ) | | dc=bar,dc=net ) | |
|
||
| | | |
|
||
name server | name server |
|
||
(e.g., | (e.g., |
|
||
cn=nameserver2, | cn=nameserver2, |
|
||
dc=foo,dc=net ) | dc=bar,dc=net ) |
|
||
| |
|
||
registrar referral registrar referral
|
||
(e.g., (e.g.,
|
||
cn=registrar, cn=registrar,
|
||
dc=foo,dc=net ) dc=bar,dc=net )
|
||
|
||
|
||
Figure 1: Registry DIT Overview
|
||
|
||
The root of a TLD DIT is an entry of objectclass domain as specified
|
||
by RFC 2247 [4] and represents a top-level domain.
|
||
|
||
The second tier of the DIT represents second-level domains. Each of
|
||
these entries is of objectclass domain as specified by RFC 2247 [4].
|
||
The description attribute on these entries often contains descriptive
|
||
text giving the name of the registrar through which these domains
|
||
have been registered.
|
||
|
||
The third tier contains entries specific to each second-level domain.
|
||
Name server entries are of objectclass ipHost as specified by RFC
|
||
2307 [8]. The distinguished names of these name server entries are
|
||
algorithmically calculated, where the first component is the word
|
||
|
||
|
||
|
||
Newton Experimental [Page 6]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
"nameserver" concatenated with an index number of the name server
|
||
entry and the remaining components are the appropriate domain names.
|
||
There is no specification relating the value of the name server entry
|
||
to the index it may be assigned other than it is unique and
|
||
consistent with respect to the client session. This tier also
|
||
contains the referral from the registry to the registrar. This
|
||
referral is a direct referral to the entry in the appropriate
|
||
registrar LDAP server corresponding to the domain name that the
|
||
referral falls beneath in this DIT.
|
||
|
||
3.1.2. Allowed Searches
|
||
|
||
Because of the vast number of entries contained within this DIT, only
|
||
certain types of searches are allowed. Allowing any search
|
||
expressible via LDAP would lead to expensive searches that would be
|
||
far too costly for a publicly available service. The searches
|
||
allowed are as follows:
|
||
|
||
o One-level scoped searches based at the root of the DIT. Substring
|
||
matching is allowed on dc attributes, but the substring must be at
|
||
least be 3 characters in length.
|
||
|
||
o Base search based at the root of the DIT.
|
||
|
||
o Base, one-level, and sub-tree searches based at any second level
|
||
domain name (the second tier) and below.
|
||
|
||
3.1.3. Access Control
|
||
|
||
The registry TLD DIT only has one access control type. When a client
|
||
binds with a DN of "cn=trademark" and password of "attorney", the
|
||
second-level domain entries also take on an objectclass of
|
||
extensibleObject with the added attributes of "createddate" and
|
||
"registrationexpirationdate", which are of type Generalized Time, as
|
||
specified by RFC 2252 [6].
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 7]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
3.2. Name Server DIT
|
||
|
||
3.2.1. DIT Structure
|
||
|
||
The registry name server DIT has the following structural hierarchy:
|
||
|
||
(o=nsiregistry.com)
|
||
|
|
||
|
|
||
-------------------------------------
|
||
| | |
|
||
name server name server name server
|
||
(cn=ns1.foo.net) (cn=ns.bar.com) (cn=named.acme.org)
|
||
|
||
|
||
Figure 2: Registry DIT Overview
|
||
|
||
The root of a name server DIT is an entry of objectclass organization
|
||
as specified by RFC 1617 [2]. It has no significance other than to
|
||
serve as the root of the DIT.
|
||
|
||
The second tier of this DIT represents name servers. Each of these
|
||
entries is of objectclass ipHost, as specified by RFC 2307 [8].
|
||
|
||
3.2.2. Allowed Searches
|
||
|
||
Because of the vast number of entries contained within this DIT, only
|
||
certain types of searches are allowed. Allowing any search
|
||
expressible via LDAP would lead to searches far too costly for a
|
||
publicly available service. The searches allowed are as follows:
|
||
|
||
o One-level and sub-tree scoped searches based at the root of the
|
||
DIT if a filter on the cn attribute is provided.
|
||
|
||
o Base search based at the root of the DIT.
|
||
|
||
o Base, one-level, and sub-tree searches based at any name server
|
||
entry.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 8]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
3.3. Registrar Referral DIT
|
||
|
||
3.3.1. DIT Structure
|
||
|
||
The registry registrar-referral DIT has the following structural
|
||
hierarchy:
|
||
|
||
(o=tlds)
|
||
|
|
||
|
|
||
-------------------------------
|
||
| | | |
|
||
tld tld tld tld
|
||
(dc=net) (dc=com) (dc=org) (dc=edu)
|
||
| | | |
|
||
: : | :
|
||
: : | :
|
||
|
|
||
---------------------------
|
||
| | |
|
||
referral to referral to referral to
|
||
registrar 1 registrar 2 registrar n
|
||
dc=org DIT dc=org DIT dc=org DIT
|
||
|
||
|
||
Figure 3: Registry Referral DIT Overview
|
||
|
||
The root of the registrar referral DIT is an entry of objectclass
|
||
organization, as specified by RFC 1617 [2]. It has no significance
|
||
other than to serve as the root of this DIT.
|
||
|
||
The second tier of this DIT represents top-level domains. Each of
|
||
these entries is of objectclass domain, as specified by RFC 2247 [4].
|
||
|
||
Underneath each TLD entry, the third tier contains referrals to the
|
||
appropriate TLD DIT of each registrar.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 9]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
4. Registrar LDAP Service
|
||
|
||
4.1. TLD DIT
|
||
|
||
4.1.1. DIT Structure
|
||
|
||
The registrar TLD DIT, which is similar to the registry TLD DIT, has
|
||
the following structural hierarchy:
|
||
|
||
TLD (e.g., dc=net)
|
||
|
|
||
|
|
||
------------------------------------------------
|
||
| | |
|
||
SLD (e.g., dc=foo,dc=net) : :
|
||
| : :
|
||
---------------------------------------------
|
||
| | |
|
||
| | |
|
||
name server contact referral to
|
||
(e.g., cn=nameserver1, (e.g., cn=contact1, registrant
|
||
dc=foo,dc=net ) dc=foo,dc=net )
|
||
|
|
||
|
|
||
name server contact
|
||
(e.g., cn=contact,
|
||
cn=nameserver1,
|
||
dc=foo,dc=net )
|
||
|
||
Figure 4: Registrar DIT Overview
|
||
|
||
The root of a TLD DIT is an entry of objectclass domain, as specified
|
||
by RFC 2247 [4] and represents a top-level domain.
|
||
|
||
The second tier of the DIT represents second-level domains. Each of
|
||
these entries is of objectclass domain, as specified by RFC 2247 [4].
|
||
|
||
The third tier contains entries specific to each second-level domain.
|
||
The entries at this level are as follows:
|
||
|
||
o Name server entries are of objectclass ipHost, as specified by RFC
|
||
2307 [8]. The distinguished names of these name server entries
|
||
are algorithmically calculated where the first component is the
|
||
word "nameserver" concatenated with an index number of the name
|
||
server entry and the remaining components are the appropriate
|
||
domain names. There is no specification relating the value of the
|
||
name server entry to the index it may be assigned other than it is
|
||
unique and consistent with respect to the client session.
|
||
|
||
|
||
|
||
Newton Experimental [Page 10]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
o Contact entries are of objectclass inetOrgPerson, as specified by
|
||
RFC 2798 [9]. The distinguished names of these contact entries
|
||
are algorithmically calculated, where the first component is the
|
||
word "contact" concatenated with an index number of the contact
|
||
and the remaining components are the appropriate domain names.
|
||
There is no specification relating the value of the contact entry
|
||
to the index it may be assigned other than it is unique and
|
||
consistent with respect to the client session. The description
|
||
attribute of the entry contains the role for which a contact is
|
||
related to a domain. These roles are identified as "Admin
|
||
Contact", "Technical Contact", and "Billing Contact", and may
|
||
appear in any order.
|
||
|
||
o Finally, this third tier contains the referral from the registrar
|
||
to the registrant.
|
||
|
||
The fourth tier only contains name server contact entries. These
|
||
entries are of objectclass inetOrgPerson, as specified by RFC 2798
|
||
[9].
|
||
|
||
4.1.2. Allowed Searches
|
||
|
||
Because of the vast number of entries contained within this DIT, only
|
||
certain types of searches are allowed. Allowing any search
|
||
expressible via LDAP would lead to searches far too costly for a
|
||
publicly available service. The searches allowed are as follows:
|
||
|
||
o One-level scoped searches based at the root of the DIT. Substring
|
||
matching is allowed on dc and o attributes, but the substring must
|
||
be at least 3 characters in length.
|
||
|
||
o Base search based at the root of the DIT.
|
||
|
||
o Base, one-level, and sub-tree searches based at any second level
|
||
domain name (the second tier) and below.
|
||
|
||
4.1.3. Access Control
|
||
|
||
The registrar TLD DIT has two access control types. When binding
|
||
anonymously, a client only sees dc, o, and c attributes of the
|
||
second-level domain entries. When a client binds with a DN of
|
||
"cn=trademark" and password of "attorney", all of the other
|
||
attributes normally available on entries of objectclass domain are
|
||
visible if they have values. In addition, if a client binds with the
|
||
DN of a contact and password of "password", all attributes for
|
||
second-level domain entries for which the bind DN has a relation are
|
||
visible.
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 11]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
4.2. Name Server and Contact DIT
|
||
|
||
4.2.1. DIT Structure
|
||
|
||
The registrar name server and contact DIT has the following
|
||
structural hierarchy:
|
||
|
||
(o=nsi.com)
|
||
|
|
||
|
|
||
--------------------------------------
|
||
| |
|
||
Contacts Name Servers
|
||
(ou=contacts) (ou=name servers)
|
||
| |
|
||
----------------- ------------------------
|
||
| | | | | |
|
||
Contact : : Name Server : :
|
||
(uid=handle) : : (cn=handle) : :
|
||
|
|
||
Name Server
|
||
Contact
|
||
(cn=contact1)
|
||
|
||
Figure 5: Registrar DIT Overview
|
||
|
||
The first tier of the name server and contact DIT is an entry of
|
||
objectclass organization, as specified by RFC 1617 [2].
|
||
|
||
The second tier of the DIT contains two entries, each of which is of
|
||
objectclass organizationalUnit, as specified by RFC 2256 [7]. One
|
||
entry represents the part of the DIT containing contacts and the
|
||
other entry represents the part of the DIT containing name servers.
|
||
|
||
Entries underneath the contacts organizationalUnit entry are of
|
||
objectclass inetOrgPerson and represent contacts registered with the
|
||
registrar. Their RDN is composed of the uid attribute. The uid
|
||
attribute's value is a unique identifier or handle that is registrar
|
||
assigned.
|
||
|
||
Entries underneath the name server organizationalUnit entry are of
|
||
objectclass ipHost and represent name servers registered with the
|
||
registrar. Their RDN is composed of the cn attribute. The cn
|
||
attribute's value is a unique identifier or handle that is registrar
|
||
assigned. Each name server entry may optionally have children
|
||
entries of objectclass inetOrgPerson. These entries represent the
|
||
contacts of the name server they fall beneath.
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 12]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
4.2.2. Allowed Searches
|
||
|
||
Because of the vast number of entries contained within this DIT, only
|
||
certain types of searches are allowed. Allowing any search
|
||
expressible via LDAP would lead to searches far too costly for a
|
||
publicly available service. The searches allowed are as follows:
|
||
|
||
o One-level and base searches at the root of the DIT.
|
||
|
||
o Sub-tree searches at the root of the DIT using cn and uid
|
||
attributes as a filter.
|
||
|
||
o Base searches at either entry of the second tier.
|
||
|
||
o One-level and sub-tree searches at either entry of the second
|
||
tier, using cn or uid attributes as a filter.
|
||
|
||
o Base, one-level, and sub-tree searches based at any contact or
|
||
name server entry and below.
|
||
|
||
5. Clients
|
||
|
||
Early scoping and analysis of this project were based on the use of
|
||
output from command line clients, specifically the "ldapsearch"
|
||
command present with many implementations of LDAP servers. Our
|
||
survey of this tool, available from many vendors, showed that
|
||
referral chasing was difficult to control or predict, and the
|
||
behavior between these implementations with respect to referral
|
||
chasing was inconsistent.
|
||
|
||
Based on the limited nature of the expressive capabilities present
|
||
with just command line tools, searches involving nested queries or
|
||
advanced referral chasing were deemed the domain of clients making
|
||
direct use of LDAP client libraries. Three of these types of clients
|
||
were produced: a web-based client, a cross-platform C-based client,
|
||
and a Java client. No significant deficiencies or problems were
|
||
found with the LDAP client libraries in the construction of these
|
||
clients, and the level of control provided by their programming
|
||
interfaces was adequate to create the necessary searches. Instead,
|
||
most of the problems encountered with these clients were based on
|
||
usability concerns.
|
||
|
||
It was found that the web-based client caused a great amount of
|
||
confusion for users not familiar with LDAP or Nicname/Whois with
|
||
respect to the underlying technology and the network model. Thus,
|
||
many users believed the web-based client to be the only interface to
|
||
the data and were unaware or confused by the intermediate LDAP
|
||
protocol. In addition, it was difficult to express to users the
|
||
|
||
|
||
|
||
Newton Experimental [Page 13]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
registry-registrar-registrant service model in adequate terms from
|
||
search results where the results could be rendered properly among the
|
||
various common web browsers.
|
||
|
||
Both the C and Java based clients were built to be both graphical and
|
||
cross-platform (in the case of the C-based client, the Linux and
|
||
Windows platforms were chosen as targets). The LDAP client libraries
|
||
chosen for both clients proved to be quite capable and offered the
|
||
necessary levels of control for conducting nested queries and
|
||
advanced referral chasing. Expectations at the outset for
|
||
construction of both clients, based on past experience, were that the
|
||
C-based client would not only perform better than the Java client but
|
||
also have a better appearance. In reality, these assumptions were
|
||
incorrect as there was no perceivable difference in performance and
|
||
the look of the Java client was often considered to be far superior
|
||
to its counter-part. In addition, the Java client required much less
|
||
time to create. Both clients are available under the terms of an
|
||
open source license. Though it is impossible to have accurate
|
||
measurements of their popularity, through monitoring and feedback it
|
||
was perceived that the web-based client had far greater use.
|
||
|
||
6. Lessons Learned
|
||
|
||
Based on the experience of piloting this experimental service,
|
||
feedback from users of the service, and general comments and
|
||
observations of current and common opinions, the following items have
|
||
been noted.
|
||
|
||
6.1. Intra-Server Referrals
|
||
|
||
Original analysis of the data set to be used revealed a high degree
|
||
of relationships between name servers, contacts, and domains.
|
||
Storing the data in non-normalized form according to the DIT outlined
|
||
in this document would make an original relational dataset of roughly
|
||
20 million objects explode to over 115 million objects.
|
||
|
||
To combat this problem, the first pass at defining the DIT's made
|
||
heavy use of referrals between the TLD DIT's and the name server and
|
||
contact DIT's. The use of the 'alias' objectclass was considered but
|
||
ruled out in hopes of using referrals for load balancing across
|
||
servers (i.e., placing each TLD DIT on a separate server, and
|
||
separate servers for the name server and contact DIT's). However,
|
||
initial testing with the 'ldapsearch' command found inconsistencies
|
||
with the interpretation of the referrals and how they were managed.
|
||
Not only were the results inconsistent between implementations, but
|
||
many of these clients would easily get caught in referral loops.
|
||
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 14]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
The final solution to the problem was to create a customized back-end
|
||
data store containing the data in a normalized form. This gave the
|
||
client the appearance of having a non-normalized data set which
|
||
required no intra-server referrals. Aliases may have been a better
|
||
solution, however our interpretation of their output with
|
||
implementations of the 'ldapsearch' tool was not satisfactory. It
|
||
was also later learned that some LDAP server implementations place
|
||
certain restrictions on aliases that would have conflicted with our
|
||
overall DIT structure. In the end, it was felt that a customized
|
||
back-end would be required by any server with a large data-set, but
|
||
smaller data-sets for less populated domains could easily use off-
|
||
the-shelf implementations.
|
||
|
||
6.2. Inter-Server Referrals
|
||
|
||
The modeling of the overall service to provide the split in
|
||
operational responsibility between registry and registrar required
|
||
the use of referrals (i.e., the two servers would not be operated by
|
||
the same organization, therefore would most likely not co-exist on
|
||
the same physical machine or network). The chief problem with LDAP
|
||
referrals returned for this purpose grew out of the need to limit
|
||
data returned to the client and the priority given to referrals. It
|
||
was quite easy to cause a sub-tree query at certain levels, for
|
||
instance a TLD level, to return nothing but referrals. This was true
|
||
because referrals would be returned out of the scope of the supplied
|
||
search filter and therefore would fill the result set to its limit,
|
||
normally set to 50 entries.
|
||
|
||
In certain use cases, a result set with nothing but referrals was
|
||
desired (e.g., o=tlds). However, even in these cases it was possible
|
||
for some referrals to not be returned due to the size limit. In this
|
||
case, it was felt that a result set of 50 referrals, the default for
|
||
the size limit in most cases, was too large for any practical use by
|
||
a client and was a failing of query distribution in general rather
|
||
than a limitation of LDAP.
|
||
|
||
6.3. Common DIT
|
||
|
||
Because of the nature of software development, the graphical and web
|
||
clients were developed after the development of the server software.
|
||
The 'ldapsearch' client was used for testing and development during
|
||
server software creation. It was not until the creation of more
|
||
advanced clients that it was discovered that the design decision of
|
||
uniform DIT naming should have been made. Technically, this would
|
||
have allowed for slightly better software modularization and re-use.
|
||
In addition, the use of a company name in the DIT structure did not
|
||
allow the easy integration of another domain registry, as in the
|
||
registry-registrar model. Not only would clients have to be
|
||
|
||
|
||
|
||
Newton Experimental [Page 15]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
reconfigured for each new registry operator, but this would most
|
||
likely have social implications as well.
|
||
|
||
6.4. Universal Client
|
||
|
||
The construction of the clients revealed yet another misconception.
|
||
Though this project used a generic directory service technology, the
|
||
clients required a high-degree of algorithmic knowledge about the DIT
|
||
structure and schemas being used. The graphical clients could not be
|
||
used against an LDAP service with another DIT or schema. Therefore,
|
||
a generic or universal client, one that could be used for all LDAP
|
||
applications, would either not be able to make full use of the data
|
||
provided by the service or would be far too complex for operation by
|
||
the average user.
|
||
|
||
6.5. Targeting Searches by Tier
|
||
|
||
The network model for this service was divided into three tiers:
|
||
registry, registrar, and registrant. Despite this, all searches
|
||
needed to start at the registry level causing overhead for searches
|
||
that could be targeted at a select tier. This service did not
|
||
implement a solution to this problem, such as using SRV and/or NAPTR
|
||
records in DNS to allow a client to find a responsible LDAP server.
|
||
|
||
6.6. Data Mining
|
||
|
||
Section 3.1.2 and Section 4.1.2 describe the searches allowed by this
|
||
service. However, the most common question asked by users of the
|
||
service revolved around getting around these restrictions. Because
|
||
browsing at the TLD level was not permitted, many users asked about
|
||
the feasibility of using recursive dictionary queries to circumvent
|
||
the search restrictions.
|
||
|
||
It should be noted that many operators of Nicname/Whois server
|
||
consider this practice to be data mining and often refer to it
|
||
specifically as a dictionary attack.
|
||
|
||
7. IANA Considerations
|
||
|
||
There are no applicable IANA considerations presented in this
|
||
document.
|
||
|
||
8. Internationalization Considerations
|
||
|
||
The domain administrative data in this service did not cover
|
||
Internationalized Domain Names (IDN's).
|
||
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 16]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
9. Security Considerations
|
||
|
||
This experiment did not endeavor to use security mechanisms beyond
|
||
those readily available in LDAP [5]. Section 3.1.3 and Section 4.1.3
|
||
describe the various access controls used within the scope of the
|
||
defined security mechanisms. While these mechanisms were adequate
|
||
for this experimental deployment, they would not be adequate for a
|
||
production environment, and they should not be taken as a model for
|
||
those contemplating deployment on the Internet.
|
||
|
||
10. Intellectual Property Statement
|
||
|
||
The IETF takes no position regarding the validity or scope of any
|
||
intellectual property or other rights that might be claimed to
|
||
pertain to the implementation or use of the technology described in
|
||
this document or the extent to which any license under such rights
|
||
might or might not be available; neither does it represent that it
|
||
has made any effort to identify any such rights. Information on the
|
||
IETF's procedures with respect to rights in standards-track and
|
||
standards-related documentation can be found in BCP-11. Copies of
|
||
claims of rights made available for publication and any assurances of
|
||
licenses to be made available, or the result of an attempt made to
|
||
obtain a general license or permission for the use of such
|
||
proprietary rights by implementors or users of this specification can
|
||
be obtained from the IETF Secretariat.
|
||
|
||
The IETF invites any interested party to bring to its attention any
|
||
copyrights, patents or patent applications, or other proprietary
|
||
rights which may cover technology that may be required to practice
|
||
this standard. Please address the information to the IETF Executive
|
||
Director.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 17]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
11. Normative References
|
||
|
||
[1] Harrenstien, K., Stahl, M. and E. Feinler, "NICNAME/WHOIS", RFC
|
||
954, October 1985.
|
||
|
||
[2] Barker, P., Kille, S. and T. Lenggenhager, "Naming and
|
||
Structuring Guidelines for X.500 Directory Pilots", RFC 1617,
|
||
May 1994.
|
||
|
||
[3] Williamson, S., Kosters, M., Blacka, D., Singh, J. and K.
|
||
Zeilstra, "Referral Whois (RWhois) Protocol V1.5", RFC 2167,
|
||
June 1997.
|
||
|
||
[4] Kille, S., Wahl, M., Grimstad, A., Huber, R. and S. Sataluri,
|
||
"Using Domains in LDAP/X.500 Distinguished Names", RFC 2247,
|
||
January 1998.
|
||
|
||
[5] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory Access
|
||
Protocol (v3)", RFC 2251, December 1997.
|
||
|
||
[6] Wahl, M., Coulbeck, A., Howes, T. and S. Kille, "Lightweight
|
||
Directory Access Protocol (v3): Attribute Syntax Definitions",
|
||
RFC 2252, December 1997.
|
||
|
||
[7] Wahl, M., "A Summary of the X.500(96) User Schema for use with
|
||
LDAPv3", RFC 2256, December 1997.
|
||
|
||
[8] Howard, L., "An Approach for Using LDAP as a Network Information
|
||
Service", RFC 2307, March 1998.
|
||
|
||
[9] Smith, M., "Definition of the inetOrgPerson LDAP Object Class",
|
||
RFC 2798, April 2000.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 18]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
Appendix A. Other Work
|
||
|
||
In addition to the deployment of servers and development of clients,
|
||
VeriSign conducted two sub-projects related to this experiment.
|
||
|
||
The first project was a Nicname/Whois-to-LDAP gateway. The goal of
|
||
the project was to create an LDAP server for use by registrars to
|
||
deploy in front of their Nicname/Whois servers. This gateway would
|
||
take LDAP requests, translate them to Nicname/Whois requests, issue
|
||
the request to a specific Nicname/Whois server deployed on port 43,
|
||
interpret the response, and return LDAP result sets. Because of the
|
||
unspecified nature of Nicname/Whois result sets, the gateway was
|
||
programmed to specifically recognize only the output of three
|
||
distinct registrars. While this gateway proved valuable enough to
|
||
allow domain lookups and limited searches, it was unable to provide
|
||
consistent contact lookups, nameserver lookups, or registrant
|
||
referrals. This software was also made publicly available under the
|
||
terms of an open source license.
|
||
|
||
The second project was an informal survey of registrants with
|
||
deployed LDAP servers. This was conducted by using the com, net,
|
||
org, and edu zone files and testing for the existence of an LDAP
|
||
server on port 389 using the name of the domain, a host named "ldap"
|
||
in the domain, and a host named "dir" in the domain (e.g., "foo.com",
|
||
"ldap.foo.com", and "dir.foo.com"). This survey did not attempt to
|
||
resolve LDAP services using SRV records in DNS.
|
||
|
||
The result of this survey found that roughly 0.5% of active domains
|
||
had an LDAP server. By profiling a server's root DSA-specific Entry
|
||
(DSE), the survey found that about 90% of the servers were
|
||
implementations provided by vendor A, 9% of the servers were
|
||
implementations provided by vendor B, and 1% of the servers were
|
||
implementations provided by other vendors. Of the servers queried
|
||
that were determined to be implementations provided by vendor A, it
|
||
appeared that about only 10% contained public data (this also led to
|
||
the assumption that the other 90% were not intended to be publicly
|
||
queried). Of the servers queried that were determined to be
|
||
implementations provided by vendor B, it appears that nearly all
|
||
contained public data.
|
||
|
||
Appendix B. Acknowledgments
|
||
|
||
Significant analysis, design, and implementation for this project
|
||
were conducted by Brad McMillen, David Blacka, Anna Zhang, and
|
||
Michael Schiraldi. Mark Kosters and Leslie Daigle provided guidance
|
||
by reviewing this project, the project's goals, and this document.
|
||
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 19]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
Author's Address
|
||
|
||
Andrew Newton
|
||
VeriSign, Inc.
|
||
21345 Ridgetop Circle
|
||
Sterling, VA 20166
|
||
USA
|
||
|
||
Phone: +1 703 948 3382
|
||
EMail: anewton@verisignlabs.com; anewton@ecotroph.net
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 20]
|
||
|
||
RFC 3663 Domain Administrative Data in LDAP December 2003
|
||
|
||
|
||
Full Copyright Statement
|
||
|
||
Copyright (C) The Internet Society (2003). All Rights Reserved.
|
||
|
||
This document and translations of it may be copied and furnished to
|
||
others, and derivative works that comment on or otherwise explain it
|
||
or assist in its implementation may be prepared, copied, published
|
||
and distributed, in whole or in part, without restriction of any
|
||
kind, provided that the above copyright notice and this paragraph are
|
||
included on all such copies and derivative works. However, this
|
||
document itself may not be modified in any way, such as by removing
|
||
the copyright notice or references to the Internet Society or other
|
||
Internet organizations, except as needed for the purpose of
|
||
developing Internet standards in which case the procedures for
|
||
copyrights defined in the Internet Standards process must be
|
||
followed, or as required to translate it into languages other than
|
||
English.
|
||
|
||
The limited permissions granted above are perpetual and will not be
|
||
revoked by the Internet Society or its successors or assignees.
|
||
|
||
This document and the information contained herein is provided on an
|
||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
|
||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
|
||
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
|
||
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
|
||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||
|
||
Acknowledgement
|
||
|
||
Funding for the RFC Editor function is currently provided by the
|
||
Internet Society.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newton Experimental [Page 21]
|
||
|