GENWiki

Premier IT Outsourcing and Support Services within the UK

User Tools

Site Tools


rfc:rfc3088

Network Working Group K. Zeilenga Request for Comments: 3088 OpenLDAP Foundation Category: Experimental April 2001

                       OpenLDAP Root Service
               An experimental LDAP referral service

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 (2001).  All Rights Reserved.

Abstract

 The OpenLDAP Project is operating an experimental LDAP (Lightweight
 Directory Access Protocol) referral service known as the "OpenLDAP
 Root Service".  The automated system generates referrals based upon
 service location information published in DNS SRV RRs (Domain Name
 System location of services resource records).  This document
 describes this service.

1. Background

 LDAP [RFC2251] directories use a hierarchical naming scheme inherited
 from X.500 [X500].  Traditionally, X.500 deployments have used a
 geo-political naming scheme (e.g., CN=Jane
 Doe,OU=Engineering,O=Example,ST=CA,C=US).  However, registration
 infrastructure and location services in many portions of the naming
 hierarchical are inadequate or nonexistent.
 The construction of a global directory requires a robust registration
 infrastructure and location service.  Use of Internet domain-based
 naming [RFC2247] (e.g., UID=jdoe,DC=eng,DC=example,DC=net) allows
 LDAP directory services to leverage the existing DNS [RFC1034]
 registration infrastructure and DNS SRV [RFC2782] resource records
 can be used to locate services [LOCATE].

Zeilenga Experimental [Page 1] RFC 3088 OpenLDAP Root Service April 2001

1.1. The Glue

 Most existing LDAP implementations do not support location of
 directory services using DNS SRV resource records.  However, most
 servers support generation of referrals to "superior" server(s).
 This service provides a "root" LDAP service which servers may use as
 their superior referral service.
 Client may also use the service directly to locate services
 associated with an arbitrary Distinguished Name [RFC2253] within the
 domain based hierarchy.
 Notice:
   The mechanisms used by service are experimental.  The descriptions
   provided by this document are not definitive.  Definitive
   mechanisms shall be published in a Standard Track document(s).

2. Generating Referrals based upon DNS SRV RRs

 This service returns referrals generated from DNS SRV resource
 records [RFC2782].

2.1. DN to Domain Name Mapping

 The service maps a DN [RFC2253] to a fully qualified domain name
 using the following algorithm:
     domain = null;
     foreach RDN left-to-right        // [1]
     {
         if not multi-valued RDN and
             RDN.type == domainComponent
         {
             if ( domain == null || domain == "." )
             {   // start
                 domain = "";
             }
             else
             {   // append separator
                 domain .= ".";
             }
             if ( RDN.value == "."  )
             {   // root
                 domain = ".";
             }
             else

Zeilenga Experimental [Page 2] RFC 3088 OpenLDAP Root Service April 2001

             {   // append domainComponent
                 domain .= RDN.value;
             }
             continue;
         }
         domain = null;
     }
 Examples:
     Distinguished Name              Domain
     -----------------------------   ------------
     DC=example,DC=net               example.net
     UID=jdoe,DC=example,DC=net      example.net
     DC=.                            .            [2]
     DC=example,DC=net,DC=.          .            [3]
     DC=example,DC=.,DC=net          net          [4]
     DC=example.net                  example.net  [5]
     CN=Jane Doe,O=example,C=US      null
     UID=jdoe,DC=example,C=US        null
     DC=example,O=example,DC=net     net
     DC=example+O=example,DC=net     net
     DC=example,C=US+DC=net          null
 Notes:
 0) A later incarnation will use a Standard Track mechanism.
 1) A later incarnation of this service may use a right-to-left
    algorithm.
 2) RFC 2247 does not state how one can map the domain representing
    the root of the domain tree to a DN.  We suggest the root of the
    domain tree be mapped to "DC=." and that this be reversable.
 3) RFC 2247 states that domain "example.net" should be mapped to the
    DN "DC=example,DC=net", not to "DC=example,DC=net,DC=.".  As it is
    not our intent to introduce or support an alternative domain to DN
    mapping, the algorithm ignores domainComponents to the left of
    "DC=.".
 4) RFC 2247 states that domain "example.net" should be mapped to the
    DN "DC=example,DC=net", not to "DC=example,DC=.,DC=net".  As it is
    not our intent to introduce or support an alternative domain to DN
    mapping, the algorithm ignores domainComponents to the left of
    "DC=." and "DC=." itself if further domainComponents are found to
    the right.

