GENWiki

Premier IT Outsourcing and Support Services within the UK

User Tools

Site Tools


rfc:rfc2255

Network Working Group T. Howes Request for Comments: 2255 M. Smith Category: Standards Track Netscape Communications Corp.

                                                       December 1997
                        The LDAP URL Format

1. Status of this Memo

 This document specifies an Internet standards track protocol for the
 Internet community, and requests discussion and suggestions for
 improvements.  Please refer to the current edition of the "Internet
 Official Protocol Standards" (STD 1) for the standardization state
 and status of this protocol.  Distribution of this memo is unlimited.

Copyright Notice

 Copyright (C) The Internet Society (1997).  All Rights Reserved.

IESG NOTE

 This document describes a directory access protocol that provides
 both read and update access.  Update access requires secure
 authentication, but this document does not mandate implementation of
 any satisfactory authentication mechanisms.
 In accordance with RFC 2026, section 4.4.1, this specification is
 being approved by IESG as a Proposed Standard despite this
 limitation, for the following reasons:
 a. to encourage implementation and interoperability testing of
    these protocols (with or without update access) before they
    are deployed, and
 b. to encourage deployment and use of these protocols in read-only
    applications.  (e.g. applications where LDAPv3 is used as
    a query language for directories which are updated by some
    secure mechanism other than LDAP), and
 c. to avoid delaying the advancement and deployment of other Internet
    standards-track protocols which require the ability to query, but
    not update, LDAPv3 directory servers.

Howes & Smith Standards Track [Page 1] RFC 2255 LDAP URL Format December 1997

 Readers are hereby warned that until mandatory authentication
 mechanisms are standardized, clients and servers written according to
 this specification which make use of update functionality are
 UNLIKELY TO INTEROPERATE, or MAY INTEROPERATE ONLY IF AUTHENTICATION
 IS REDUCED TO AN UNACCEPTABLY WEAK LEVEL.
 Implementors are hereby discouraged from deploying LDAPv3 clients or
 servers which implement the update functionality, until a Proposed
 Standard for mandatory authentication in LDAPv3 has been approved and
 published as an RFC.

2. Abstract

 LDAP is the Lightweight Directory Access Protocol, defined in [1],
 [2] and [3].  This document describes a format for an LDAP Uniform
 Resource Locator.  The format describes an LDAP search operation to
 perform to retrieve information from an LDAP directory. This document
 replaces RFC 1959. It updates the LDAP URL format for version 3 of
 LDAP and clarifies how LDAP URLs are resolved. This document also
 defines an extension mechanism for LDAP URLs, so that future
 documents can extend their functionality, for example, to provide
 access to new LDAPv3 extensions as they are defined.
 The key words "MUST", "MAY", and "SHOULD" used in this document are
 to be interpreted as described in [6].

Howes & Smith Standards Track [Page 2] RFC 2255 LDAP URL Format December 1997

3. URL Definition

 An LDAP URL begins with the protocol prefix "ldap" and is defined by
 the following grammar.
     ldapurl    = scheme "://" [hostport] ["/"
                  [dn ["?" [attributes] ["?" [scope]
                  ["?" [filter] ["?" extensions]]]]]]
     scheme     = "ldap"
     attributes = attrdesc *("," attrdesc)
     scope      = "base" / "one" / "sub"
     dn         = distinguishedName from Section 3 of [1]
     hostport   = hostport from Section 5 of RFC 1738 [5]
     attrdesc   = AttributeDescription from Section 4.1.5 of [2]
     filter     = filter from Section 4 of [4]
     extensions = extension *("," extension)
     extension  = ["!"] extype ["=" exvalue]
     extype     = token / xtoken
     exvalue    = LDAPString from section 4.1.2 of [2]
     token      = oid from section 4.1 of [3]
     xtoken     = ("X-" / "x-") token
 The "ldap" prefix indicates an entry or entries residing in the LDAP
 server running on the given hostname at the given portnumber. The
 default LDAP port is TCP port 389. If no hostport is given, the
 client must have some apriori knowledge of an appropriate LDAP server
 to contact.
 The dn is an LDAP Distinguished Name using the string format
 described in [1]. It identifies the base object of the LDAP search.
 ldapurl    = scheme "://" [hostport] ["/"
                  [dn ["?" [attributes] ["?" [scope]
                  ["?" [filter] ["?" extensions]]]]]]
     scheme     = "ldap"
     attributes = attrdesc *("," attrdesc)
     scope      = "base" / "one" / "sub"
     dn         = distinguishedName from Section 3 of [1]
     hostport   = hostport from Section 5 of RFC 1738 [5]
     attrdesc   = AttributeDescription from Section 4.1.5 of [2]
     filter     = filter from Section 4 of [4]
     extensions = extension *("," extension)
     extension  = ["!"] extype ["=" exvalue]
     extype     = token / xtoken
     exvalue    = LDAPString from section 4.1.2 of [2]
     token      = oid from section 4.1 of [3]
     xtoken     = ("X-" / "x-") token

