]> git.sur5r.net Git - openldap/blob - doc/drafts/draft-ietf-ldapext-locate-xx.txt
Use getpassphrase() instead of getpass() if available.
[openldap] / doc / drafts / draft-ietf-ldapext-locate-xx.txt
1 INTERNET-DRAFT                                         Michael P. Armijo
2 <draft-ietf-ldapext-locate-02.txt>                          Levon Esibov
3 April, 2000                                                   Paul Leach
4 Expires: October, 2000                             Microsoft Corporation
5                                                              R.L. Morgan
6                                                 University of Washington
7
8                 Discovering LDAP Services with DNS
9
10 Status of this Memo
11
12    This document is an Internet-Draft and is in full conformance with
13    all provisions of Section 10 of RFC2026.
14
15    Internet-Drafts are working documents of the Internet Engineering
16    Task Force (IETF), its areas, and its working groups.  Note that
17    other groups may also distribute working documents as Internet-
18    Drafts.
19
20    Internet-Drafts are draft documents valid for a maximum of six months
21    and may be updated, replaced, or obsoleted by other documents at any
22    time.  It is inappropriate to use Internet- Drafts as reference
23    material or to cite them other than as "work in progress."
24
25    The list of current Internet-Drafts can be accessed at
26    http://www.ietf.org/ietf/1id-abstracts.txt
27
28    The list of Internet-Draft Shadow Directories can be accessed at
29    http://www.ietf.org/shadow.html.
30
31    Distribution of this memo is unlimited.  It is filed as <draft-
32    ietf-ldapext-locate-02.txt>, and expires on October 15, 2000.  
33    Please send comments to the authors.
34
35
36 1. Abstract
37
38    A Lightweight Directory Access Protocol (LDAP) request must be
39    directed to an appropriate server for processing.  This document
40    specifies a method for discovering such servers using information in
41    the Domain Name System. 
42
43
44 2. Introduction
45
46    The LDAPv3 protocol [1] is designed to be a lightweight access
47    protocol for directory services supporting X.500 models.  As a
48    distributed directory service, the complete set of directory
49    information (known as the Directory Information Base) is spread
50    across many different servers.  Hence there is the need to
51    determine, when initiating or processing a request, which servers
52    hold the relevant information.  In LDAP, the Search, Modify, Add,
53    Delete, ModifyDN, and Compare operations all specify a Distinguished
54    Name (DN) [2] on which the operation is performed.  A client, or a
55    server acting on behalf of a client, must be able to determine the
56    server(s) that hold the naming context containing that DN, since
57    that server (or one of that set of servers) must receive and process
58    the request.  This determination process is called "server
59    location".  To support dynamic distributed operation, the
60    information needed to support server location must be available via
61    lookups done at request processing time, rather than, for example,
62    as static data configured into each client or server.
63
64    It is possible to maintain the information needed to support server
65    location in the directory itself, and X.500 directory deployments
66    typically do so.  In practice, however, this only permits location
67    of servers within a limited X.500-connected set.  LDAP-specific
68    methods of maintaining server location information in the directory
69    have not yet been standardized.  This document defines an
70    alternative method of managing server location information using the
71    Domain Name System. This method takes advantage of the global
72    deployment of the DNS, by allowing LDAP server location information
73    for any existing DNS domain to be published by creating the records
74    described below.  A full discussion of the benefits and drawbacks of
75    the various directory location and naming methods is beyond the
76    scope of this document.
77
78    RFC 2247[3] defines an algorithm for mapping DNS domain names into
79    DNs.  This document defines the inverse mapping, from DNs to DNS
80    domain names, based on the conventions in [3], for use in this
81    server location method.  The server location method described in
82    this document is only defined for DNs that can be so mapped, i.e.,
83    those DNs that are based on domain names.  In practice this is
84    reasonable because many objects of interest are named with domain
85    names, and use of domain-name-based DNs is becoming common.
86
87
88 3. Mapping Distinguished Names into Domain Names
89
90    This section defines a method of converting a DN into a DNS domain
91    name for use in the server location method described below.  Some
92    DNs cannot be converted into a domain name.
93
94    The output domain name is initially empty.  For each RDN component
95    of the DN, beginning with the first, if the attribute type is "DC",
96    then the attribute value is used as a domain name component (label).
97    The first such value becomes the most significant (i.e., rightmost)
98    domain name component, and successive values occupy less significant
99    positions (i.e., extending leftward), in order.  If the attribute
100    type is not "DC", then processing stops.  If the first RDN component
101    of the DN is not of type "DC" then the DN cannot be converted to a
102    domain name.
103
104
105 4. Locating LDAP servers through DNS
106
107    LDAP server location information is to be stored using DNS Service
108    Location Record (SRV)[5].  The data in a SRV record contains the DNS
109    name of the server that provides the LDAP service, corresponding
110    Port number, and parameters that enable the client to choose an
111    appropriate server from multiple servers according to the algorithm
112    described in [5].  The name of this record has the following format:
113
114       _<Service>._<Proto>.<Domain>
115
116    where <Service> is always "ldap", and <Proto> is a protocol that can
117    be either "udp" or "tcp".  <Domain> is the domain name formed by
118    converting the DN of a naming context mastered by the LDAP Server
119    into a domain name using the algorithm in Section 2.  Note that
120    "ldap" is the symbolic name for the LDAP service in Assigned
121    Numbers[6], as required by [5].
122
123    Presence of such records enables clients to find the LDAP servers
124    using standard DNS query [4].  A client (or server) seeking an LDAP
125    server for a particular DN converts that DN to a domain name using
126    the algorithm of Section 2, does a SRV record query using the DNS
127    name formed as described in the preceding paragraph, and interprets
128    the response as described in [5] to determine a host (or hosts) to
129    contact. As an example, a client that searches for an LDAP server
130    for the DN "ou=foo,dc=example,dc=net" that supports the TCP protocol
131    will submit a DNS query for a set of SRV records with owner name:
132
133       _ldap._tcp.example.net.
134
135    The client will receive the list of SRV records published in DNS
136    that satisfy the requested criteria.  The following is an example of
137    such a record:
138
139       _ldap._tcp.example.net.   IN        SRV  0 0 389 phoenix.example.net.
140
141    The set of returned records may contain multiple records in the case
142    where multiple LDAP servers serve the same domain.
143
144
145
146 5. Security Considerations
147
148    This document describes a method that uses DNS SRV records to 
149    discover LDAP servers.  All security considerations related to DNS
150    SRV records are inherited by this document.  See the security 
151    considerations section in [6] for more details.
152
153
154 6. References
155
156    [1]  Wahl, M., Howes, T. and S. Kille, "Lightweight Directory Access
157         Protocol(v3)", RFC 2251, December 1997.
158
159    [2]  Wahl, M., Kille, S. and T. Howes, "Lightweight Directory Access
160         Protocol (v3):  UTF-8 String Representation of Distinguished
161         Names", RFC 2253, December 1997.
162
163    [3]  Kille, S. and M. Wahl, "Using Domains in LDAP/X.500
164         Distinguished Names", RFC 2247, January 1998.
165
166    [4]  Mockapetris, P., "DOMAIN NAMES - CONCEPTS AND FACILITIES", RFC
167         1034, STD 13, November 1987.
168
169    [5]  Gulbrandsen, A., Vixie, P. and L. Esibov, "A DNS RR for
170         specifying the location of services (DNS SRV)", RFC 2782,
171         February 2000.
172
173    [6]  Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC
174         1700, October 1994.
175
176
177 6. Authors' Addresses
178
179    Michael P. Armijo
180    One Microsoft Way
181    Redmond, WA 98052
182    micharm@microsoft.com
183
184    Paul Leach
185    One Microsoft Way
186    Redmond, WA 98052
187    paulle@microsoft.com
188
189    Levon Esibov
190    One Microsoft Way
191    Redmond, WA 98052
192    levone@microsoft.com
193
194    RL "Bob" Morgan
195    University of Washington
196    4545 15th Ave NE
197    Seattle, WA  98105
198    US
199
200    Phone: +1 206 221 3307
201    EMail: rlmorgan@washington.edu
202    URI:   http://staff.washington.edu/rlmorgan/
203
204    Expires October, 2000
205