Zeilenga Experimental [Page 3] RFC 3088 OpenLDAP Root Service April 2001

 5) RFC 2247 states that value of an DC attribute type is a domain
    component.  It should not contain multiple domain components.  A
    later incarnation of this service may map this domain to null or
    be coded to return invalid DN error.
 If the domain is null or ".", the service aborts further processing
 and returns noSuchObject.  Later incarnation of this service may
 abort processing if the resulting domain is a top-level domain.

2.2. Locating LDAP services

 The root service locates services associated with a given fully
 qualified domain name by querying the Domain Name System for LDAP SRV
 resource records.  For the domain example.net, the service would do a
 issue a SRV query for the domain "_ldap._tcp.example.net".  A
 successful query will return one or more resource records of the
 form:
   _ldap._tcp.example.net. IN SRV 0 0 389 ldap.example.net.
 If no LDAP SRV resource records are returned or any DNS error occurs,
 the service aborts further processing and returns noSuchObject.
 Later incarnations of this service will better handle transient
 errors.

2.3. Constructing an LDAP Referrals

 For each DNS SRV resource record returned for the domain, a LDAP URL
 [RFC2255] is constructed.  For the above resource record, the URL
 would be:
   ldap://ldap.example.net:389/
 These URLs are then returned in the referral.  The URLs are currently
 returned in resolver order.  That is, the server itself does not make
 use of priority or weight information in the SRV resource records.  A
 later incarnation of this service may.

3. Protocol Operations

 This section describes how the service performs basic LDAP
 operations.  The service supports operations extended through certain
 controls as described in a later section.

Zeilenga Experimental [Page 4] RFC 3088 OpenLDAP Root Service April 2001

3.1. Basic Operations

 Basic (add, compare, delete, modify, rename, search) operations
 return a referral result if the target (or base) DN can be mapped to
 a set of LDAP URLs as described above.  Otherwise a noSuchObject
 response or other appropriate response is returned.

3.2. Bind Operation

 The service accepts "anonymous" bind specifying version 2 or version
 3 of the protocol.  All other bind requests will return a non-
 successful resultCode.  In particular, clients which submit clear
 text credentials will be sent an unwillingToPerform resultCode with a
 cautionary text regarding providing passwords to strangers.
 As this service is read-only, LDAPv3 authentication [RFC2829] is not
 supported.

3.3. Unbind Operations

 Upon receipt of an unbind request, the server abandons all
 outstanding requests made by client and disconnects.

3.4. Extended Operations

 The service currently does recognize any extended operation.  Later
 incarnations of the service may support Start TLS [RFC2830] and other
 operations.

3.5. Update Operations

 A later incarnation of this service may return unwillingToPerform for
 all update operations as this is an unauthenticated service.

4. Controls

 The service supports the ManageDSAit control.  Unsupported controls
 are serviced per RFC 2251.

4.1. ManageDSAit Control

 The server recognizes and honors the ManageDSAit control [NAMEDREF]
 provided with operations.
 If DNS location information is available for the base DN itself, the
 service will return unwillingToPerform for non-search operations.
 For search operations, an entry will be returned if within scope and
 matches the provided filter.  For example:

Zeilenga Experimental [Page 5] RFC 3088 OpenLDAP Root Service April 2001

     c: searchRequest {
         base="DC=example,DC=net"
         scope=base
         filter=(objectClass=*)
         ManageDSAit
     }
     s: searchEntry {
         dn: DC=example,DC=net
         objectClass: referral
         objectClass: extensibleObject
         dc: example
         ref: ldap://ldap.example.net:389/
         associatedDomain: example.net
     }
     s: searchResult {
         success
     }
 If DNS location information is available for the DC portion of a
 subordinate entry, the service will return noSuchObject with the
 matchedDN set to the DC portion of the base for search and update
 operations.
     c: searchRequest {
         base="CN=subordinate,DC=example,DC=net"
         scope=base
         filter=(objectClass=*)
         ManageDSAit
     }
     s: searchResult {
         noSuchObject
         matchedDN="DC=example,DC=net"
     }

5. Using the Service

 Servers may be configured to refer superior requests to
 <ldap://root.openldap.org:389>.
 Though clients may use the service directly, this is not encouraged.
 Clients should use a local service and only use this service when
 referred to it.
 The service supports LDAPv3 and LDAPv2+ [LDAPv2+] clients over
 TCP/IPv4.  Future incarnations of this service may support TCP/IPv6
 or other transport/internet protocols.

Zeilenga Experimental [Page 6] RFC 3088 OpenLDAP Root Service April 2001

6. Lessons Learned

6.1. Scaling / Reliability

 This service currently runs on a single host.  This host and
 associated network resources are not yet exhausted.  If they do
 become exhausted, we believe we can easily scale to meet the demand
 through common distributed load balancing technics.  The service can
 also easily be duplicated locally.

6.2. Protocol interoperability

 This service has able avoided known interoperability issues in
 supporting variants of LDAP.

6.2.1. LDAPv3

 The server implements all features of LDAPv3 [RFC2251] necessary to
 provide the service.

6.2.2. LDAPv2

 LDAPv2 [RFC1777] does not support the return of referrals and hence
 may not be referred to this service.  Though a LDAPv2 client could
 connect and issue requests to this service, the client would treat
 any referral returned to it as an unknown error.

6.2.3. LDAPv2+

 LDAPv2+ [LDAPv2+] provides a number of extensions to LDAPv2,
 including referrals.  LDAPv2+, like LDAPv3, does not require a bind
 operation before issuing of other operations.  As the referral
 representation differ between LDAPv2+ and LDAPv3, the service returns
 LDAPv3 referrals in this case.  However, as commonly deployed LDAPv2+
 clients issue bind requests (for compatibility with LDAPv2 servers),
 this has not generated any interoperability issues (yet).
 A future incarnation of this service may drop support for LDAPv2+
 (and LDAPv2).

6.2.4. CLDAP

 CLDAP [RFC1798] does not support the return of referrals and hence is
 not supported.

Zeilenga Experimental [Page 7] RFC 3088 OpenLDAP Root Service April 2001

7. Security Considerations

 This service provides information to "anonymous" clients.  This
 information is derived from the public directories, namely the Domain
 Name System.
 The use of authentication would require clients to disclose
 information to the service.  This would be an unnecessary invasion of
 privacy.
 The lack of encryption allows eavesdropping upon client requests and
 responses.  A later incarnation of this service may support
 encryption (such as via Start TLS [RFC2830]).
 Information integrity protection is not provided by the service.  The
 service is subject to varies forms of DNS spoofing and attacks.  LDAP
 session or operation integrity would provide false sense of security
 concerning the integrity of DNS information.  A later incarnation of
 this service may support DNSSEC and provide integrity protection (via
 SASL, TLS, or IPSEC).
 The service is subject to a variety of denial of service attacks.
 The service is capable of blocking access by a number of factors.
 This capability have yet to be used and likely would be ineffective
 in preventing sophisticated attacks.  Later incarnations of this
 service will likely need better protection from such attacks.