Howes & Smith Standards Track [Page 3] RFC 2255 LDAP URL Format December 1997

 The "ldap" prefix indicates an entry or entries residing in the LDAP
 server running on the given hostname at the given portnumber. The
 default LDAP port is TCP port 389. If no hostport is given, the
 client must have some apriori knowledge of an appropriate LDAP server
 to contact.
 The dn is an LDAP Distinguished Name using the string format
 described in [1]. It identifies the base object of the LDAP search.
 The attributes construct is used to indicate which attributes should
 be returned from the entry or entries.  Individual attrdesc names are
 as defined for AttributeDescription in [2].  If the attributes part
 is omitted, all user attributes of the entry or entries should be
 requested (e.g., by setting the attributes field
 AttributeDescriptionList in the LDAP search request to a NULL list,
 or (in LDAPv3) by requesting the special attribute name "*").
 The scope construct is used to specify the scope of the search to
 perform in the given LDAP server.  The allowable scopes are "base"
 for a base object search, "one" for a one-level search, or "sub" for
 a subtree search.  If scope is omitted, a scope of "base" is assumed.
 The filter is used to specify the search filter to apply to entries
 within the specified scope during the search.  It has the format
 specified in [4].  If filter is omitted, a filter of
 "(objectClass=*)" is assumed.
 The extensions construct provides the LDAP URL with an extensibility
 mechanism, allowing the capabilities of the URL to be extended in the
 future. Extensions are a simple comma-separated list of type=value
 pairs, where the =value portion MAY be omitted for options not
 requiring it. Each type=value pair is a separate extension. These
 LDAP URL extensions are not necessarily related to any of the LDAPv3
 extension mechanisms. Extensions may be supported or unsupported by
 the client resolving the URL. An extension prefixed with a '!'
 character (ASCII 33) is critical. An extension not prefixed with a '
 !'  character is non-critical.
 If an extension is supported by the client, the client MUST obey the
 extension if the extension is critical. The client SHOULD obey
 supported extensions that are non-critical.
 If an extension is unsupported by the client, the client MUST NOT
 process the URL if the extension is critical.  If an unsupported
 extension is non-critical, the client MUST ignore the extension.

Howes & Smith Standards Track [Page 4] RFC 2255 LDAP URL Format December 1997

 If a critical extension cannot be processed successfully by the
 client, the client MUST NOT process the URL. If a non-critical
 extension cannot be processed successfully by the client, the client
 SHOULD ignore the extension.
 Extension types prefixed by "X-" or "x-" are reserved for use in
 bilateral agreements between communicating parties. Other extension
 types MUST be defined in this document, or in other standards-track
 documents.
 One LDAP URL extension is defined in this document in the next
 section.  Other documents or a future version of this document MAY
 define other extensions.
 Note that any URL-illegal characters (e.g., spaces), URL special
 characters (as defined in section 2.2 of RFC 1738) and the reserved
 character '?' (ASCII 63) occurring inside a dn, filter, or other
 element of an LDAP URL MUST be escaped using the % method described
 in RFC 1738 [5]. If a comma character ',' occurs inside an extension
 value, the character MUST also be escaped using the % method.

4. The Bindname Extension

 This section defines an LDAP URL extension for representing the
 distinguished name for a client to use when authenticating to an LDAP
 directory during resolution of an LDAP URL. Clients MAY implement
 this extension.
 The extension type is "bindname". The extension value is the
 distinguished name of the directory entry to authenticate as, in the
 same form as described for dn in the grammar above. The dn may be the
 NULL string to specify unauthenticated access. The extension may be
 either critical (prefixed with a '!' character) or non-critical (not
 prefixed with a '!' character).
 If the bindname extension is critical, the client resolving the URL
 MUST authenticate to the directory using the given distinguished name
 and an appropriate authentication method. Note that for a NULL
 distinguished name, no bind MAY be required to obtain anonymous
 access to the directory. If the extension is non-critical, the client
 MAY bind to the directory using the given distinguished name.

5. URL Processing

 This section describes how an LDAP URL SHOULD be resolved by a
 client.

Howes & Smith Standards Track [Page 5] RFC 2255 LDAP URL Format December 1997

 First, the client obtains a connection to the LDAP server referenced
 in the URL, or an LDAP server of the client's choice if no LDAP
 server is explicitly referenced.  This connection MAY be opened
 specifically for the purpose of resolving the URL or the client MAY
 reuse an already open connection. The connection MAY provide
 confidentiality, integrity, or other services, e.g., using TLS. Use
 of security services is at the client's discretion if not specified
 in the URL.
 Next, the client authenticates itself to the LDAP server.  This step
 is optional, unless the URL contains a critical bindname extension
 with a non-NULL value. If a bindname extension is given, the client
 proceeds according to the section above.
 If a bindname extension is not specified, the client MAY bind to the
 directory using a appropriate dn and authentication method of its own
 choosing (including NULL authentication).
 Next, the client performs the LDAP search operation specified in the
 URL. Additional fields in the LDAP protocol search request, such as
 sizelimit, timelimit, deref, and anything else not specified or
 defaulted in the URL specification, MAY be set at the client's
 discretion.
 Once the search has completed, the client MAY close the connection to
 the LDAP server, or the client MAY keep the connection open for
 future use.

6. Examples

 The following are some example LDAP URLs using the format defined
 above.  The first example is an LDAP URL referring to the University
 of Michigan entry, available from an LDAP server of the client's
 choosing:
   ldap:///o=University%20of%20Michigan,c=US
 The next example is an LDAP URL referring to the University of
 Michigan entry in a particular ldap server:
   ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US
 Both of these URLs correspond to a base object search of the
 "o=University of Michigan, c=US" entry using a filter of
 "(objectclass=*)", requesting all attributes.
 The next example is an LDAP URL referring to only the postalAddress
 attribute of the University of Michigan entry:

Howes & Smith Standards Track [Page 6] RFC 2255 LDAP URL Format December 1997

   ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,
          c=US?postalAddress
 The corresponding LDAP search operation is the same as in the
 previous example, except that only the postalAddress attribute is
 requested.
 The next example is an LDAP URL referring to the set of entries found
 by querying the given LDAP server on port 6666 and doing a subtree
 search of the University of Michigan for any entry with a common name
 of "Babs Jensen", retrieving all attributes:
   ldap://host.com:6666/o=University%20of%20Michigan,
          c=US??sub?(cn=Babs%20Jensen)
 The next example is an LDAP URL referring to all children of the c=GB
 entry:
   ldap://ldap.itd.umich.edu/c=GB?objectClass?one
 The objectClass attribute is requested to be returned along with the
 entries, and the default filter of "(objectclass=*)" is used.
 The next example is an LDAP URL to retrieve the mail attribute for
 the LDAP entry named "o=Question?,c=US" is given below, illustrating
 the use of the escaping mechanism on the reserved character '?'.
   ldap://ldap.question.com/o=Question%3f,c=US?mail
 The next example illustrates the interaction between LDAP and URL
 quoting mechanisms.
   ldap://ldap.netscape.com/o=Babsco,c=US??(int=%5c00%5c00%5c00%5c04)
 The filter in this example uses the LDAP escaping mechanism of \ to
 encode three zero or null bytes in the value. In LDAP, the filter
 would be written as (int=\00\00\00\04). Because the \ character must
 be escaped in a URL, the \'s are escaped as %5c in the URL encoding.
 The final example shows the use of the bindname extension to specify
 the dn a client should use for authentication when resolving the URL.
   ldap:///??sub??bindname=cn=Manager%2co=Foo
   ldap:///??sub??!bindname=cn=Manager%2co=Foo
 The two URLs are the same, except that the second one marks the
 bindname extension as critical. Notice the use of the % encoding
 method to encode the comma in the distinguished name value in the

Howes & Smith Standards Track [Page 7] RFC 2255 LDAP URL Format December 1997

 bindname extension.

7. Security Considerations

 General URL security considerations discussed in [5] are relevant for
 LDAP URLs.
 The use of security mechanisms when processing LDAP URLs requires
 particular care, since clients may encounter many different servers
 via URLs, and since URLs are likely to be processed automatically,
 without user intervention. A client SHOULD have a user-configurable
 policy about which servers to connect to using which security
 mechanisms, and SHOULD NOT make connections that are inconsistent
 with this policy.
 Sending authentication information, no matter the mechanism, may
 violate a user's privacy requirements.  In the absence of specific
 policy permitting authentication information to be sent to a server,
 a client should use an anonymous connection.  (Note that clients
 conforming to previous LDAP URL specifications, where all connections
 are anonymous and unprotected, are consistent with this
 specification; they simply have the default security policy.)
 Some authentication methods, in particular reusable passwords sent to
 the server, may reveal easily-abused information to the remote server
 or to eavesdroppers in transit, and should not be used in URL
 processing unless explicitly permitted by policy.  Confirmation by
 the human user of the use of authentication information is
 appropriate in many circumstances.  Use of strong authentication
 methods that do not reveal sensitive information is much preferred.
 The LDAP URL format allows the specification of an arbitrary LDAP
 search operation to be performed when evaluating the LDAP URL.
 Following an LDAP URL may cause unexpected results, for example, the
 retrieval of large amounts of data, the initiation of a long-lived
 search, etc.  The security implications of resolving an LDAP URL are
 the same as those of resolving an LDAP search query.

8. Acknowledgements

 The LDAP URL format was originally defined at the University of
 Michigan. This material is based upon work supported by the National
 Science Foundation under Grant No. NCR-9416667. The support of both
 the University of Michigan and the National Science Foundation is
 gratefully acknowledged.

Howes & Smith Standards Track [Page 8] RFC 2255 LDAP URL Format December 1997

 Several people have made valuable comments on this document.  In
 particular RL "Bob" Morgan and Mark Wahl deserve special thanks for
 their contributions.

9. References

 [1] Wahl, M., Kille, S., and T. Howes, "Lightweight Directory Access
 Protocol (v3): UTF-8 String Representation of Distinguished Names",
 RFC 2253, December 1997.
 [2] Wahl, M., Howes, T., and S. Kille, "Lightweight Directory Access
 Protocol (v3)", RFC 2251, December 1997.
 [3] Wahl, M., Coulbeck, A., Howes, T. and S. Kille, "Lightweight
 Directory Access Protocol (v3): Attribute Syntax Definitions", RFC
 2252, December 1997.
 [4] Howes, T., "A String Representation of LDAP Search Filters", RFC
 2254, December 1997.
 [5] Berners-Lee, T., Masinter, L. and M. McCahill, "Uniform Resource
 Locators (URL)," RFC 1738, December 1994.
 [6] Bradner, S., "Key Words for use in RFCs to Indicate Requirement
 Levels," RFC 2119, March 1997.

Authors' Addresses

 Tim Howes
 Netscape Communications Corp.
 501 E. Middlefield Rd.
 Mountain View, CA 94043
 USA
 Phone: +1 415 937-3419
 EMail: howes@netscape.com
 Mark Smith
 Netscape Communications Corp.
 501 E. Middlefield Rd.
 Mountain View, CA 94043
 USA
 Phone: +1 415 937-3477
 EMail: mcs@netscape.com

Howes & Smith Standards Track [Page 9] RFC 2255 LDAP URL Format December 1997

Full Copyright Statement

 Copyright (C) The Internet Society (1997).  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.

Howes & Smith Standards Track [Page 10]

/data/webs/external/dokuwiki/data/pages/rfc/rfc2255.txt · Last modified: 1997/12/24 00:40 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki