7 Network Working Group K. Zeilenga
8 Request for Comments: 3088 OpenLDAP Foundation
9 Category: Experimental April 2001
13 An experimental LDAP referral service
17 This memo defines an Experimental Protocol for the Internet
18 community. It does not specify an Internet standard of any kind.
19 Discussion and suggestions for improvement are requested.
20 Distribution of this memo is unlimited.
24 Copyright (C) The Internet Society (2001). All Rights Reserved.
28 The OpenLDAP Project is operating an experimental LDAP (Lightweight
29 Directory Access Protocol) referral service known as the "OpenLDAP
30 Root Service". The automated system generates referrals based upon
31 service location information published in DNS SRV RRs (Domain Name
32 System location of services resource records). This document
33 describes this service.
37 LDAP [RFC2251] directories use a hierarchical naming scheme inherited
38 from X.500 [X500]. Traditionally, X.500 deployments have used a
39 geo-political naming scheme (e.g., CN=Jane
40 Doe,OU=Engineering,O=Example,ST=CA,C=US). However, registration
41 infrastructure and location services in many portions of the naming
42 hierarchical are inadequate or nonexistent.
44 The construction of a global directory requires a robust registration
45 infrastructure and location service. Use of Internet domain-based
46 naming [RFC2247] (e.g., UID=jdoe,DC=eng,DC=example,DC=net) allows
47 LDAP directory services to leverage the existing DNS [RFC1034]
48 registration infrastructure and DNS SRV [RFC2782] resource records
49 can be used to locate services [LOCATE].
58 Zeilenga Experimental [Page 1]
60 RFC 3088 OpenLDAP Root Service April 2001
65 Most existing LDAP implementations do not support location of
66 directory services using DNS SRV resource records. However, most
67 servers support generation of referrals to "superior" server(s).
68 This service provides a "root" LDAP service which servers may use as
69 their superior referral service.
71 Client may also use the service directly to locate services
72 associated with an arbitrary Distinguished Name [RFC2253] within the
73 domain based hierarchy.
76 The mechanisms used by service are experimental. The descriptions
77 provided by this document are not definitive. Definitive
78 mechanisms shall be published in a Standard Track document(s).
80 2. Generating Referrals based upon DNS SRV RRs
82 This service returns referrals generated from DNS SRV resource
85 2.1. DN to Domain Name Mapping
87 The service maps a DN [RFC2253] to a fully qualified domain name
88 using the following algorithm:
91 foreach RDN left-to-right // [1]
94 if not multi-valued RDN and
95 RDN.type == domainComponent
97 if ( domain == null || domain == "." )
102 { // append separator
106 if ( RDN.value == "." )
114 Zeilenga Experimental [Page 2]
116 RFC 3088 OpenLDAP Root Service April 2001
119 { // append domainComponent
129 Distinguished Name Domain
130 ----------------------------- ------------
131 DC=example,DC=net example.net
132 UID=jdoe,DC=example,DC=net example.net
134 DC=example,DC=net,DC=. . [3]
135 DC=example,DC=.,DC=net net [4]
136 DC=example.net example.net [5]
137 CN=Jane Doe,O=example,C=US null
138 UID=jdoe,DC=example,C=US null
139 DC=example,O=example,DC=net net
140 DC=example+O=example,DC=net net
141 DC=example,C=US+DC=net null
145 0) A later incarnation will use a Standard Track mechanism.
147 1) A later incarnation of this service may use a right-to-left
150 2) RFC 2247 does not state how one can map the domain representing
151 the root of the domain tree to a DN. We suggest the root of the
152 domain tree be mapped to "DC=." and that this be reversable.
154 3) RFC 2247 states that domain "example.net" should be mapped to the
155 DN "DC=example,DC=net", not to "DC=example,DC=net,DC=.". As it is
156 not our intent to introduce or support an alternative domain to DN
157 mapping, the algorithm ignores domainComponents to the left of
160 4) RFC 2247 states that domain "example.net" should be mapped to the
161 DN "DC=example,DC=net", not to "DC=example,DC=.,DC=net". As it is
162 not our intent to introduce or support an alternative domain to DN
163 mapping, the algorithm ignores domainComponents to the left of
164 "DC=." and "DC=." itself if further domainComponents are found to
170 Zeilenga Experimental [Page 3]
172 RFC 3088 OpenLDAP Root Service April 2001
175 5) RFC 2247 states that value of an DC attribute type is a domain
176 component. It should not contain multiple domain components. A
177 later incarnation of this service may map this domain to null or
178 be coded to return invalid DN error.
180 If the domain is null or ".", the service aborts further processing
181 and returns noSuchObject. Later incarnation of this service may
182 abort processing if the resulting domain is a top-level domain.
184 2.2. Locating LDAP services
186 The root service locates services associated with a given fully
187 qualified domain name by querying the Domain Name System for LDAP SRV
188 resource records. For the domain example.net, the service would do a
189 issue a SRV query for the domain "_ldap._tcp.example.net". A
190 successful query will return one or more resource records of the
193 _ldap._tcp.example.net. IN SRV 0 0 389 ldap.example.net.
195 If no LDAP SRV resource records are returned or any DNS error occurs,
196 the service aborts further processing and returns noSuchObject.
197 Later incarnations of this service will better handle transient
200 2.3. Constructing an LDAP Referrals
202 For each DNS SRV resource record returned for the domain, a LDAP URL
203 [RFC2255] is constructed. For the above resource record, the URL
206 ldap://ldap.example.net:389/
208 These URLs are then returned in the referral. The URLs are currently
209 returned in resolver order. That is, the server itself does not make
210 use of priority or weight information in the SRV resource records. A
211 later incarnation of this service may.
213 3. Protocol Operations
215 This section describes how the service performs basic LDAP
216 operations. The service supports operations extended through certain
217 controls as described in a later section.
226 Zeilenga Experimental [Page 4]
228 RFC 3088 OpenLDAP Root Service April 2001
231 3.1. Basic Operations
233 Basic (add, compare, delete, modify, rename, search) operations
234 return a referral result if the target (or base) DN can be mapped to
235 a set of LDAP URLs as described above. Otherwise a noSuchObject
236 response or other appropriate response is returned.
240 The service accepts "anonymous" bind specifying version 2 or version
241 3 of the protocol. All other bind requests will return a non-
242 successful resultCode. In particular, clients which submit clear
243 text credentials will be sent an unwillingToPerform resultCode with a
244 cautionary text regarding providing passwords to strangers.
246 As this service is read-only, LDAPv3 authentication [RFC2829] is not
249 3.3. Unbind Operations
251 Upon receipt of an unbind request, the server abandons all
252 outstanding requests made by client and disconnects.
254 3.4. Extended Operations
256 The service currently does recognize any extended operation. Later
257 incarnations of the service may support Start TLS [RFC2830] and other
260 3.5. Update Operations
262 A later incarnation of this service may return unwillingToPerform for
263 all update operations as this is an unauthenticated service.
267 The service supports the ManageDSAit control. Unsupported controls
268 are serviced per RFC 2251.
270 4.1. ManageDSAit Control
272 The server recognizes and honors the ManageDSAit control [NAMEDREF]
273 provided with operations.
275 If DNS location information is available for the base DN itself, the
276 service will return unwillingToPerform for non-search operations.
277 For search operations, an entry will be returned if within scope and
278 matches the provided filter. For example:
282 Zeilenga Experimental [Page 5]
284 RFC 3088 OpenLDAP Root Service April 2001
288 base="DC=example,DC=net"
290 filter=(objectClass=*)
295 dn: DC=example,DC=net
296 objectClass: referral
297 objectClass: extensibleObject
299 ref: ldap://ldap.example.net:389/
300 associatedDomain: example.net
306 If DNS location information is available for the DC portion of a
307 subordinate entry, the service will return noSuchObject with the
308 matchedDN set to the DC portion of the base for search and update
312 base="CN=subordinate,DC=example,DC=net"
314 filter=(objectClass=*)
320 matchedDN="DC=example,DC=net"
325 Servers may be configured to refer superior requests to
326 <ldap://root.openldap.org:389>.
328 Though clients may use the service directly, this is not encouraged.
329 Clients should use a local service and only use this service when
332 The service supports LDAPv3 and LDAPv2+ [LDAPv2+] clients over
333 TCP/IPv4. Future incarnations of this service may support TCP/IPv6
334 or other transport/internet protocols.
338 Zeilenga Experimental [Page 6]
340 RFC 3088 OpenLDAP Root Service April 2001
345 6.1. Scaling / Reliability
347 This service currently runs on a single host. This host and
348 associated network resources are not yet exhausted. If they do
349 become exhausted, we believe we can easily scale to meet the demand
350 through common distributed load balancing technics. The service can
351 also easily be duplicated locally.
353 6.2. Protocol interoperability
355 This service has able avoided known interoperability issues in
356 supporting variants of LDAP.
360 The server implements all features of LDAPv3 [RFC2251] necessary to
365 LDAPv2 [RFC1777] does not support the return of referrals and hence
366 may not be referred to this service. Though a LDAPv2 client could
367 connect and issue requests to this service, the client would treat
368 any referral returned to it as an unknown error.
372 LDAPv2+ [LDAPv2+] provides a number of extensions to LDAPv2,
373 including referrals. LDAPv2+, like LDAPv3, does not require a bind
374 operation before issuing of other operations. As the referral
375 representation differ between LDAPv2+ and LDAPv3, the service returns
376 LDAPv3 referrals in this case. However, as commonly deployed LDAPv2+
377 clients issue bind requests (for compatibility with LDAPv2 servers),
378 this has not generated any interoperability issues (yet).
380 A future incarnation of this service may drop support for LDAPv2+
385 CLDAP [RFC1798] does not support the return of referrals and hence is
394 Zeilenga Experimental [Page 7]
396 RFC 3088 OpenLDAP Root Service April 2001
399 7. Security Considerations
401 This service provides information to "anonymous" clients. This
402 information is derived from the public directories, namely the Domain
405 The use of authentication would require clients to disclose
406 information to the service. This would be an unnecessary invasion of
409 The lack of encryption allows eavesdropping upon client requests and
410 responses. A later incarnation of this service may support
411 encryption (such as via Start TLS [RFC2830]).
413 Information integrity protection is not provided by the service. The
414 service is subject to varies forms of DNS spoofing and attacks. LDAP
415 session or operation integrity would provide false sense of security
416 concerning the integrity of DNS information. A later incarnation of
417 this service may support DNSSEC and provide integrity protection (via
418 SASL, TLS, or IPSEC).
420 The service is subject to a variety of denial of service attacks.
421 The service is capable of blocking access by a number of factors.
422 This capability have yet to be used and likely would be ineffective
423 in preventing sophisticated attacks. Later incarnations of this
424 service will likely need better protection from such attacks.
428 DNS is good glue. By leveraging of the Domain Name System, global
429 LDAP directories may be built without requiring a protocol specific
430 registration infrastructures.
432 In addition, use of DNS service location allows global directories to
433 be built "ad hoc". That is, anyone with a domain name can
434 participate. There is no requirement that the superior domain
437 9. Additional Information
439 Additional information about the OpenLDAP Project and the OpenLDAP
440 Root Service can be found at <http://www.openldap.org/>.
450 Zeilenga Experimental [Page 8]
452 RFC 3088 OpenLDAP Root Service April 2001
460 EMail: kurt@openldap.org
464 Internet hosting for this experiment is provided by the Internet
465 Software Consortium <http://www.isc.org/>. Computing resources were
466 provided by Net Boolean Incorporated <http://www.boolean.net/>. This
467 experiment would not have been possible without the contributions of
468 numerous volunteers of the open source community. Mechanisms
469 described in this document are based upon those introduced in
470 [RFC2247] and [LOCATE].
474 [RFC1034] Mockapetris, P., "Domain Names - Concepts and Facilities",
475 STD 13, RFC 1034, November 1987.
477 [RFC1777] Yeong, W., Howes, T. and S. Kille, "Lightweight Directory
478 Access Protocol", RFC 1777, March 1995.
480 [RFC1798] Young, A., "Connection-less Lightweight Directory Access
481 Protocol", RFC 1798, June 1995.
483 [RFC2119] Bradner, S., "Key Words for use in RFCs to Indicate
484 Requirement Levels", BCP 14, RFC 2119, March 1997.
486 [RFC2247] Kille, S., Wahl, M., Grimstad, A., Huber, R. and S.
487 Sataluri, "Using Domains in LDAP/X.500 Distinguished
488 Names", RFC 2247, January 1998.
490 [RFC2251] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory
491 Access Protocol (v3)", RFC 2251, December 1997.
493 [RFC2253] Wahl, M., Kille, S. and T. Howes, "Lightweight Directory
494 Access Protocol (v3): UTF-8 String Representation of
495 Distinguished Names", RFC 2253, December 1997.
497 [RFC2255] Howes, T. and M. Smith, "The LDAP URL Format", RFC 2255,
500 [RFC2782] Gulbrandsen, A., Vixie, P. and L. Esibov, "A DNS RR for
501 specifying the location of services (DNS SRV)", RFC 2782,
506 Zeilenga Experimental [Page 9]
508 RFC 3088 OpenLDAP Root Service April 2001
511 [RFC2829] Wahl, M., Alvestrand, H., Hodges, J. and R. Morgan,
512 "Authentication Methods for LDAP", RFC 2829, May 2000.
514 [RFC2830] Hodges, J., Morgan, R. and M. Wahl, "Lightweight Directory
515 Access Protocol (v3): Extension for Transport Layer
516 Security", RFC 2830, May 2000.
518 [LOCATE] IETF LDAPext WG, "Discovering LDAP Services with DNS",
521 [LDAPv2+] University of Michigan LDAP Team, "Referrals within the
522 LDAPv2 Protocol", August 1996.
524 [NAMEDREF] Zeilenga, K. (editor), "Named Subordinate References in
525 LDAP Directories", Work in Progress.
527 [X500] ITU-T Rec. X.500, "The Directory: Overview of Concepts,
528 Models and Service", 1993.
562 Zeilenga Experimental [Page 10]
564 RFC 3088 OpenLDAP Root Service April 2001
567 Full Copyright Statement
569 Copyright (C) The Internet Society (2001). All Rights Reserved.
571 This document and translations of it may be copied and furnished to
572 others, and derivative works that comment on or otherwise explain it
573 or assist in its implementation may be prepared, copied, published
574 and distributed, in whole or in part, without restriction of any
575 kind, provided that the above copyright notice and this paragraph are
576 included on all such copies and derivative works. However, this
577 document itself may not be modified in any way, such as by removing
578 the copyright notice or references to the Internet Society or other
579 Internet organizations, except as needed for the purpose of
580 developing Internet standards in which case the procedures for
581 copyrights defined in the Internet Standards process must be
582 followed, or as required to translate it into languages other than
585 The limited permissions granted above are perpetual and will not be
586 revoked by the Internet Society or its successors or assigns.
588 This document and the information contained herein is provided on an
589 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
590 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
591 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
592 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
593 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
597 Funding for the RFC Editor function is currently provided by the
618 Zeilenga Experimental [Page 11]