8. Conclusions

 DNS is good glue.  By leveraging of the Domain Name System, global
 LDAP directories may be built without requiring a protocol specific
 registration infrastructures.
 In addition, use of DNS service location allows global directories to
 be built "ad hoc".  That is, anyone with a domain name can
 participate.  There is no requirement that the superior domain
 participate.

9. Additional Information

 Additional information about the OpenLDAP Project and the OpenLDAP
 Root Service can be found at <http://www.openldap.org/>.

Zeilenga Experimental [Page 8] RFC 3088 OpenLDAP Root Service April 2001

10. Author's Address

 Kurt Zeilenga
 OpenLDAP Foundation
 EMail: kurt@openldap.org

11. Acknowledgments

 Internet hosting for this experiment is provided by the Internet
 Software Consortium <http://www.isc.org/>.  Computing resources were
 provided by Net Boolean Incorporated <http://www.boolean.net/>.  This
 experiment would not have been possible without the contributions of
 numerous volunteers of the open source community.  Mechanisms
 described in this document are based upon those introduced in
 [RFC2247] and [LOCATE].

References

 [RFC1034]  Mockapetris, P., "Domain Names - Concepts and Facilities",
            STD 13, RFC 1034, November 1987.
 [RFC1777]  Yeong, W., Howes, T. and S. Kille, "Lightweight Directory
            Access Protocol", RFC 1777, March 1995.
 [RFC1798]  Young, A., "Connection-less Lightweight Directory Access
            Protocol", RFC 1798, June 1995.
 [RFC2119]  Bradner, S., "Key Words for use in RFCs to Indicate
            Requirement Levels", BCP 14, RFC 2119, March 1997.
 [RFC2247]  Kille, S., Wahl, M., Grimstad, A., Huber, R. and S.
            Sataluri, "Using Domains in LDAP/X.500 Distinguished
            Names", RFC 2247, January 1998.
 [RFC2251]  Wahl, M., Howes, T. and S. Kille, "Lightweight Directory
            Access Protocol (v3)", RFC 2251, December 1997.
 [RFC2253]  Wahl, M., Kille, S. and T. Howes, "Lightweight Directory
            Access Protocol (v3): UTF-8 String Representation of
            Distinguished Names", RFC 2253, December 1997.
 [RFC2255]  Howes, T. and M. Smith, "The LDAP URL Format", RFC 2255,
            December 1997.
 [RFC2782]  Gulbrandsen, A., Vixie, P. and L. Esibov, "A DNS RR for
            specifying the location of services (DNS SRV)", RFC 2782,
            February 2000.

Zeilenga Experimental [Page 9] RFC 3088 OpenLDAP Root Service April 2001

 [RFC2829]  Wahl, M., Alvestrand, H., Hodges, J. and R. Morgan,
            "Authentication Methods for LDAP", RFC 2829, May 2000.
 [RFC2830]  Hodges, J., Morgan, R. and M. Wahl, "Lightweight Directory
            Access Protocol (v3): Extension for Transport Layer
            Security", RFC 2830, May 2000.
 [LOCATE]   IETF LDAPext WG, "Discovering LDAP Services with DNS",
            Work in Progress.
 [LDAPv2+]  University of Michigan LDAP Team, "Referrals within the
            LDAPv2 Protocol", August 1996.
 [NAMEDREF] Zeilenga, K. (editor), "Named Subordinate References in
            LDAP Directories", Work in Progress.
 [X500]     ITU-T Rec. X.500, "The Directory: Overview of Concepts,
            Models and Service",  1993.

Zeilenga Experimental [Page 10] RFC 3088 OpenLDAP Root Service April 2001

Full Copyright Statement

 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.

Acknowledgement

 Funding for the RFC Editor function is currently provided by the
 Internet Society.

Zeilenga Experimental [Page 11]

/data/webs/external/dokuwiki/data/pages/rfc/rfc3088.txt · Last modified: 2001/04/11 21:48 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki