mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-27 03:20:22 +08:00
452 lines
17 KiB
Plaintext
452 lines
17 KiB
Plaintext
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Network Working Group R. Harrison
|
|||
|
Request for Comments: 3771 Novell, Inc.
|
|||
|
Updates: 2251 K. Zeilenga
|
|||
|
Category: Standards Track OpenLDAP Foundation
|
|||
|
April 2004
|
|||
|
|
|||
|
|
|||
|
The Lightweight Directory Access Protocol (LDAP)
|
|||
|
Intermediate Response Message
|
|||
|
|
|||
|
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 (2004). All Rights Reserved.
|
|||
|
|
|||
|
Abstract
|
|||
|
|
|||
|
This document defines and describes the IntermediateResponse message,
|
|||
|
a general mechanism for defining single-request/multiple-response
|
|||
|
operations in Lightweight Directory Access Protocol (LDAP). The
|
|||
|
IntermediateResponse message is defined in such a way that the
|
|||
|
protocol behavior of existing LDAP operations is maintained. This
|
|||
|
message is intended to be used in conjunction with the LDAP
|
|||
|
ExtendedRequest and ExtendedResponse to define new single-
|
|||
|
request/multiple-response operations or in conjunction with a control
|
|||
|
when extending existing LDAP operations in a way that requires them
|
|||
|
to return intermediate response information.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Harrison & Zeilenga Standards Track [Page 1]
|
|||
|
|
|||
|
RFC 3771 LDAP Intermediate Response April 2004
|
|||
|
|
|||
|
|
|||
|
1. Introduction
|
|||
|
|
|||
|
The Lightweight Directory Access Protocol (LDAP), version 3 [RFC3377]
|
|||
|
is an extensible protocol. Extended operations ([RFC2251] Section
|
|||
|
4.12) are defined to allow for the addition of operations to LDAP,
|
|||
|
without requiring revisions of the protocol. Similarly, controls
|
|||
|
([RFC2251] Section 4.1.12) are defined to extend or modify the
|
|||
|
behavior of existing LDAP operations.
|
|||
|
|
|||
|
LDAP is a client-request/server-response based protocol. With the
|
|||
|
exception of the search operation, the entire response to an
|
|||
|
operation request is returned in a single protocol data unit (i.e.,
|
|||
|
LDAP message). While this single-request/single-response paradigm is
|
|||
|
sufficient for many operations (including all but one of those
|
|||
|
currently defined by [RFC3377]), both intuition and practical
|
|||
|
experience validate the notion that it is insufficient for others.
|
|||
|
|
|||
|
For example, the LDAP delete operation could be extended via a
|
|||
|
subtree control to mean that an entire subtree is to be deleted. A
|
|||
|
subtree delete operation needs to return continuation references
|
|||
|
based upon subordinate knowledge information contained in the server
|
|||
|
so that the client can complete the operation. Returning references
|
|||
|
as they are found, instead of with the final result, allows the
|
|||
|
client to perform the operation more efficiently because it does not
|
|||
|
have to wait for the final result to get this continuation reference
|
|||
|
information.
|
|||
|
|
|||
|
Similarly, an engineer might choose to design the subtree delete
|
|||
|
operation as an extended operation of its own rather than using a
|
|||
|
subtree control in conjunction with the delete operation. Once
|
|||
|
again, the same continuation reference information is needed by the
|
|||
|
client to complete the operation, and sending the continuation
|
|||
|
references as they are found would allow the client to perform the
|
|||
|
operation more efficiently.
|
|||
|
|
|||
|
Operations that are completed in stages or that progress through
|
|||
|
various states as they are completed might want to send intermediate
|
|||
|
responses to the client, thereby informing it of the status of the
|
|||
|
operation. For example, an LDAP implementation might define an
|
|||
|
extended operation to create a new replica of an administrative area
|
|||
|
on a server, and the operation is completed in three stages: (1)
|
|||
|
begin creation of replica, (2) send replica data to server, (3)
|
|||
|
replica creation complete. Intermediate messages might be sent from
|
|||
|
the server to the client at the beginning of each stage with the
|
|||
|
final response for the extended operation being sent after stage (3)
|
|||
|
is complete.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Harrison & Zeilenga Standards Track [Page 2]
|
|||
|
|
|||
|
RFC 3771 LDAP Intermediate Response April 2004
|
|||
|
|
|||
|
|
|||
|
As LDAP [RFC3377] is currently defined, there is no general LDAP
|
|||
|
message type that can be used to return intermediate results. A
|
|||
|
single, reusable LDAP message for carrying intermediate response
|
|||
|
information is desired to avoid repeated modification of the
|
|||
|
protocol. Although the ExtendedResponse message is defined in LDAP,
|
|||
|
it is defined to be the one and only response message to an
|
|||
|
ExtendedRequest message ([RFC2251] Section 4.12), for unsolicited
|
|||
|
notifications ([RFC2251] Section 4.4), and to return intermediate
|
|||
|
responses for the search operation ([RFC3377] Section 4.5.2, also see
|
|||
|
Section 5 below). The adaptation of ExtendedResponse as a general
|
|||
|
intermediate response mechanism would be problematic. In particular,
|
|||
|
existing APIs would likely have to be redesigned. It is believed
|
|||
|
(based upon operational experience) that the addition of a new
|
|||
|
message to carry intermediate result information is easier to
|
|||
|
implement and is less likely to cause interoperability problems with
|
|||
|
existing deployed implementations.
|
|||
|
|
|||
|
This document defines and describes the LDAP IntermediateResponse
|
|||
|
message. This message is intended to be used in conjunction with
|
|||
|
ExtendedRequest and ExtendedResponse to define new single-
|
|||
|
request/multiple-response operations or in conjunction with a control
|
|||
|
when extending existing LDAP operations in a way that requires them
|
|||
|
to return intermediate response information.
|
|||
|
|
|||
|
It is intended that the definitions and descriptions of extended
|
|||
|
operations and controls using the IntermediateResponse message will
|
|||
|
define the circumstances in which an IntermediateResponse message can
|
|||
|
be sent by a server and the associated meaning of the
|
|||
|
IntermediateResponse message sent in a particular circumstance.
|
|||
|
Similarly, it is intended that clients will explicitly solicit
|
|||
|
IntermediateResponse messages by issuing operations that specifically
|
|||
|
call for their return.
|
|||
|
|
|||
|
The LDAP Content Sync Operation [ZEILENGA] demonstrates one use of
|
|||
|
LDAP Intermediate Response messages.
|
|||
|
|
|||
|
2. Conventions used in this document
|
|||
|
|
|||
|
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
|||
|
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
|||
|
document are to be interpreted as described in [RFC2119].
|
|||
|
|
|||
|
The term "request control" is used to describe a control that is
|
|||
|
included in an LDAP request message sent from an LDAP client to an
|
|||
|
LDAP server.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Harrison & Zeilenga Standards Track [Page 3]
|
|||
|
|
|||
|
RFC 3771 LDAP Intermediate Response April 2004
|
|||
|
|
|||
|
|
|||
|
3. The IntermediateResponse Message
|
|||
|
|
|||
|
This document extends the protocolOp CHOICE of LDAPMessage ([RFC2251]
|
|||
|
Section 4.1.1) to include the field:
|
|||
|
|
|||
|
intermediateResponse IntermediateResponse
|
|||
|
|
|||
|
where IntermediateResponse is defined as:
|
|||
|
|
|||
|
IntermediateResponse ::= [APPLICATION 25] SEQUENCE {
|
|||
|
responseName [0] LDAPOID OPTIONAL,
|
|||
|
responseValue [1] OCTET STRING OPTIONAL }
|
|||
|
|
|||
|
IntermediateResponse messages SHALL NOT be returned to the client
|
|||
|
unless the client issues a request that specifically solicits their
|
|||
|
return. This document defines two forms of solicitation: extended
|
|||
|
operation and request control.
|
|||
|
|
|||
|
Although the responseName and responseValue are optional in some
|
|||
|
circumstances, IntermediateResponse messages usually have a
|
|||
|
predefined responseName and a responseValue. The value of the
|
|||
|
responseName (if present), the syntax of the responseValue (if
|
|||
|
present) and the semantics associated with a particular
|
|||
|
IntermediateResponse message MUST be specified in documents
|
|||
|
describing the extended operation or request control that uses them.
|
|||
|
Sections 3.1 and 3.2 describe additional requirements for the
|
|||
|
inclusion of responseName and responseValue in IntermediateResponse
|
|||
|
messages.
|
|||
|
|
|||
|
3.1. Usage with LDAP ExtendedRequest and ExtendedResponse
|
|||
|
|
|||
|
A single-request/multiple-response operation may be defined using a
|
|||
|
single ExtendedRequest message to solicit zero or more
|
|||
|
IntermediateResponse messages, of one or more kinds, followed by an
|
|||
|
ExtendedResponse message.
|
|||
|
|
|||
|
An extended operation that defines the return of multiple kinds of
|
|||
|
IntermediateResponse messages MUST provide and document a mechanism
|
|||
|
for the client to distinguish the kind of IntermediateResponse
|
|||
|
message being sent. This SHALL be accomplished by using different
|
|||
|
responseName values for each type of IntermediateResponse message
|
|||
|
associated with the extended operation or by including identifying
|
|||
|
information in the responseValue of each type of IntermediateResponse
|
|||
|
message associated with the extended operation.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Harrison & Zeilenga Standards Track [Page 4]
|
|||
|
|
|||
|
RFC 3771 LDAP Intermediate Response April 2004
|
|||
|
|
|||
|
|
|||
|
3.2. Usage with LDAP Request Controls
|
|||
|
|
|||
|
Any LDAP operation may be extended by the addition of one or more
|
|||
|
controls ([RFC2251] Section 4.1.12). A control's semantics may
|
|||
|
include the return of zero or more IntermediateResponse messages
|
|||
|
prior to returning the final result code for the operation. One or
|
|||
|
more kinds of IntermediateResponse messages may be sent in response
|
|||
|
to a request control.
|
|||
|
|
|||
|
All IntermediateResponse messages associated with request controls
|
|||
|
SHALL include a responseName. This requirement ensures that the
|
|||
|
client can correctly identify the source of IntermediateResponse
|
|||
|
messages when:
|
|||
|
|
|||
|
a) two or more controls using IntermediateResponse messages are
|
|||
|
included in a request for any LDAP operation or
|
|||
|
|
|||
|
b) one or more controls using IntermediateResponse messages are
|
|||
|
included in a request with an LDAP extended operation that uses
|
|||
|
IntermediateResponse messages.
|
|||
|
|
|||
|
A request control that defines the return of multiple kinds of
|
|||
|
IntermediateResponse messages MUST provide and document a mechanism
|
|||
|
for the client to distinguish the kind of IntermediateResponse
|
|||
|
message being sent. This SHALL be accomplished by using different
|
|||
|
responseName values for each type of IntermediateResponse message
|
|||
|
associated with the request control or by including identifying
|
|||
|
information in the responseValue of each type of IntermediateResponse
|
|||
|
message associated with the request control.
|
|||
|
|
|||
|
4. Advertising Support for IntermediateResponse Messages
|
|||
|
|
|||
|
Because IntermediateResponse messages are associated with extended
|
|||
|
operations or controls and LDAP provides a means for advertising the
|
|||
|
extended operations and controls supported by a server (using the
|
|||
|
supportedExtension ([RFC2252] Section 5.2.3) and supportedControl
|
|||
|
([RFC2252] Section 5.2.4) attributes of the root DSE), there is no
|
|||
|
need for a separate means of advertising support for intermediate
|
|||
|
response messages.
|
|||
|
|
|||
|
5. Use of IntermediateResponse and ExtendedResponse with Search
|
|||
|
|
|||
|
It is noted that ExtendedResponse messages may be sent in response to
|
|||
|
LDAP search operations with controls ([RFC2251] Section 4.5.2). This
|
|||
|
use of ExtendedResponse messages SHOULD be viewed as deprecated, in
|
|||
|
favor of use of the IntermediateResponse messages.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Harrison & Zeilenga Standards Track [Page 5]
|
|||
|
|
|||
|
RFC 3771 LDAP Intermediate Response April 2004
|
|||
|
|
|||
|
|
|||
|
6. Security Considerations
|
|||
|
|
|||
|
This document describes an enhancement to LDAP. All security
|
|||
|
considerations of [RFC3377] apply to this document; however, it does
|
|||
|
not introduce any new security considerations to LDAP.
|
|||
|
|
|||
|
Security considerations specific to each extension using this
|
|||
|
protocol mechanism shall be discussed in the technical specification
|
|||
|
detailing the extension.
|
|||
|
|
|||
|
7. IANA Considerations
|
|||
|
|
|||
|
Registration of the following value has been completed [RFC3383].
|
|||
|
|
|||
|
7.1. LDAP Message Type
|
|||
|
|
|||
|
The IANA has registered an LDAP Message Type (25) to identify the
|
|||
|
LDAP IntermediateResponse message as defined in section 3 of this
|
|||
|
document.
|
|||
|
|
|||
|
The following registration template is suggested:
|
|||
|
|
|||
|
Subject: Request for LDAP Message Type Registration
|
|||
|
Person & email address to contact for further information:
|
|||
|
Roger Harrison <roger_harrison@novell.com>
|
|||
|
Specification: RFC3771
|
|||
|
Author/Change Controller: IESG
|
|||
|
Comments: Identifies the LDAP IntermediateResponse Message
|
|||
|
|
|||
|
8. Acknowledgments
|
|||
|
|
|||
|
The authors would like to acknowledge the members of the IETF LDAP
|
|||
|
Extensions (ldapext) working group mail list who responded to the
|
|||
|
suggestion that a multiple-response paradigm might be useful for LDAP
|
|||
|
extended requests. Special thanks to two individuals: David Wilbur
|
|||
|
who first introduced the idea on the working group list, and Thomas
|
|||
|
Salter, who succinctly summarized the group's discussion.
|
|||
|
|
|||
|
9. References
|
|||
|
|
|||
|
9.1. Normative References
|
|||
|
|
|||
|
[RFC2119] Bradner, S., "Key Words for use in RFCs to Indicate
|
|||
|
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
|||
|
|
|||
|
[RFC2251] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory
|
|||
|
Access Protocol (v3)", RFC 2251, December 1997.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Harrison & Zeilenga Standards Track [Page 6]
|
|||
|
|
|||
|
RFC 3771 LDAP Intermediate Response April 2004
|
|||
|
|
|||
|
|
|||
|
[RFC2252] Wahl, M., Coulbeck, A., Howes, T. and S. Kille,
|
|||
|
"Lightweight Directory Access Protocol (v3): Attribute
|
|||
|
Syntax Definitions", RFC 2252, December 1997.
|
|||
|
|
|||
|
[RFC3377] Hodges, J. and R. Morgan, "Lightweight Directory Access
|
|||
|
Protocol (v3): Technical Specification", RFC 3377,
|
|||
|
September 2002.
|
|||
|
|
|||
|
[RFC3383] Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
|
|||
|
Considerations for the Lightweight Directory Access
|
|||
|
Protocol (LDAP)", BCP 64, RFC 3383, September 2002.
|
|||
|
|
|||
|
9.2. Informative References
|
|||
|
|
|||
|
[ZEILENGA] Zeilenga, K., "LDAP Content Synchronization Operation",
|
|||
|
Work in Progress, February 2004.
|
|||
|
|
|||
|
10. Authors' Addresses
|
|||
|
|
|||
|
Roger Harrison
|
|||
|
Novell, Inc.
|
|||
|
1800 S. Novell Place
|
|||
|
Provo, UT 84606
|
|||
|
|
|||
|
Phone: +1 801 861 2642
|
|||
|
EMail: roger_harrison@novell.com
|
|||
|
|
|||
|
|
|||
|
Kurt D. Zeilenga
|
|||
|
OpenLDAP Foundation
|
|||
|
|
|||
|
EMail: Kurt@OpenLDAP.org
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Harrison & Zeilenga Standards Track [Page 7]
|
|||
|
|
|||
|
RFC 3771 LDAP Intermediate Response April 2004
|
|||
|
|
|||
|
|
|||
|
11. Full Copyright Statement
|
|||
|
|
|||
|
Copyright (C) The Internet Society (2004). This document is subject
|
|||
|
to the rights, licenses and restrictions contained in BCP 78, and
|
|||
|
except as set forth therein, the authors retain all their rights.
|
|||
|
|
|||
|
This document and the information contained herein are provided on an
|
|||
|
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
|||
|
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
|
|||
|
ENGINEERING TASK FORCE DISCLAIM 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.
|
|||
|
|
|||
|
Intellectual Property
|
|||
|
|
|||
|
The IETF takes no position regarding the validity or scope of any
|
|||
|
Intellectual Property Rights 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; nor does it represent that it has
|
|||
|
made any independent effort to identify any such rights. Information
|
|||
|
on the procedures with respect to rights in RFC documents can be
|
|||
|
found in BCP 78 and BCP 79.
|
|||
|
|
|||
|
Copies of IPR disclosures made to the IETF Secretariat 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 implementers or users of this
|
|||
|
specification can be obtained from the IETF on-line IPR repository at
|
|||
|
http://www.ietf.org/ipr.
|
|||
|
|
|||
|
The IETF invites any interested party to bring to its attention any
|
|||
|
copyrights, patents or patent applications, or other proprietary
|
|||
|
rights that may cover technology that may be required to implement
|
|||
|
this standard. Please address the information to the IETF at ietf-
|
|||
|
ipr@ietf.org.
|
|||
|
|
|||
|
Acknowledgement
|
|||
|
|
|||
|
Funding for the RFC Editor function is currently provided by the
|
|||
|
Internet Society.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Harrison & Zeilenga Standards Track [Page 8]
|
|||
|
|