| TOC |
|
This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html.
This Internet-Draft will expire on January 15, 2002.
Copyright (C) The Internet Society (2001). All Rights Reserved.
This document describes an XDAP directory namespace and schema for registered DNS information. The schema extends the necessary query and result operations of XDAP to provide a functional equivalent of the whois command syntaxes and results often used by domain registries and registrars.
| TOC |
| TOC |
This document describes an Internet address directory using an XML Schema[4] derived from and using the XDAP[5] schema. The query and result types are similar in function to the whois commands and results often used by domain registries/registrars today.
The schema given is this document is specified using the Extensible Markup Language (XML) 1.0 as described in [1], XML Schema notation as described in [3] and [4], and XML Namespaces as described in [2].
It is important to note that XML is case sensitive. XML specifications and examples provided in this document MUST be interpreted in the exact character case presented to develop a conforming implementation.
| TOC |
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC2119[9].
The terms "holder" and sponsor" are taken from the meaning described in [6].
| TOC |
The schema for this directory namespace defines no <complexAuthentication> derivative. Applications of this namespace should rely on either the XDAP transport or <simpleAuthentication> for client authentication.
XDAP requires the derivation of both query and result elements by a directory namespace. These descriptions follow.
This query does a domain lookup. This lookup is specified either with a handle for the domain or the name of the domain as it would be used in DNS.
This query returns continuation searches in the directory services of the "down-stream" sponsors of a directory. A search constraint of <base> MAY restrict the list to sponsors only of a particular domain.
<findDomainByHolder> finds a domain entity by the common name of the domain's holder. A search constraint of <base> MAY restrict the results to domains only underneath the domain specified by its content. The <beginsWith> element MUST be present and specifies the beginning of the common name of the holder. The <endsWith> element is OPTIONAL and MUST contain the end of the common name of the holder.
Similar to <findDomainByHolder>, <findDomainByHolder> finds a domain entity by the name of the domain as it is known it DNS. A search constraint of <base> MAY restrict the results to domains only underneath the domain specified by its content. The <beginsWith> element MUST be present and specifies the beginning of the domain name. The <endsWith> element is OPTIONAL and MUST contain the end of the domain name.
This query does a contact lookup. The lookup is specified with the handle of the contact.
<findContacts> searches for contacts given search constraints. The <beginsWith> element MUST be present and specifies the beginning of the common name of the contact. The <endsWith> element is OPTIONAL and MUST contain the end of the common name of the contact.
The <type> element is OPTIONAL and SHOULD contain a recognized type of contact. Typically the values for this element denote multiplicity of the contact, such as "organization" or "person".
This is a simple named look up of a name server host. The host MUST be specified by one of the following elements:
This query does a simple search for the name servers hosting a domain. The search constraint <domainName> MUST be present.
This is the expected result of a <lookupDomain> query. The children of the <domain> element are as follows:
This is the expected result of a <findDomainByName> or <findDomainByHolder> query. It MAY be empty, but if it has children, they MUST be <domain> elements.
This element is the expected result of a <listSponsors> query. The children of this element are <searchContinuation> as specified by XDAP.
The <hostInfo> element is the expected result of a <lookupHost> query. It contains elements for the fully qualified host name of the host, the IP address of the host, and a reference to the host contact.
The address elements contain the IP address of the name server, either IP v4 or IP v6, and an OPTIONAL reference to the network which contains the given address.
This is the expected result of <findHostsByDomain> query. It MAY be empty, but if it has children, they MUST be <host> elements.
The <contactInfo> element is the expected result of a <lookupContact> query. The children that MUST be present are <handle>, containing a registry assigned unique identifier, and <commonName>, which holds the common name of the contact. The other children of this element are OPTIONAL and contain Internet, phone, and postal address information.
The <contacts> element is the expected result of a <findContacts> query. This element MAY have no children; if it is not empty the children MUST be <contactInfo> elements.
Some of the global types defined by the schema specified in this document are expressed using regular expressions. The regular expressions used for these definitions do not fully represent every allowable syntax for the intended type, but meet a standard of reasonableness for the expression of the types.
The following types of named entities are recognized by the <lookupEntity> query of XDAP:
| TOC |
This domain directory is specified in the XML Schema notation. The formal syntax presented here is a complete schema representation suitable for automated validation of an XML instance when combined with the formal schema syntax of XDAP. Due to document formatting restrictions, readers should note that the regular expressions expressed in this schema DO NOT contain whitespace within the quotes containing the regular expression.
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:domdir="urn:iana:xmlns:domdir1"
xmlns:xdap="urn:iana:xmlns:xdap1"
targetNamespace="urn:iana:xmlns:domdir1"
elementFormDefault="qualified" >
<annotation>
<documentation>
Domain directory schema
derived from XDAP schema
</documentation>
</annotation>
<!-- -->
<!-- Query types -->
<!-- -->
<complexType name="lookupDomainType">
<complexContent>
<extension base="xdap:queryType">
<choice>
<element name="handle"
type="domdir:handleType" />
<element name="domainName"
type="domdir:domainNameType" />
</choice>
</extension>
</complexContent>
</complexType>
<element name="lookupDomain"
type="domdir:lookupDomainType"
substitutionGroup="xdap:query" />
<complexType name="listSponsorsType">
<complexContent>
<extension base="xdap:queryType">
<sequence>
<element name="base"
type="domdir:domainNameType"
minOccurs="0" maxOccurs="1" />
</sequence>
</extension>
</complexContent>
</complexType>
<element name="listSponsors"
type="domdir:listSponsorsType"
substitutionGroup="xdap:query" />
<complexType name="findDomainByHolderType">
<complexContent>
<extension base="xdap:queryType">
<sequence>
<element name="base"
type="domdir:domainNameType"
minOccurs="0" maxOccurs="1" />
<element name="beginsWith"
minOccurs="1" maxOccurs="1">
<simpleType>
<restriction base="token">
<minLength value="3"/>
</restriction>
</simpleType>
</element>
<element name="endsWith"
minOccurs="0" maxOccurs="1">
<simpleType>
<restriction base="token">
<minLength value="2"/>
</restriction>
</simpleType>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="findDomainByHolder"
type="domdir:findDomainByHolderType"
substitutionGroup="xdap:query" />
<complexType name="findDomainByNameType">
<complexContent>
<extension base="xdap:queryType">
<sequence>
<element name="base"
type="domdir:domainNameType"
minOccurs="0" maxOccurs="1" />
<element name="beginsWith"
minOccurs="1" maxOccurs="1" >
<simpleType>
<restriction base="token">
<minLength value="3"/>
</restriction>
</simpleType>
</element>
<element name="endsWith"
minOccurs="0" maxOccurs="1" >
<simpleType>
<restriction base="token">
<minLength value="2"/>
</restriction>
</simpleType>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="findDomainByName"
type="domdir:findDomainByNameType"
substitutionGroup="xdap:query" />
<complexType name="lookupContactType">
<complexContent>
<extension base="xdap:queryType">
<sequence>
<element name="handle"
type="domdir:handleType" />
</sequence>
</extension>
</complexContent>
</complexType>
<element name="lookupContact"
type="domdir:lookupContactType"
substitutionGroup="xdap:query" />
<complexType name="findContactsType">
<complexContent>
<extension base="xdap:queryType">
<sequence>
<element name="beginsWith"
minOccurs="1" maxOccurs="1" >
<simpleType>
<restriction base="token">
<minLength value="3"/>
</restriction>
</simpleType>
</element>
<element name="endsWith"
minOccurs="0" maxOccurs="1" >
<simpleType>
<restriction base="token">
<minLength value="2"/>
</restriction>
</simpleType>
</element>
<element name="type"
type="token"
minOccurs="0" maxOccurs="1" />
</sequence>
</extension>
</complexContent>
</complexType>
<element name="findContactsType"
type="domdir:findContactsType"
substitutionGroup="xdap:query" />
<complexType name="lookupHostType">
<complexContent>
<extension base="xdap:queryType">
<choice>
<element name="handle"
type="domdir:handleType" />
<element name="hostName"
type="domdir:domainNameType" />
<element name="ipV4Address"
type="domdir:dotQuadIPv4Type" />
<element name="ipV6Address"
type="domdir:textIPv6AddressType" />
</choice>
</extension>
</complexContent>
</complexType>
<element name="lookupHost"
type="domdir:lookupHostType"
substitutionGroup="xdap:query" />
<complexType name="findHostsByDomainType">
<complexContent>
<extension base="xdap:queryType">
<sequence>
<element name="domainName"
type="domdir:domainNameType" />
</sequence>
</extension>
</complexContent>
</complexType>
<element name="findHostsByDomain"
type="domdir:findHostsByDomainType"
substitutionGroup="xdap:query" />
<!-- -->
<!-- Result types -->
<!-- -->
<complexType name="domainType">
<complexContent>
<extension base="xdap:resultType">
<sequence>
<element name="domainName"
type="domdir:domainNameType" />
<element name="domainReference"
type="anyURI"
minOccurs="0" maxOccurs="1" />
<element name="nameServerReference"
type="anyURI"
minOccurs="0" maxOccurs="unbounded" />
<element name="holder"
type="domdir:contactInfoType"
minOccurs="0" maxOccurs="1" />
<element name="contactReference"
minOccurs="0" maxOccurs="unbounded" >
<complexType>
<sequence>
<element name="entityReference"
type="anyURI" />
<element name="role"
type="token" />
</sequence>
</complexType>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="domain"
type="domdir:domainType"
substitutionGroup="xdap:result" />
<complexType name="sponsorsType">
<complexContent>
<extension base="xdap:resultType">
<sequence>
<element name="searchContinuation"
type="xdap:searchContinuationType"
minOccurs="0" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<element name="sponsors"
type="domdir:sponsorsType"
substitutionGroup="xdap:result" />
<complexType name="domainsType">
<complexContent>
<extension base="xdap:resultType">
<sequence>
<element name="domain"
type="domdir:domainType"
minOccurs="0" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<element name="domains"
type="domdir:domainsType"
substitutionGroup="xdap:result" />
<complexType name="hostInfoType">
<complexContent>
<extension base="xdap:resultType">
<sequence>
<element name="handle"
type="domdir:handleType"
minOccurs="0" maxOccurs="1" />
<element name="hostName"
type="domdir:domainNameType" />
<choice
minOccurs="1" maxOccurs="unbounded" >
<element name="ipV4">
<complexType>
<sequence>
<element name="ipV4Address"
type="domdir:dotQuadIPv4Type" />
<element name="networkReference"
type="anyURI"
minOccurs="0" maxOccurs="1" />
</sequence>
</complexType>
</element>
<element name="ipV6">
<complexType>
<sequence>
<element name="ipV6Address"
type="domdir:textIPv6AddressType" />
<element name="networkReference"
type="anyURI"
minOccurs="0" maxOccurs="1" />
</sequence>
</complexType>
</element>
</choice>
<element name="contactReference"
type="anyURI" />
</sequence>
</extension>
</complexContent>
</complexType>
<element name="hostInfo"
type="domdir:hostInfoType"
substitutionGroup="xdap:result" />
<complexType name="hostsType">
<complexContent>
<extension base="xdap:resultType">
<sequence>
<element name="host"
type="domdir:hostInfoType"
minOccurs="0" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<element name="hosts"
type="domdir:hostsType"
substitutionGroup="xdap:result" />
<complexType name="contactInfoType">
<complexContent>
<extension base="xdap:resultType">
<sequence>
<element name="handle"
type="domdir:handleType" />
<element name="commonName"
type="normalizedString" />
<element name="organization"
type="normalizedString"
minOccurs="0" maxOccurs="1" />
<element name="e-mail"
type="string"
minOccurs="0" maxOccurs="1" />
<element name="address"
type="string"
minOccurs="0" maxOccurs="1" />
<element name="city"
type="string"
minOccurs="0" maxOccurs="1" />
<element name="region"
type="string"
minOccurs="0" maxOccurs="1" />
<element name="postalCode"
type="normalizedString"
minOccurs="0" maxOccurs="1" />
<element name="country"
type="token"
minOccurs="0" maxOccurs="1" />
<element name="phone"
type="normalizedString"
minOccurs="0" maxOccurs="1" />
<element name="fax"
type="normalizedString"
minOccurs="0" maxOccurs="1" />
</sequence>
</extension>
</complexContent>
</complexType>
<element name="contactInfo"
type="domdir:contactInfoType"
substitutionGroup="xdap:result" />
<complexType name="contactsType">
<complexContent>
<extension base="xdap:resultType">
<sequence>
<element name="contact"
type="domdir:contactInfoType"
minOccurs="0" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<element name="contacts"
type="domdir:contactsType"
substitutionGroup="xdap:result" />
<complexType name="hostOrDomainType">
<complexContent>
<extension base="xdap:resultType">
<sequence>
<element name="nameServerReference"
type="anyURI" />
<element name="domainReference"
type="anyURI" />
</sequence>
</extension>
</complexContent>
</complexType>
<element name="hostOrDomain"
type="domdir:hostOrDomainType"
substitutionGroup="xdap:result" />
<!-- -->
<!-- Global types -->
<!-- -->
<simpleType name="domainNameType">
<restriction base="token">
<pattern
value="([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]\.)*([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])?" />
<maxLength value="255" />
</restriction>
</simpleType>
<simpleType name="handleType">
<restriction base="token">
<pattern value="(host|org|person|role|domain):[A-Za-z0-9-]*" />
<maxLength value="255" />
</restriction>
</simpleType>
<simpleType name="dotQuadIPv4Type">
<restriction base="string">
<pattern value="([\d]{1,3}.){3}[\d]{1,3}" />
<minLength value="7" />
<maxLength value="15" />
</restriction>
</simpleType>
<!-- does not support '::' -->
<simpleType name="textIPv6AddressType">
<restriction base="string">
<pattern value="(([\dA-Fa-f]{1,4}:){7}[\dA-Fa-f]{1,4})(:([\d]{1,3}.){3}[\d]{1,3})?"/>
<minLength value="16"/>
<maxLength value="39"/>
</restriction>
</simpleType>
</schema>
| TOC |
The defining schema for this directory namespace is represented in XML, which provides native support for encoding information using the double-byte Unicode character set and its more compact representations including UTF-8. Compliant XML processors are required to understand both UTF-8 and raw Unicode character sets; XML also includes a provision for identifying other character sets through use of an "encoding" attribute in an <?xml?> processing instruction. The complete list of character set encoding identifiers is maintained by IANA and is described in ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets and [7].
| TOC |
XML schemas require a URI for unique identification. Schemas MUST be registered to ensure URI uniqueness, but the IETF does not currently have a recommended repository for the registration of XML schemas. This document uses URNs to describe XML namespaces and XML schemas. IANA SHOULD maintain a registry of XML namespace and schema URI assignments. Per policies described in [8], URI assignment requests SHOULD be reviewed by a designated expert, and values SHOULD be assigned only as a result of standards action taken by the IESG.
| TOC |
The schema given in this document describes no <complexAuthentication> derivatives nor specifies any authentication mechanism beyond that specified by [5].
| TOC |
| [1] | World Wide Web Consortium, "Extensible Markup Language (XML) 1.0", W3C XML, February 1998. |
| [2] | World Wide Web Consortium, "Namespaces in XML", W3C XML Namespaces, January 1999. |
| [3] | World Wide Web Consortium, "XML Schema Part 2: Datatypes", W3C XML Schema, October 2000. |
| [4] | World Wide Web Consortium, "XML Schema Part 1: Structures", W3C XML Schema, October 2000. |
| [5] | Newton, AL, "eXtensible Directory Access Protocol", Internet Draft, a work in-progress., February 2001. |
| [6] | Rader, R., "Domain Name Whois Data Element and Related Definitions", Internet Draft, a work in-progress., January 2001. |
| [7] | Reynolds, J. and J. Postel, "ASSIGNED NUMBERS", RFC 1700, STD 2, October 1994. |
| [8] | Narten, T. and H.T. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", RFC 2434, BCP 26, October 1998. |
| [9] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", RFC 2119, BCP 14, March 1997. |
| TOC |
| Andrew L. Newton | |
| VeriSign, Inc. | |
| 505 Huntmar Park Drive | |
| Herndon, VA 20170 | |
| USA | |
| Phone: | +1 703 948 3382 |
| EMail: | anewton@verisignlabs.com |
| URI: | http://www.verisignlabs.com/ |
| TOC |
The following is an example of an XDAP request and response using this directory namespace.
This XML instance is a request to search for domains by the holder's name.
<?xml version="1.0"?>
<xdap xmlns="urn:iana:xmlns:xdap1"
xmlns:xdap="urn:iana:xmlns:xdap1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:iana:xmlns:xdap1 xdap.xsd" >
<request>
<directorySearch>
<domdir:findDomainByHolder
xmlns:domdir="urn:iana:xmlns:domdir1"
xsi:schemaLocation="urn:iana:xmlns:domdir1 domdir.xsd" >
<domdir:base>com</domdir:base>
<domdir:beginsWith>
The Cobbler Shoppe
</domdir:beginsWith>
</domdir:findDomainByHolder>
</directorySearch>
</request>
</xdap>
This XML instance is a response from domdir-request.xml.
<?xml version="1.0"?>
<xdap xmlns="urn:iana:xmlns:xdap1"
xmlns:xdap="urn:iana:xmlns:xdap1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:iana:xmlns:xdap1 xdap.xsd" >
<response>
<directoryResult>
<domdir:domains
xmlns="urn:iana:xmlns:domdir1"
xmlns:domdir="urn:iana:xmlns:domdir1"
xsi:schemaLocation="urn:iana:xmlns:domdir1 domdir.xsd" >
<domain>
<domainName>thecobblershoppe.com</domainName>
<nameServerReference>
xdap://a.host/urn:iana:xmlns:domdir1/host:research7-hst
</nameServerReference>
<nameServerReference>
xdap://a.host/urn:iana:xmlns:domdir1/host:nso1184-hst
</nameServerReference>
<holder>
<handle>person:beb140</handle>
<commonName>
Bill Eckels
</commonName>
<organization>
The Cobbler Shoppe
</organization>
<e-mail>
bille@bjmk.com
</e-mail>
<address>
21 North Main Street
</address>
<city>
Britt
</city>
<region>
IA
</region>
<postalCode>
50423
</postalCode>
<country>
US
</country>
<phone>
515-843-3521
</phone>
</holder>
</domain>
</domdir:domains>
</directoryResult>
</response>
</xdap>
| TOC |
Copyright (C) The Internet Society (2001). 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 assigns.
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.
Funding for the RFC editor function is currently provided by the Internet Society.