draft-ietf-ldapbis-url-07.txt   draft-ietf-ldapbis-url-08.txt 
Network Working Group Mark Smith, Editor Network Working Group Mark Smith, Editor
Request for Comments: DRAFT Pearl Crescent, LLC Request for Comments: DRAFT Pearl Crescent, LLC
Obsoletes: RFC 2255 Tim Howes Obsoletes: RFC 2255 Tim Howes
Expires: 24 April 2005 Opsware, Inc. Expires: 16 May 2005 Opsware, Inc.
24 October 2004 16 November 2004
LDAP: Uniform Resource Locator LDAP: Uniform Resource Locator
<draft-ietf-ldapbis-url-07.txt> <draft-ietf-ldapbis-url-08.txt>
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she become have been or will be disclosed, and any of which he or she become
aware will be disclosed, in accordance with RFC 3668. aware will be disclosed, in accordance with RFC 3668.
This document is intended to be published as a Standards Track RFC, This document is intended to be published as a Standards Track RFC,
replacing RFC 2255. Distribution of this memo is unlimited. replacing RFC 2255. Distribution of this memo is unlimited.
skipping to change at page 2, line 7 skipping to change at page 2, line 7
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html http://www.ietf.org/shadow.html
Copyright (C) The Internet Society (2004). All Rights Reserved. Copyright (C) The Internet Society (2004). All Rights Reserved.
Please see the Full Copyright section near the end of this document Please see the Full Copyright section near the end of this document
for more information. for more information.
Abstract Abstract
This document describes a format for an LDAP Uniform Resource Locator This document describes a format for a Lightweight Directory Access
(URL). An LDAP URL describes an LDAP search operation that is used Protocol (LDAP) Uniform Resource Locator (URL). An LDAP URL
to retrieve information from an LDAP directory, or, in the context of describes an LDAP search operation that is used to retrieve
an LDAPv3 referral or reference, an LDAP URL describes a service information from an LDAP directory, or, in the context of an LDAP
where an LDAP operation may be progressed. referral or reference, an LDAP URL describes a service where an LDAP
operation may be progressed.
Table of Contents Table of Contents
Status of this Memo............................................1 Status of this Memo............................................1
Abstract.......................................................2 Abstract.......................................................2
Table of Contents..............................................2 Table of Contents..............................................2
1. Introduction...................................................2 1. Introduction...................................................2
2. URL Definition.................................................3 2. URL Definition.................................................3
2.1. Escaping Using the % Method.................................5 2.1. Escaping Using the % Method.................................5
3. Defaults for Fields of the LDAP URL............................5 3. Defaults for Fields of the LDAP URL............................5
4. Examples.......................................................6 4. Examples.......................................................6
5. Security Considerations........................................8 5. Security Considerations........................................8
6. IANA Considerations............................................9 6. IANA Considerations............................................9
7. Normative References...........................................9 7. Normative References...........................................9
8. Informative References.........................................10 8. Informative References.........................................10
9. Intellectual Property Rights...................................10 9. Acknowledgements...............................................10
10. Acknowledgements...............................................10 10. Authors' Addresses.............................................10
11. Authors' Addresses.............................................11 11. Appendix A: Changes Since RFC 2255.............................11
12. Appendix A: Changes Since RFC 2255.............................11 11.1. Technical Changes...........................................11
12.1. Technical Changes...........................................11 11.2. Editorial Changes...........................................11
12.2. Editorial Changes...........................................12 12. Appendix B: Changes Since Previous Document Revision...........13
13. Appendix B: Changes Since Previous Document Revision...........13 12.1. Technical Changes...........................................13
13.1. Editorial Changes...........................................14 12.2. Editorial Changes...........................................14
14. Intellectual Property Rights...................................14 Intellectual Property Rights...................................15
15. Full Copyright.................................................14 Full Copyright.................................................15
1. Introduction 1. Introduction
LDAP is the Lightweight Directory Access Protocol, defined in LDAP is the Lightweight Directory Access Protocol [Roadmap]. This
[Protocol]. This document specifies the LDAP URL format for version document specifies the LDAP URL format for version 3 of LDAP and
3 of LDAP and clarifies how LDAP URLs are resolved. This document clarifies how LDAP URLs are resolved. This document also defines an
also defines an extension mechanism for LDAP URLs, so that future extension mechanism for LDAP URLs. This mechanism may be used to
documents can extend their functionality, for example, to provide provide access to new LDAP extensions.
access to new LDAPv3 extensions as they are defined. Note: not all
of the parameters of the LDAP search operation described in
[Protocol] can be expressed using the format defined in this
document.
This document is an integral part of the LDAP Technical Specification Note that not all of the parameters of the LDAP search operation
[Roadmap]. described in [Protocol] can be expressed using the format defined in
this document. Note also that URLs may be used to represent reference
knowledge, including for non-search operations.
This document is a integral part of the LDAP technical specification
[Roadmap] which obsoletes the previously defined LDAP technical
specification, RFC 3377, in its entirety.
This document replaces RFC 2255. See Appendix A for a list of changes This document replaces RFC 2255. See Appendix A for a list of changes
relative to RFC 2255. relative to RFC 2255.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14 [RFC2119]. document are to be interpreted as described in BCP 14 [RFC2119].
2. URL Definition 2. URL Definition
An LDAP URL begins with the protocol prefix "ldap" and is defined by An LDAP URL begins with the protocol prefix "ldap" and is defined by
the following grammar, following the ABNF notation defined in the following grammar, following the ABNF notation defined in
[RFC2234]. [RFC2234].
ldapurl = scheme COLON SLASH SLASH [hostport] [SLASH dn ldapurl = scheme COLON SLASH SLASH [hostport] [SLASH dn
[QUESTION [attributes] [QUESTION [scope] [QUESTION [attributes] [QUESTION [scope]
[QUESTION [filter] [QUESTION extensions]]]]] [QUESTION [filter] [QUESTION extensions]]]]]
; <hostport> is from Section
; 3.2.2 of [RFC2396] as updated
; by [RFC2732] to allow IPv6
; literal addresses.
; <filter> is from Section 3 of
; [Filters], subject to the
; provisions of the "Escaping
; Using the % Method" section
; below.
scheme = "ldap" scheme = "ldap"
hostport = <hostport from Section 3.2.2 of [RFC2396]>
; As updated by [RFC2732] to allow dn = distinguishedName ; From Section 3 of [LDAPDN].
; IPv6 literal addresses ; See the "Escaping Using the
dn = <distinguishedName from Section 3 of [LDAPDN]> ; % Method" section below.
; See the "Escaping Using the % Method"
; section below.
attributes = attrdesc *(COMMA attrdesc) attributes = attrdesc *(COMMA attrdesc)
attrdesc = <AttributeDescription attrdesc = selector *(COMMA selector)
from Section 4.1.4 of [Protocol]> selector = attributeSelector ; From Section 4.5.1 of
/ ASTERISK ; [Protocol]. See the "Escaping
; See the "Escaping Using the % Method" ; Using the % Method" section
; section below. ; below.
scope = "base" / "one" / "sub" scope = "base" / "one" / "sub"
filter = <filter from Section 4 of [Filters]>
; See the "Escaping Using the % Method"
; section below.
extensions = extension *(COMMA extension) extensions = extension *(COMMA extension)
extension = [EXCLAMATION] extype [EQUALS exvalue] extension = [EXCLAMATION] extype [EQUALS exvalue]
extype = oid / oiddescr extype = oid ; From section 1.4 of [Models].
exvalue = <LDAPString from section 4.1.2 of [Protocol]>
; See the "Escaping Using the % Method" exvalue = LDAPString ; From section 4.1.2 of
; section below. ; [Protocol]. See the "Escaping
oid = <LDAPOID from section 4.1.2 of [Protocol]> ; Using the % Method" section
oiddescr = <name from section 3.3 of [LDAPIANA]> ; below.
EXCLAMATION = %x21 ; exclamation mark ("!") EXCLAMATION = %x21 ; exclamation mark ("!")
ASTERISK = %x2A ; asterisk ("*")
SLASH = %x2F ; forward slash ("/") SLASH = %x2F ; forward slash ("/")
COLON = %x3A ; colon (":") COLON = %x3A ; colon (":")
QUESTION = %x3F ; question mark ("?") QUESTION = %x3F ; question mark ("?")
The "ldap" prefix indicates an entry or entries accessible from the The "ldap" prefix indicates an entry or entries accessible from the
LDAP server running on the given hostname at the given portnumber. LDAP server running on the given hostname at the given portnumber.
Note that the hostport may contain literal IPv6 addresses as Note that the <hostport> may contain literal IPv6 addresses as
specified in [RFC2732]. specified in [RFC2732].
The dn is an LDAP Distinguished Name using the string format The <dn> is an LDAP Distinguished Name using the string format
described in [LDAPDN]. It identifies the base object of the LDAP described in [LDAPDN]. It identifies the base object of the LDAP
search or the target of a non-search operation. search or the target of a non-search operation.
The attributes construct is used to indicate which attributes should The <attributes> construct is used to indicate which attributes
be returned from the entry or entries. Individual attrdesc names are should be returned from the entry or entries.
as defined for AttributeDescription in [Protocol].
The scope construct is used to specify the scope of the search to The <scope> construct is used to specify the scope of the search to
perform in the given LDAP server. The allowable scopes are "base" 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 for a base object search, "one" for a one-level search, or "sub" for
a subtree search. a subtree search.
The filter is used to specify the search filter to apply to entries The <filter> is used to specify the search filter to apply to entries
within the specified scope during the search. It has the format within the specified scope during the search. It has the format
specified in [Filters]. specified in [Filters].
The extensions construct provides the LDAP URL with an extensibility The <extensions> construct provides the LDAP URL with an
mechanism, allowing the capabilities of the URL to be extended in the extensibility mechanism, allowing the capabilities of the URL to be
future. Extensions are a simple comma-separated list of type=value extended in the future. Extensions are a simple comma-separated list
pairs, where the =value portion MAY be omitted for options not of type=value pairs, where the =value portion MAY be omitted for
requiring it. Each type=value pair is a separate extension. These options not requiring it. Each type=value pair is a separate
LDAP URL extensions are not necessarily related to any of the LDAPv3 extension. These LDAP URL extensions are not necessarily related to
extension mechanisms. Extensions may be supported or unsupported by any of the LDAP extension mechanisms. Extensions may be supported or
the client resolving the URL. An extension prefixed with a '!' unsupported by the client resolving the URL. An extension prefixed
character (ASCII 0x21) is critical. An extension not prefixed with a with a '!' character (ASCII 0x21) is critical. An extension not
'!' character is non-critical. prefixed with a '!' character is non-critical.
If an LDAP URL extension is implemented (that is, if the If an LDAP URL extension is implemented (that is, if the
implementation understands it and is able to use it), the implementation understands it and is able to use it), the
implementation MUST make use of it. If an extension is not implementation MUST make use of it. If an extension is not
implemented and is marked critical, the implementation MUST NOT implemented and is marked critical, the implementation MUST NOT
process the URL. If an extension is not implemented and it not process the URL. If an extension is not implemented and it not
marked critical, the implementation MUST ignore the extension. marked critical, the implementation MUST ignore the extension.
The extension type (extype) MAY be specified using the oid form The extension type (<extype>) MAY be specified using the numeric OID
(e.g., 1.2.3.4) or the oiddesc form (e.g., myLDAPURLExtension). Use <numericoid> form (e.g., 1.2.3.4) or the descriptor <descr> form
of the oiddesc form SHOULD be restricted to registered object (e.g., myLDAPURLExtension). Use of the <descr> form SHOULD be
identifier descriptive names. See [LDAPIANA] for registration restricted to registered object identifier descriptive names. See
details and usage guidelines for descriptive names. [LDAPIANA] for registration details and usage guidelines for
descriptive names.
No LDAP URL extensions are defined in this document. Other documents No LDAP URL extensions are defined in this document. Other documents
or a future version of this document MAY define one or more or a future version of this document MAY define one or more
extensions. extensions.
2.1. Escaping Using the % Method 2.1. Escaping Using the % Method
A generated LDAP URL MUST consist only of the restricted set of A generated LDAP URL MUST consist only of the restricted set of
characters included in the uric production that is defined in section characters included in the <uric> production that is defined in
2 of [RFC2396]. Implementations SHOULD accept other valid UTF-8 section 2 of [RFC2396]. Implementations SHOULD accept other valid
strings [RFC3629] as input. An octet MUST be escaped using the % UTF-8 strings [RFC3629] as input. An octet MUST be escaped using the
method described in section 2.4 of [RFC2396] in any of these % method described in section 2.4 of [RFC2396] in any of these
situations: situations:
The octet is not in the reserved set defined in section 2.2 of The octet is not in the reserved set defined in section 2.2 of
[RFC2396] or in the unreserved set defined in section 2.3 of [RFC2396] or in the unreserved set defined in section 2.3 of
[RFC2396]. [RFC2396].
It is the single Reserved character '?' and occurs inside a dn, It is the single Reserved character '?' and occurs inside a <dn>,
filter, or other element of an LDAP URL. <filter>, or other element of an LDAP URL.
It is a comma character ',' that occurs inside an extension value. It is a comma character ',' that occurs inside an <exvalue>.
Note that before the % method of escaping is applied, the extensions Note that before the % method of escaping is applied, the extensions
component of the LDAP URL may contain one or more null (zero) bytes. component of the LDAP URL may contain one or more null (zero) bytes.
No other component may. No other component may.
3. Defaults for Fields of the LDAP URL 3. Defaults for Fields of the LDAP URL
Some fields of the LDAP URL are optional, as described above. In the Some fields of the LDAP URL are optional, as described above. In the
absence of any other specification, the following general defaults absence of any other specification, the following general defaults
SHOULD be used when a field is absent. Note: other documents MAY SHOULD be used when a field is absent. Note that other documents MAY
specify different defaulting rules; for example, section 4.1.10 of specify different defaulting rules; for example, section 4.1.10 of
[Protocol] specifies a different rule for determining the correct DN [Protocol] specifies a different rule for determining the correct DN
to use when it is absent in an LDAP URL that is returned as a to use when it is absent in an LDAP URL that is returned as a
referral. referral.
hostport <hostport>
The default LDAP port is TCP port 389. If no hostport is given, The default LDAP port is TCP port 389. If no <hostport> is given,
the client must have some apriori knowledge of an appropriate LDAP the client must have some apriori knowledge of an appropriate LDAP
server to contact. server to contact.
dn <dn>
If no dn is given, the default is the zero-length DN, "". If no <dn> is given, the default is the zero-length DN, "".
attributes <attributes>
If the attributes part is omitted, all user attributes of the If the <attributes> part is omitted, all user attributes of the
entry or entries should be requested (e.g., by setting the entry or entries should be requested (e.g., by setting the
attributes field AttributeDescriptionList in the LDAP search attributes field AttributeDescriptionList in the LDAP search
request to a NULL list, or (in LDAPv3) by requesting the special request to a NULL list, or by using the special <alluserattrs>
attribute name "*"). selector "*").
scope <scope>
If scope is omitted, a scope of "base" is assumed. If <scope> is omitted, a <scope> of "base" is assumed.
filter <filter>
If filter is omitted, a filter of "(objectClass=*)" is assumed. If <filter> is omitted, a filter of "(objectClass=*)" is assumed.
extensions <extensions>
If extensions is omitted, no extensions are assumed. If <extensions> is omitted, no extensions are assumed.
4. Examples 4. Examples
The following are some example LDAP URLs using the format defined The following are some example LDAP URLs using the format defined
above. The first example is an LDAP URL referring to the University above. The first example is an LDAP URL referring to the University
of Michigan entry, available from an LDAP server of the client's of Michigan entry, available from an LDAP server of the client's
choosing: choosing:
ldap:///o=University%20of%20Michigan,c=US ldap:///o=University%20of%20Michigan,c=US
skipping to change at page 7, line 5 skipping to change at page 7, line 17
by querying the given LDAP server on port 6666 and doing a subtree 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 search of the University of Michigan for any entry with a common name
of "Babs Jensen", retrieving all attributes: of "Babs Jensen", retrieving all attributes:
ldap://ldap1.example.net:6666/o=University%20of%20Michigan, ldap://ldap1.example.net:6666/o=University%20of%20Michigan,
c=US??sub?(cn=Babs%20Jensen) c=US??sub?(cn=Babs%20Jensen)
The next example is an LDAP URL referring to all children of the c=GB The next example is an LDAP URL referring to all children of the c=GB
entry: entry:
ldap://ldap1.example.com/c=GB?objectClass?one LDAP://ldap1.example.com/c=GB?objectClass?ONE
The objectClass attribute is requested to be returned along with the The objectClass attribute is requested to be returned along with the
entries, and the default filter of "(objectclass=*)" is used. entries, and the default filter of "(objectclass=*)" is used.
The next example is an LDAP URL to retrieve the mail attribute for 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 LDAP entry named "o=Question?,c=US" is given below, illustrating
the use of the escaping mechanism on the reserved character '?'. the use of the escaping mechanism on the reserved character '?'.
ldap://ldap2.example.com/o=Question%3f,c=US?mail ldap://ldap2.example.com/o=Question%3f,c=US?mail
The next example (which is broken into two lines for readability) The next example (which is broken into two lines for readability)
illustrates the interaction between the LDAP string representation of illustrates the interaction between the LDAP string representation of
filters quoting mechanism and URL quoting mechanisms. filters quoting mechanism and URL quoting mechanisms.
ldap://ldap3.example.com/o=Babsco,c=US ldap://ldap3.example.com/o=Babsco,c=US
???(four-octet=%5c00%5c00%5c00%5c04) ???(four-octet=%5c00%5c00%5c00%5c04)
The filter in this example uses the LDAP escaping mechanism of \ to 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 encode three zero or null bytes in the value. In LDAP, the filter
would be written as (four-octet=\00\00\00\04). Because the \ would be written as (four-octet=\00\00\00\04). Because the \
character must be escaped in a URL, the \'s are escaped as %5c in the character must be escaped in a URL, the \'s are escaped as %5c (or
URL encoding. %5C) in the URL encoding.
The next example illustrates the interaction between the LDAP string The next example illustrates the interaction between the LDAP string
representation of DNs quoting mechanism and URL quoting mechanisms. representation of DNs quoting mechanism and URL quoting mechanisms.
ldap://ldap.example.com/o=An%20Example%5c2c%20Inc.,c=US ldap://ldap.example.com/o=An%20Example%5C2C%20Inc.,c=US
The DN encoded in the above URL is: The DN encoded in the above URL is:
o=An Example\2c Inc.,c=US o=An Example\2C Inc.,c=US
That is, the left-most RDN value is: That is, the left-most RDN value is:
An Example, Inc. An Example, Inc.
The following three URLs that are equivalent, assuming that the The following three URLs that are equivalent, assuming that the
defaulting rules specified in section 4 of this document are used: defaulting rules specified in section 4 of this document are used:
ldap://ldap.example.net ldap://ldap.example.net
ldap://ldap.example.net/ ldap://ldap.example.net/
skipping to change at page 8, line 25 skipping to change at page 8, line 37
5. Security Considerations 5. Security Considerations
General URL security considerations discussed in [RFC2396] are General URL security considerations discussed in [RFC2396] are
relevant for LDAP URLs. relevant for LDAP URLs.
The use of security mechanisms when processing LDAP URLs requires The use of security mechanisms when processing LDAP URLs requires
particular care, since clients may encounter many different servers particular care, since clients may encounter many different servers
via URLs, and since URLs are likely to be processed automatically, via URLs, and since URLs are likely to be processed automatically,
without user intervention. A client SHOULD have a user-configurable without user intervention. A client SHOULD have a user-configurable
policy about which servers to connect to using which security policy that controls which servers the client will establish LDAP
mechanisms, and SHOULD NOT make connections that are inconsistent sessions with using which security mechanisms, and SHOULD NOT
with this policy. If a client chooses to reuse an existing establish LDAP sessions that are inconsistent with this policy. If a
connection when resolving one or more LDAP URL, it MUST ensure that client chooses to reuse an existing LDAP session when resolving one
the connection is compatible with the URL and that no security or more LDAP URLs, it MUST ensure that the session is compatible with
policies are violated. the URL and that no security policies are violated.
Sending authentication information, no matter the mechanism, may Sending authentication information, no matter the mechanism, may
violate a user's privacy requirements. In the absence of specific violate a user's privacy requirements. In the absence of specific
policy permitting authentication information to be sent to a server, policy permitting authentication information to be sent to a server,
a client should use an anonymous connection. (Note that clients a client should use an anonymous LDAP session. (Note that clients
conforming to previous LDAP URL specifications, where all connections conforming to previous LDAP URL specifications, where all LDAP
are anonymous and unprotected, are consistent with this sessions are anonymous and unprotected, are consistent with this
specification; they simply have the default security policy.) Simply specification; they simply have the default security policy.) Simply
opening a connection to another server may violate some users' opening a transport connection to another server may violate some
privacy requirements, so clients should provide the user with a way users' privacy requirements, so clients should provide the user with
to control URL processing. a way to control URL processing.
Some authentication methods, in particular reusable passwords sent to Some authentication methods, in particular reusable passwords sent to
the server, may reveal easily-abused information to the remote server the server, may reveal easily-abused information to the remote server
or to eavesdroppers in transit, and should not be used in URL or to eavesdroppers in transit, and should not be used in URL
processing unless explicitly permitted by policy. Confirmation by processing unless explicitly permitted by policy. Confirmation by
the human user of the use of authentication information is the human user of the use of authentication information is
appropriate in many circumstances. Use of strong authentication appropriate in many circumstances. Use of strong authentication
methods that do not reveal sensitive information is much preferred. methods that do not reveal sensitive information is much preferred.
If the URL represents a referral for an update operation, strong If the URL represents a referral for an update operation, strong
authentication methods SHOULD be used. Please refer to the Security authentication methods SHOULD be used. Please refer to the Security
skipping to change at page 9, line 31 skipping to change at page 9, line 43
work in progress. work in progress.
[LDAPDN] Zeilenga, K. (editor), "LDAP: String Representation of [LDAPDN] Zeilenga, K. (editor), "LDAP: String Representation of
Distinguished Names", draft-ietf-ldapbis-dn-xx.txt, a work Distinguished Names", draft-ietf-ldapbis-dn-xx.txt, a work
in progress. in progress.
[Filters] Smith, M. and Howes, T., "LDAP: String Representation of [Filters] Smith, M. and Howes, T., "LDAP: String Representation of
Search Filters", draft-ietf-ldapbis-filter-xx.txt, a work in Search Filters", draft-ietf-ldapbis-filter-xx.txt, a work in
progress. progress.
[LDAPIANA] Zeilenga, K., "IANA Considerations for LDAP",
draft-ietf-ldapbis-bcp64-xx.txt, a work in progress.
[RFC2119] Bradner, S., "Key Words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key Words for use in RFCs to Indicate
Requirement Levels," RFC 2119, BCP 14, March 1997. Requirement Levels," RFC 2119, BCP 14, March 1997.
[Protocol] Sermersheim, J. (editor), "LDAP: The Protocol", [Protocol] Sermersheim, J. (editor), "LDAP: The Protocol",
draft-ietf-ldapbis-protocol-xx.txt, a work in progress. draft-ietf-ldapbis-protocol-xx.txt, a work in progress.
[RFC2234] Crocker, D., Overell, P., "Augmented BNF for Syntax [RFC2234] Crocker, D., Overell, P., "Augmented BNF for Syntax
Specifications: ABNF", RFC 2234, November 1997. Specifications: ABNF", RFC 2234, November 1997.
[RFC2396] Berners-Lee, T., Fielding, R., and Masinter, L., "Uniform [RFC2396] Berners-Lee, T., Fielding, R., and Masinter, L., "Uniform
skipping to change at page 10, line 10 skipping to change at page 10, line 20
IPv6 Addresses in URL's", RFC 2732, December 1999. IPv6 Addresses in URL's", RFC 2732, December 1999.
[Roadmap] K. Zeilenga (editor), "LDAP: Technical Specification Road [Roadmap] K. Zeilenga (editor), "LDAP: Technical Specification Road
Map", draft-ietf-ldapbis-roadmap-xx.txt, a work in progress. Map", draft-ietf-ldapbis-roadmap-xx.txt, a work in progress.
[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO 10646", [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO 10646",
RFC 3629, November 2003. RFC 3629, November 2003.
8. Informative References 8. Informative References
None. [LDAPIANA] Zeilenga, K., "IANA Considerations for LDAP",
draft-ietf-ldapbis-bcp64-xx.txt, a work in progress. None.
9. Intellectual Property Rights
The IETF takes no position regarding the validity or scope of any
intellectual property or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; neither does it represent that it
has made any effort to identify any such rights. Information on the
IETF's procedures with respect to rights in standards-track and
standards-related documentation can be found in BCP-11. Copies of
claims of rights made available for publication and any assurances of
licenses to be made available, or the result of an attempt made to
obtain a general license or permission for the use of such
proprietary rights by implementors or users of this specification can
be obtained from the IETF Secretariat.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights which may cover technology that may be required to practice
this standard. Please address the information to the IETF Executive
Director.
10. Acknowledgements 9. Acknowledgements
The LDAP URL format was originally defined at the University of The LDAP URL format was originally defined at the University of
Michigan. This material is based upon work supported by the National Michigan. This material is based upon work supported by the National
Science Foundation under Grant No. NCR-9416667. The support of both Science Foundation under Grant No. NCR-9416667. The support of both
the University of Michigan and the National Science Foundation is the University of Michigan and the National Science Foundation is
gratefully acknowledged. gratefully acknowledged.
This document is an update to RFC 2255 by Tim Howes and Mark Smith. This document is an update to RFC 2255 by Tim Howes and Mark Smith.
Changes included in this revised specification are based upon Changes included in this revised specification are based upon
discussions among the authors, discussions within the LDAP (v3) discussions among the authors, discussions within the LDAP (v3)
Revision Working Group (ldapbis), and discussions within other IETF Revision Working Group (ldapbis), and discussions within other IETF
Working Groups. The contributions of individuals in these working Working Groups. The contributions of individuals in these working
groups is gratefully acknowledged. Several people in particular have groups is gratefully acknowledged. Several people in particular have
made valuable comments on this document; RL "Bob" Morgan, Mark Wahl, made valuable comments on this document; RL "Bob" Morgan, Mark Wahl,
Kurt Zeilenga, Jim Sermersheim, and Hallvard Furuseth deserve special Kurt Zeilenga, Jim Sermersheim, and Hallvard Furuseth deserve special
thanks for their contributions. thanks for their contributions.
11. Authors' Addresses 10. Authors' Addresses
Mark Smith, Editor Mark Smith, Editor
Pearl Crescent, LLC Pearl Crescent, LLC
447 Marlpool Dr. 447 Marlpool Dr.
Saline, MI 48176 Saline, MI 48176
USA USA
+1 734 944-2856 +1 734 944-2856
mcs@pearlcrescent.com mcs@pearlcrescent.com
Tim Howes Tim Howes
skipping to change at page 11, line 17 skipping to change at page 11, line 4
Mark Smith, Editor Mark Smith, Editor
Pearl Crescent, LLC Pearl Crescent, LLC
447 Marlpool Dr. 447 Marlpool Dr.
Saline, MI 48176 Saline, MI 48176
USA USA
+1 734 944-2856 +1 734 944-2856
mcs@pearlcrescent.com mcs@pearlcrescent.com
Tim Howes Tim Howes
Opsware, Inc. Opsware, Inc.
599 N. Mathilda Ave. 599 N. Mathilda Ave.
Sunnyvale, CA 94085 Sunnyvale, CA 94085
USA USA
+1 408 744-7509 +1 408 744-7509
howes@opsware.com howes@opsware.com
12. Appendix A: Changes Since RFC 2255 11. Appendix A: Changes Since RFC 2255
12.1. Technical Changes 11.1. Technical Changes
The following technical changes were made to the contents of the "URL The following technical changes were made to the contents of the "URL
Definition" section: Definition" section:
Revised all of the ABNF to use common productions from [Models]. Revised all of the ABNF to use common productions from [Models].
Added note and references to [RFC2732] to allow literal IPv6 Added note and references to [RFC2732] to allow literal IPv6
addresses inside the hostport portion of the URL. addresses inside the hostport portion of the URL.
Added missing ASTERISK as an alternative for the attrdesc part of the Changed the definition of <attrdesc> to refer to <attributeSelector>
URL. It is believed that existing implementations of RFC 2255 from [Protocol]. This allows use of "*" in the <attrdesc> part of
the URL. It is believed that existing implementations of RFC 2255
already support this. already support this.
Added angle brackets around free-form prose in the "dn", "hostport", Avoided use of <prose-val> (bracketed-string) productions in the
"attrdesc", "filter", and "exvalue" rules. <dn>, <hostport>, <attrdesc>, and <exvalue> rules.
Changed the ABNF for ldapurl to group the dn component with the Changed the ABNF for <ldapurl> to group the <dn> component with the
preceding slash. preceding <SLASH>.
Changed the extype rule to be an LDAPOID from [Protocol] or an OID Changed the <extype> rule to be an <oid> from [Models].
description from [LDAPIANA].
Changed the text about extension types so it references [LDAPIANA]. Changed the text about extension types so it references [LDAPIANA].
Reordered rules to more closely follow the order the elements appear Reordered rules to more closely follow the order the elements appear
in the URL. in the URL.
"Bindname Extension": removed due to lack of known implementations. "Bindname Extension": removed due to lack of known implementations.
12.2. Editorial Changes 11.2. Editorial Changes
Changed document title to include "LDAP:" prefix. Changed document title to include "LDAP:" prefix.
IESG Note: removed note about lack of satisfactory mandatory IESG Note: removed note about lack of satisfactory mandatory
authentication mechanisms. authentication mechanisms.
"Status of this Memo" section: updated boilerplate to match current "Status of this Memo" section: updated boilerplate to match current
I-D guidelines. I-D guidelines.
"Abstract" section: separated from introductory material. "Abstract" section: separated from introductory material.
skipping to change at page 12, line 30 skipping to change at page 12, line 18
"Introduction" section: new section; separated from the Abstract. "Introduction" section: new section; separated from the Abstract.
Changed the text indicate that RFC 2255 is replaced by this document Changed the text indicate that RFC 2255 is replaced by this document
(instead of RFC 1959). Added text to indicate that LDAP URLs are (instead of RFC 1959). Added text to indicate that LDAP URLs are
used for references and referrals. Fixed typo (replaced the nonsense used for references and referrals. Fixed typo (replaced the nonsense
phrase "to perform to retrieve" with "used to retrieve"). Added a phrase "to perform to retrieve" with "used to retrieve"). Added a
note to let the reader know that not all of the parameters of the note to let the reader know that not all of the parameters of the
LDAP search operation described in [Protocol] can be expressed using LDAP search operation described in [Protocol] can be expressed using
this format. this format.
"URL Definition" section: removed second copy of ldapurl grammar and "URL Definition" section: removed second copy of <ldapurl> grammar
following two paragraphs (editorial error in RFC 2255). Fixed line and following two paragraphs (editorial error in RFC 2255). Fixed
break within '!' sequence. Replaced "residing in the LDAP server" line break within '!' sequence. Reformatted the ABNF to improve
with "accessible from the LDAP server" in the sentence immediately readability by aligning comments and adding some blank lines.
following the ABNF. Reworded last paragraph to clarify which Replaced "residing in the LDAP server" with "accessible from the LDAP
characters must be URL escaped. Added text to indicate that LDAP server" in the sentence immediately following the ABNF. Removed the
URLs are used for references and referrals. Added text that refers sentence "Individual attrdesc names are as defined for
to the ABNF from RFC 2234. Clarified and strengthened the AttributeDescription in [Protocol]." because [Protocol]'s
requirements with respect to processing of URLs that contain <attributeSelector> is now used directly in the ABNF. Reworded last
implements and not implemented extensions (the approach now closely paragraph to clarify which characters must be URL escaped. Added
matches that specified in [Protocol] for LDAP controls). text to indicate that LDAP URLs are used for references and
referrals. Added text that refers to the ABNF from RFC 2234.
Clarified and strengthened the requirements with respect to
processing of URLs that contain implements and not implemented
extensions (the approach now closely matches that specified in
[Protocol] for LDAP controls).
"Defaults for Fields of the LDAP URL" section: added; formed by "Defaults for Fields of the LDAP URL" section: added; formed by
moving text about defaults out of the "URL Definition" section. moving text about defaults out of the "URL Definition" section.
Replaced direct reference to the attribute name "*" with a reference
to the special <alluserattrs> selector "*" defined in [Protocol].
"URL Processing" section: clarified that connections MAY be reused "URL Processing" section: removed.
only if the open connection is compatible with the URL. Added text
to indicate that use of security services is encouraged and that they
SHOULD be used when updates are involved. Removed "dn" from
discussion of authentication methods. Added note that the client MAY
interrogate the server to determine the most appropriate method.
"Examples" section: Modified examples to use example.com and "Examples" section: Modified examples to use example.com and
example.net hostnames. Added missing '?' to the LDAP URL example example.net hostnames. Added missing '?' to the LDAP URL example
whose filter contains three null bytes. Removed space after one whose filter contains three null bytes. Removed space after one
comma within a DN. Revised the bindname example to use e-bindname. comma within a DN. Revised the bindname example to use e-bindname.
Changed the name of an attribute used in one example from "int" to Changed the name of an attribute used in one example from "int" to
"four-octet" to avoid potential confusion. Added an example that "four-octet" to avoid potential confusion. Added an example that
demonstrates the interaction between DN escaping and URL escaping. demonstrates the interaction between DN escaping and URL escaping.
Added some examples to show URL equivalence with respect to the dn Added some examples to show URL equivalence with respect to the <dn>
portion of the URL. portion of the URL. Used uppercase in some examples to remind the
reader that some tokens are case-insensitive.
"Security Considerations" section: Added a note about connection "Security Considerations" section: Added a note about connection
reuse. Added a note about using strong authentication methods for reuse. Added a note about using strong authentication methods for
updates. Added a reference to [AuthMeth]. Added note that simply updates. Added a reference to [AuthMeth]. Added note that simply
opening a connection may violate some users' privacy requirements. opening a connection may violate some users' privacy requirements.
Adopted the working group's revised LDAP terminology specification by
replacing the word "connection" with "LDAP session" or "LDAP
connection" as appropriate.
"Acknowledgements" section: added statement about this being an "Acknowledgements" section: added statement about this being an
update to RFC 2255. Added Kurt Zeilenga, Jim Sermersheim, and update to RFC 2255. Added Kurt Zeilenga, Jim Sermersheim, and
Hallvard Furuseth. Hallvard Furuseth.
"Normative References" section: renamed from "References" per new RFC "Normative References" section: renamed from "References" per new RFC
guidelines. Changed from [1] style to [Protocol] style throughout the guidelines. Changed from [1] style to [Protocol] style throughout the
document. Added references to RFC 2234, RFC 2732, and RFC 3629. document. Added references to RFC 2234, RFC 2732, and RFC 3629.
Updated all RFC 1738 references to point to the appropriate sections Updated all RFC 1738 references to point to the appropriate sections
within RFC 2396. Updated the LDAP references to refer to LDAPBis WG within RFC 2396. Updated the LDAP references to refer to LDAPBis WG
documents. Removed the reference to the LDAP Attribute Syntaxes documents. Removed the reference to the LDAP Attribute Syntaxes
document and added references to the [AuthMeth], [LDAPIANA], and document and added references to the [AuthMeth], [LDAPIANA], and
[Roadmap] documents. [Roadmap] documents.
"Informative References" section: added for clarity. "Informative References" section: added.
Header and "Authors' Addresses" sections: added "editor" next to Mark Header and "Authors' Addresses" sections: added "editor" next to Mark
Smith's name. Updated affiliation and contact information. Smith's name. Updated affiliation and contact information.
Copyright: updated the year. Copyright: updated the year.
13. Appendix B: Changes Since Previous Document Revision Throughout the document: surrounded the names of all ABNF productions
with "<" and ">" where they are used in descriptive text.
12. Appendix B: Changes Since Previous Document Revision
This appendix lists all changes relative to the previously published This appendix lists all changes relative to the previously published
revision, draft-ietf-ldapbis-url-06.txt. Note that when appropriate revision, draft-ietf-ldapbis-url-07.txt. Note that when appropriate
these changes are also included in Appendix A, but are also included these changes are also included in Appendix A, but are also included
here for the benefit of the people who have already reviewed here for the benefit of the people who have already reviewed
draft-ietf-ldapbis-url-06.txt. This section will be removed before draft-ietf-ldapbis-url-07.txt. This section will be removed before
this document is published as an RFC. this document is published as an RFC.
13.1. Editorial Changes 12.1. Technical Changes
"Status of this Memo" section: replaced RFC 3668 (IPR) boilerplate "URL Definition" section: avoid the use of <prose-val>
paragraph with the version that says "each author" instead of "I." (bracketed-string) productions. Use <attributeSelector> from
[Protocol] and <oid> from [Models]; this allowed <oid>, <oiddescr>,
and <ASTERISK> to be removed from this document. Include correct
section references for [Protocol] and [Filters].
"URL Definition" section: replaced phrases such as "recognized by" 12.2. Editorial Changes
with "implemented by" when referring to LDAP URL extensions.
"URL Definition" section: added the following two sentences at the "Abstract" section: spelled out LDAP on first use.
end of the subsection on "Escaping Using the % Method":
Note that before the % method of escaping is applied, the
extensions component of the LDAP URL may contain one or more null
(zero) bytes. No other component may.
14. Intellectual Property Rights "Introduction" section: referenced [Roadmap] upon first use of LDAP
and expanded the paragraph that begins "This document is an integral
part of the LDAP technical specification..." to match the text used
in [Protocol]. Also re-worded the text that describes the extension
mechanism.
"URL Definition" section: reformatted the ABNF to improve readability
by aligning comments and adding some blank lines. Removed the
sentence "Individual attrdesc names are as defined for
AttributeDescription in [Protocol]." because [Protocol]'s
<attributeSelector> is now used directly in the ABNF. Replaced one
occurrence of "extension value" with <exvalue> to improve clarity.
"Defaults for Fields of the LDAP URL" section: in the <attributes>
paragraph, replaced this phrase:
or (in LDAPv3) by requesting the special attribute name "*"
with the following:
by using the special <alluserattrs> selector "*"
"Examples" section: used uppercase "LDAP" and "ONE" in an example to
remind the reader that these tokens are case-insensitive. Likewise,
used uppercase in some hex escaped strings (e.g., replace "%5c" with
"%5C").
"Security Considerations" section: adopted the working group's
revised LDAP terminology specification by updating the 2nd and 3rd
paragraphs to replace the word "connection" with "LDAP session" or
"LDAP connection" as appropriate.
References: moved [LDAPIANA] to "Informative References."
Changed these two sections to unnumbered ones: "Intellectual Property
Rights" and "Full Copyright." Removed the extra "Intellectual
Property Rights" section.
Throughout the document: surrounded the names of all ABNF productions
with "<" and ">" where they are used in descriptive text.
Throughout the document: replaced "Note: ..." constructs with "Note
that ...."
Intellectual Property Rights
The IETF takes no position regarding the validity or scope of any The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79. found in BCP 78 and BCP 79.
skipping to change at page 14, line 43 skipping to change at page 15, line 32
such proprietary rights by implementers or users of this such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr. http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at this standard. Please address the information to the IETF at
ietf-ipr@ietf.org. ietf-ipr@ietf.org.
15. Full Copyright Full Copyright
Copyright (C) The Internet Society (2004). This document is subject Copyright (C) The Internet Society (2004). This document is subject
to the rights, licenses and restrictions contained in BCP 78, and to the rights, licenses and restrictions contained in BCP 78, and
except as set forth therein, the authors retain all their rights. except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
This Internet Draft expires on 24 April 2005. This Internet Draft expires on 16 May 2005.
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/