draft-ietf-ldapbis-protocol-18.txt | draft-ietf-ldapbis-protocol-19.txt | |||
---|---|---|---|---|
Internet-Draft Editor: J. Sermersheim | Internet-Draft Editor: J. Sermersheim | |||
Intended Category: Standard Track Novell, Inc | Intended Category: Standard Track Novell, Inc | |||
Document: draft-ietf-ldapbis-protocol-18.txt Oct 2003 | Document: draft-ietf-ldapbis-protocol-19.txt Dec 2003 | |||
Obsoletes: RFC 2251 | Obsoletes: RFC 2251, 2830 | |||
LDAP: The Protocol | LDAP: The Protocol | |||
Status of this Memo | Status of this Memo | |||
This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is in full conformance with | |||
all provisions of Section 10 of RFC2026. | all provisions of Section 10 of RFC2026. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that other | Task Force (IETF), its areas, and its working groups. Note that other | |||
skipping to change at line 44 | skipping to change at line 44 | |||
This document describes the protocol elements, along with their | This document describes the protocol elements, along with their | |||
semantics and encodings, of the Lightweight Directory Access Protocol | semantics and encodings, of the Lightweight Directory Access Protocol | |||
(LDAP). LDAP provides access to distributed directory services that | (LDAP). LDAP provides access to distributed directory services that | |||
act in accordance with X.500 data and service models. These protocol | act in accordance with X.500 data and service models. These protocol | |||
elements are based on those described in the X.500 Directory Access | elements are based on those described in the X.500 Directory Access | |||
Protocol (DAP). | Protocol (DAP). | |||
Table of Contents | Table of Contents | |||
1. Introduction....................................................3 | 1. Introduction....................................................2 | |||
1.1. Relationship to Obsolete Specifications.......................3 | ||||
2. Conventions.....................................................3 | 2. Conventions.....................................................3 | |||
3. Protocol Model..................................................3 | 3. Protocol Model..................................................3 | |||
4. Elements of Protocol............................................4 | 4. Elements of Protocol............................................4 | |||
4.1. Common Elements...............................................4 | 4.1. Common Elements...............................................4 | |||
4.1.1. Message Envelope............................................4 | 4.1.1. Message Envelope............................................4 | |||
4.1.2. String Types................................................6 | 4.1.2. String Types................................................6 | |||
4.1.3. Distinguished Name and Relative Distinguished Name..........6 | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 1 | Sermersheim Internet-Draft - Expires Jun 2004 Page 1 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
4.1.3. Distinguished Name and Relative Distinguished Name..........6 | ||||
4.1.4. Attribute Descriptions......................................7 | 4.1.4. Attribute Descriptions......................................7 | |||
4.1.5. Attribute Value.............................................7 | 4.1.5. Attribute Value.............................................7 | |||
4.1.6. Attribute Value Assertion...................................7 | 4.1.6. Attribute Value Assertion...................................7 | |||
4.1.7. Attribute...................................................8 | 4.1.7. Attribute and PartialAttribute..............................8 | |||
4.1.8. Matching Rule Identifier....................................8 | 4.1.8. Matching Rule Identifier....................................8 | |||
4.1.9. Result Message..............................................8 | 4.1.9. Result Message..............................................8 | |||
4.1.10. Referral..................................................10 | 4.1.10. Referral..................................................10 | |||
4.1.11. Controls..................................................11 | 4.1.11. Controls..................................................11 | |||
4.2. Bind Operation...............................................12 | 4.2. Bind Operation...............................................12 | |||
4.3. Unbind Operation.............................................15 | 4.3. Unbind Operation.............................................15 | |||
4.4. Unsolicited Notification.....................................15 | 4.4. Unsolicited Notification.....................................16 | |||
4.5. Search Operation.............................................16 | 4.5. Search Operation.............................................17 | |||
4.6. Modify Operation.............................................24 | 4.6. Modify Operation.............................................25 | |||
4.7. Add Operation................................................26 | 4.7. Add Operation................................................26 | |||
4.8. Delete Operation.............................................26 | 4.8. Delete Operation.............................................27 | |||
4.9. Modify DN Operation..........................................27 | 4.9. Modify DN Operation..........................................28 | |||
4.10. Compare Operation...........................................28 | 4.10. Compare Operation...........................................29 | |||
4.11. Abandon Operation...........................................29 | 4.11. Abandon Operation...........................................30 | |||
4.12. Extended Operation..........................................29 | 4.12. Extended Operation..........................................30 | |||
4.13. Start TLS Operation.........................................31 | 4.13. StartTLS Operation..........................................31 | |||
5. Protocol Element Encodings and Transfer........................33 | 5. Protocol Element Encodings and Transfer........................33 | |||
5.1. Protocol Encoding............................................33 | 5.1. Protocol Encoding............................................34 | |||
5.2. Transfer Protocols...........................................33 | 5.2. Transfer Protocols...........................................34 | |||
6. Implementation Guidelines......................................33 | 6. Security Considerations........................................34 | |||
6.1. Server Implementations.......................................33 | 7. Acknowledgements...............................................36 | |||
6.2. Client Implementations.......................................34 | 8. Normative References...........................................36 | |||
7. Security Considerations........................................34 | 9. Informative References.........................................37 | |||
8. Acknowledgements...............................................35 | 10. IANA Considerations...........................................37 | |||
9. Normative References...........................................35 | 11. Editor's Address..............................................38 | |||
10. Informative References........................................37 | Appendix A - LDAP Result Codes....................................39 | |||
11. IANA Considerations...........................................37 | A.1 Non-Error Result Codes........................................39 | |||
12. Editor's Address..............................................37 | A.2 Result Codes..................................................39 | |||
Appendix A - LDAP Result Codes....................................38 | Appendix B - Complete ASN.1 Definition............................43 | |||
A.1 Non-Error Result Codes........................................38 | Appendix C - Changes..............................................48 | |||
A.2 Result Codes..................................................38 | C.1 Changes made to made to RFC 2251:.............................48 | |||
Appendix C - Change History.......................................47 | C.2 Changes made to made to RFC 2830:.............................53 | |||
C.1 Changes made to RFC 2251:.....................................47 | ||||
C.2 Changes made to draft-ietf-ldapbis-protocol-00.txt:...........47 | ||||
C.3 Changes made to draft-ietf-ldapbis-protocol-01.txt:...........48 | ||||
C.4 Changes made to draft-ietf-ldapbis-protocol-02.txt:...........48 | ||||
C.5 Changes made to draft-ietf-ldapbis-protocol-03.txt:...........50 | ||||
C.6 Changes made to draft-ietf-ldapbis-protocol-04.txt:...........52 | ||||
C.7 Changes made to draft-ietf-ldapbis-protocol-05.txt:...........52 | ||||
C.8 Changes made to draft-ietf-ldapbis-protocol-06.txt:...........53 | ||||
C.9 Changes made to draft-ietf-ldapbis-protocol-07.txt:...........56 | ||||
C.10 Changes made to draft-ietf-ldapbis-protocol-08.txt:..........56 | ||||
C.11 Changes made to draft-ietf-ldapbis-protocol-09.txt:..........56 | ||||
C.12 Changes made to draft-ietf-ldapbis-protocol-10.txt:..........56 | ||||
C.13 Changes made to draft-ietf-ldapbis-protocol-11.txt:..........57 | ||||
C.14 Changes made to draft-ietf-ldapbis-protocol-12.txt:..........57 | ||||
C.15 Changes made to draft-ietf-ldapbis-protocol-13.txt...........57 | ||||
C.16 Changes made to draft-ietf-ldapbis-protocol-14.txt...........58 | ||||
C.17 Changes made to draft-ietf-ldapbis-protocol-15.txt...........60 | ||||
C.18 Changes made to draft-ietf-ldapbis-protocol-16.txt...........60 | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 2 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
C.19 Changes made to draft-ietf-ldapbis-protocol-17.txt...........61 | ||||
1. Introduction | 1. Introduction | |||
The Directory is "a collection of open systems cooperating to provide | The Directory is "a collection of open systems cooperating to provide | |||
directory services" [X.500]. A directory user, which may be a human | directory services" [X.500]. A directory user, which may be a human | |||
or other entity, accesses the Directory through a client (or | or other entity, accesses the Directory through a client (or | |||
Directory User Agent (DUA)). The client, on behalf of the directory | Directory User Agent (DUA)). The client, on behalf of the directory | |||
user, interacts with one or more servers (or Directory System Agents | user, interacts with one or more servers (or Directory System Agents | |||
(DSA)). Clients interact with servers using a directory access | (DSA)). Clients interact with servers using a directory access | |||
protocol. | protocol. | |||
This document details the protocol elements of the Lightweight | This document details the protocol elements of the Lightweight | |||
Directory Access Protocol (LDAP), along with their semantics. | Directory Access Protocol (LDAP), along with their semantics. | |||
Following the description of protocol elements, it describes the way | Following the description of protocol elements, it describes the way | |||
in which the protocol elements are encoded and transferred. | in which the protocol elements are encoded and transferred. | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 2 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
1.1. Relationship to Obsolete Specifications | ||||
This document is an integral part of the LDAP Technical Specification | This document is an integral part of the LDAP Technical Specification | |||
[Roadmap]. | [Roadmap] which obsoletes the previously defined LDAP technical | |||
specification, RFC 3377, in its entirety. | ||||
This document replaces RFC 2251. Appendix C holds a detailed log of | This document obsoletes all of RFC 2251 except the following: | |||
changes to RFC 2251. After Working Group Last Call, this appendix | Sections 3.2, 3.4, 4.1.3 (last paragraph), 4.1.4, 4.1.5, 4.1.5.1, | |||
will be distilled to a summary of changes to RFC 2251. | 4.1.9 (last paragraph), 5.1, 6.1, and 6.2 (last paragraph) are | |||
obsoleted by [Models]. | ||||
Section 3.3 is obsoleted by [Roadmap]. | ||||
Sections 4.2.1 (portions), and 4.2.2 are obsoleted by [AuthMeth]. | ||||
Appendix C.1 summarizes substantive changes to the remaining | ||||
sections. | ||||
This document also obsoletes RFC 2830, Sections 2 and 4 in entirety. | ||||
The remainder of RFC 2830 is obsoleted by [AuthMeth]. Appendix C.2 | ||||
summarizes substantive changes to the remaining sections. | ||||
2. Conventions | 2. Conventions | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", and "MAY" in this document are | "SHOULD", "SHOULD NOT", "RECOMMENDED", and "MAY" in this document are | |||
to be interpreted as described in [Keyword]. | to be interpreted as described in [Keyword]. | |||
The terms "connection" and "LDAP connection" both refer to the | The terms "connection" and "LDAP connection" both refer to the | |||
underlying transport protocol connection between two protocol peers. | underlying transport protocol connection between two protocol peers. | |||
skipping to change at line 163 | skipping to change at line 157 | |||
3. Protocol Model | 3. Protocol Model | |||
The general model adopted by this protocol is one of clients | The general model adopted by this protocol is one of clients | |||
performing protocol operations against servers. In this model, a | performing protocol operations against servers. In this model, a | |||
client transmits a protocol request describing the operation to be | client transmits a protocol request describing the operation to be | |||
performed to a server. The server is then responsible for performing | performed to a server. The server is then responsible for performing | |||
the necessary operation(s) in the Directory. Upon completion of the | the necessary operation(s) in the Directory. Upon completion of the | |||
operation(s), the server returns a response containing an appropriate | operation(s), the server returns a response containing an appropriate | |||
result code to the requesting client. | result code to the requesting client. | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 3 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Although servers are required to return responses whenever such | Although servers are required to return responses whenever such | |||
responses are defined in the protocol, there is no requirement for | responses are defined in the protocol, there is no requirement for | |||
synchronous behavior on the part of either clients or servers. | synchronous behavior on the part of either clients or servers. | |||
Requests and responses for multiple operations may be exchanged | Requests and responses for multiple operations may be exchanged | |||
between a client and server in any order, provided the client | between a client and server in any order, provided the client | |||
eventually receives a response for every request that requires one. | eventually receives a response for every request that requires one. | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 3 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
The core protocol operations defined in this document can be mapped | The core protocol operations defined in this document can be mapped | |||
to a subset of the X.500 (1993) Directory Abstract Service. However | to a subset of the X.500 (1993) Directory Abstract Service. However | |||
there is not a one-to-one mapping between LDAP protocol operations | there is not a one-to-one mapping between LDAP protocol operations | |||
and X.500 Directory Access Protocol (DAP) operations. Server | and X.500 Directory Access Protocol (DAP) operations. Server | |||
implementations acting as a gateway to X.500 directories may need to | implementations acting as a gateway to X.500 directories may need to | |||
make multiple DAP requests to service a single LDAP request. | make multiple DAP requests to service a single LDAP request. | |||
4. Elements of Protocol | 4. Elements of Protocol | |||
The LDAP protocol is described using Abstract Syntax Notation One | The LDAP protocol is described using Abstract Syntax Notation One | |||
[ASN.1], and is transferred using a subset of ASN.1 Basic Encoding | ([ASN.1]), and is transferred using a subset of ASN.1 Basic Encoding | |||
Rules [BER]. Section 5.1 specifies how the protocol elements are | Rules ([BER]). Section 5.1 specifies how the protocol elements are | |||
encoded and transferred. | encoded and transferred. | |||
In order to support future Standards Track extensions to this | In order to support future Standards Track extensions to this | |||
protocol, extensibility is implied where it is allowed (per ASN.1). | protocol, extensibility is implied where it is allowed (per ASN.1). | |||
In addition, ellipses (...) have been supplied in ASN.1 types that | In addition, ellipses (...) have been supplied in ASN.1 types that | |||
are explicitly extensible as discussed in [LDAPIANA]. Because of the | are explicitly extensible as discussed in [LDAPIANA]. Because of the | |||
implied extensibility, clients and servers MUST (unless otherwise | implied extensibility, clients and servers MUST (unless otherwise | |||
specified) ignore trailing SEQUENCE components whose tags they do not | specified) ignore trailing SEQUENCE components whose tags they do not | |||
recognize. | recognize. | |||
Changes to the LDAP protocol other than through the extension | Changes to the LDAP protocol other than through the extension | |||
mechanisms described here require a different version number. A | mechanisms described here require a different version number. A | |||
client indicates the version it is using as part of the bind request, | client indicates the version it is using as part of the bind request, | |||
described in section 4.2. If a client has not sent a bind, the server | described in Section 4.2. If a client has not sent a bind, the server | |||
MUST assume the client is using version 3 or later. | MUST assume the client is using version 3 or later. | |||
Clients may determine the protocol versions a server supports by | Clients may determine the protocol versions a server supports by | |||
reading the supportedLDAPVersion attribute from the root DSE (DSA- | reading the supportedLDAPVersion attribute from the root DSE (DSA- | |||
Specific Entry) [Models]. Servers which implement version 3 or later | Specific Entry) [Models]. | |||
MUST provide this attribute. | ||||
4.1. Common Elements | 4.1. Common Elements | |||
This section describes the LDAPMessage envelope PDU (Protocol Data | This section describes the LDAPMessage envelope Protocol Data Unit | |||
Unit) format, as well as data type definitions, which are used in the | (PDU) format, as well as data type definitions, which are used in the | |||
protocol operations. | protocol operations. | |||
4.1.1. Message Envelope | 4.1.1. Message Envelope | |||
For the purposes of protocol exchanges, all protocol operations are | For the purposes of protocol exchanges, all protocol operations are | |||
encapsulated in a common envelope, the LDAPMessage, which is defined | encapsulated in a common envelope, the LDAPMessage, which is defined | |||
as follows: | as follows: | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 4 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
LDAPMessage ::= SEQUENCE { | LDAPMessage ::= SEQUENCE { | |||
messageID MessageID, | messageID MessageID, | |||
protocolOp CHOICE { | protocolOp CHOICE { | |||
bindRequest BindRequest, | bindRequest BindRequest, | |||
bindResponse BindResponse, | bindResponse BindResponse, | |||
unbindRequest UnbindRequest, | unbindRequest UnbindRequest, | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 4 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
searchRequest SearchRequest, | searchRequest SearchRequest, | |||
searchResEntry SearchResultEntry, | searchResEntry SearchResultEntry, | |||
searchResDone SearchResultDone, | searchResDone SearchResultDone, | |||
searchResRef SearchResultReference, | searchResRef SearchResultReference, | |||
modifyRequest ModifyRequest, | modifyRequest ModifyRequest, | |||
modifyResponse ModifyResponse, | modifyResponse ModifyResponse, | |||
addRequest AddRequest, | addRequest AddRequest, | |||
addResponse AddResponse, | addResponse AddResponse, | |||
delRequest DelRequest, | delRequest DelRequest, | |||
delResponse DelResponse, | delResponse DelResponse, | |||
skipping to change at line 260 | skipping to change at line 254 | |||
The function of the LDAPMessage is to provide an envelope containing | The function of the LDAPMessage is to provide an envelope containing | |||
common fields required in all protocol exchanges. At this time the | common fields required in all protocol exchanges. At this time the | |||
only common fields are the message ID and the controls. | only common fields are the message ID and the controls. | |||
If the server receives a PDU from the client in which the LDAPMessage | If the server receives a PDU from the client in which the LDAPMessage | |||
SEQUENCE tag cannot be recognized, the messageID cannot be parsed, | SEQUENCE tag cannot be recognized, the messageID cannot be parsed, | |||
the tag of the protocolOp is not recognized as a request, or the | the tag of the protocolOp is not recognized as a request, or the | |||
encoding structures or lengths of data fields are found to be | encoding structures or lengths of data fields are found to be | |||
incorrect, then the server SHOULD return the Notice of Disconnection | incorrect, then the server SHOULD return the Notice of Disconnection | |||
described in section 4.4.1, with the resultCode set to protocolError, | described in Section 4.4.1, with the resultCode set to protocolError, | |||
and MUST immediately close the connection. | and MUST immediately close the connection. | |||
In other cases where the client or server cannot parse a PDU, it | In other cases where the client or server cannot parse a PDU, it | |||
SHOULD abruptly close the connection where further communication | SHOULD abruptly close the connection where further communication | |||
(including providing notice) would be pernicious. Otherwise, server | (including providing notice) would be pernicious. Otherwise, server | |||
implementations MUST return an appropriate response to the request, | implementations MUST return an appropriate response to the request, | |||
with the resultCode set to protocolError. | with the resultCode set to protocolError. | |||
The ASN.1 type Controls is defined in section 4.1.11. | The ASN.1 type Controls is defined in Section 4.1.11. | |||
4.1.1.1. Message ID | 4.1.1.1. Message ID | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 5 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
All LDAPMessage envelopes encapsulating responses contain the | All LDAPMessage envelopes encapsulating responses contain the | |||
messageID value of the corresponding request LDAPMessage. | messageID value of the corresponding request LDAPMessage. | |||
The message ID of a request MUST have a non-zero value different from | The message ID of a request MUST have a non-zero value different from | |||
the values of any other requests outstanding in the LDAP association | the values of any other requests outstanding in the LDAP association | |||
of which this message is a part. The zero value is reserved for the | of which this message is a part. The zero value is reserved for the | |||
unsolicited notification message. | unsolicited notification message. | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 5 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Typical clients increment a counter for each request. | Typical clients increment a counter for each request. | |||
A client MUST NOT send a request with the same message ID as an | A client MUST NOT send a request with the same message ID as an | |||
earlier request on the same LDAP association unless it can be | earlier request on the same LDAP association unless it can be | |||
determined that the server is no longer servicing the earlier | determined that the server is no longer servicing the earlier | |||
request. Otherwise the behavior is undefined. For operations that do | request. Otherwise the behavior is undefined. For operations that do | |||
not return responses (unbind, abandon, and abandoned operations), the | not return responses (unbind, abandon, and abandoned operations), the | |||
client SHOULD assume the operation is in progress until a subsequent | client SHOULD assume the operation is in progress until a subsequent | |||
bind request completes. | bind request completes. | |||
4.1.2. String Types | 4.1.2. String Types | |||
The LDAPString is a notational convenience to indicate that, although | The LDAPString is a notational convenience to indicate that, although | |||
strings of LDAPString type encode as OCTET STRING types, the | strings of LDAPString type encode as ASN.1 OCTET STRING types, the | |||
[ISO10646] character set (a superset of [Unicode]) is used, encoded | [ISO10646] character set (a superset of [Unicode]) is used, encoded | |||
following the [UTF-8] algorithm. Note that Unicode characters U+0000 | following the [UTF-8] algorithm. Note that Unicode characters U+0000 | |||
through U+007F are the same as ASCII 0 through 127, respectively, and | through U+007F are the same as ASCII 0 through 127, respectively, and | |||
have the same single octet UTF-8 encoding. Other Unicode characters | have the same single octet UTF-8 encoding. Other Unicode characters | |||
have a multiple octet UTF-8 encoding. | have a multiple octet UTF-8 encoding. | |||
LDAPString ::= OCTET STRING -- UTF-8 encoded, | LDAPString ::= OCTET STRING -- UTF-8 encoded, | |||
-- [ISO10646] characters | -- [ISO10646] characters | |||
The LDAPOID is a notational convenience to indicate that the | The LDAPOID is a notational convenience to indicate that the | |||
skipping to change at line 321 | skipping to change at line 315 | |||
<numericoid> given in Section 1.3 of [Models]. | <numericoid> given in Section 1.3 of [Models]. | |||
LDAPOID ::= OCTET STRING -- Constrained to <numericoid> [Models] | LDAPOID ::= OCTET STRING -- Constrained to <numericoid> [Models] | |||
For example, | For example, | |||
1.3.6.1.4.1.1466.1.2.3 | 1.3.6.1.4.1.1466.1.2.3 | |||
4.1.3. Distinguished Name and Relative Distinguished Name | 4.1.3. Distinguished Name and Relative Distinguished Name | |||
An LDAPDN is defined to be the representation of a distinguished name | An LDAPDN is defined to be the representation of a Distinguished Name | |||
(DN) after encoding according to the specification in [LDAPDN]. | (DN) after encoding according to the specification in [LDAPDN]. | |||
LDAPDN ::= LDAPString | LDAPDN ::= LDAPString | |||
-- Constrained to <distinguishedName> [LDAPDN] | -- Constrained to <distinguishedName> [LDAPDN] | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 6 | A RelativeLDAPDN is defined to be the representation of a Relative | |||
Lightweight Directory Access Protocol Version 3 | Distinguished Name (RDN) after encoding according to the | |||
A RelativeLDAPDN is defined to be the representation of a relative | ||||
distinguished name (RDN) after encoding according to the | ||||
specification in [LDAPDN]. | specification in [LDAPDN]. | |||
RelativeLDAPDN ::= LDAPString | RelativeLDAPDN ::= LDAPString | |||
-- Constrained to <name-component> [LDAPDN] | -- Constrained to <name-component> [LDAPDN] | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 6 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
4.1.4. Attribute Descriptions | 4.1.4. Attribute Descriptions | |||
The definition and encoding rules for attribute descriptions are | The definition and encoding rules for attribute descriptions are | |||
defined in Section 2.5 of [Models]. Briefly, an attribute description | defined in Section 2.5 of [Models]. Briefly, an attribute description | |||
is an attribute type and zero or more options. | is an attribute type and zero or more options. | |||
AttributeDescription ::= LDAPString | AttributeDescription ::= LDAPString | |||
-- Constrained to <attributedescription> | -- Constrained to <attributedescription> | |||
-- [Models] | -- [Models] | |||
skipping to change at line 381 | skipping to change at line 375 | |||
4.1.6. Attribute Value Assertion | 4.1.6. Attribute Value Assertion | |||
The AttributeValueAssertion type definition is similar to the one in | The AttributeValueAssertion type definition is similar to the one in | |||
the X.500 Directory standards. It contains an attribute description | the X.500 Directory standards. It contains an attribute description | |||
and a matching rule assertion value suitable for that type. | and a matching rule assertion value suitable for that type. | |||
AttributeValueAssertion ::= SEQUENCE { | AttributeValueAssertion ::= SEQUENCE { | |||
attributeDesc AttributeDescription, | attributeDesc AttributeDescription, | |||
assertionValue AssertionValue } | assertionValue AssertionValue } | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 7 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
AssertionValue ::= OCTET STRING | AssertionValue ::= OCTET STRING | |||
The syntax of the AssertionValue depends on the context of the LDAP | The syntax of the AssertionValue depends on the context of the LDAP | |||
operation being performed. For example, the syntax of the EQUALITY | operation being performed. For example, the syntax of the EQUALITY | |||
matching rule for an attribute is used when performing a Compare | matching rule for an attribute is used when performing a Compare | |||
operation. Often this is the same syntax used for values of the | operation. Often this is the same syntax used for values of the | |||
attribute type, but in some cases the assertion syntax differs from | attribute type, but in some cases the assertion syntax differs from | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 7 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
the value syntax. See objectIdentiferFirstComponentMatch in | the value syntax. See objectIdentiferFirstComponentMatch in | |||
[Syntaxes] for an example. | [Syntaxes] for an example. | |||
4.1.7. Attribute | 4.1.7. Attribute and PartialAttribute | |||
An attribute consists of an attribute description and one or more | Attributes and partial attributes consist of an attribute description | |||
values of that attribute description. | and values of that attribute description. A PartialAttribute allows | |||
zero values, while Attribute requires at least one value. | ||||
Attribute ::= SEQUENCE { | PartialAttribute ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
vals SET SIZE (1..MAX) OF value AttributeValue } | vals SET OF value AttributeValue } | |||
Attribute ::= PartialAttribute(WITH COMPONENTS { | ||||
..., | ||||
vals (SIZE(1..MAX))}) | ||||
Each attribute value is distinct in the set (no duplicates). The set | Each attribute value is distinct in the set (no duplicates). The set | |||
of attribute values is unordered. Implementations MUST NOT rely upon | of attribute values is unordered. Implementations MUST NOT rely upon | |||
the ordering being repeatable. | the ordering being repeatable. | |||
4.1.8. Matching Rule Identifier | 4.1.8. Matching Rule Identifier | |||
Matching rules are defined in 4.1.3 of [Models]. A matching rule is | Matching rules are defined in 4.1.3 of [Models]. A matching rule is | |||
identified in the LDAP protocol by the printable representation of | identified in the LDAP protocol by the printable representation of | |||
either its <numericoid>, or one of its short name descriptors | either its <numericoid>, or one of its short name descriptors | |||
skipping to change at line 436 | skipping to change at line 436 | |||
success (0), | success (0), | |||
operationsError (1), | operationsError (1), | |||
protocolError (2), | protocolError (2), | |||
timeLimitExceeded (3), | timeLimitExceeded (3), | |||
sizeLimitExceeded (4), | sizeLimitExceeded (4), | |||
compareFalse (5), | compareFalse (5), | |||
compareTrue (6), | compareTrue (6), | |||
authMethodNotSupported (7), | authMethodNotSupported (7), | |||
strongAuthRequired (8), | strongAuthRequired (8), | |||
-- 9 reserved -- | -- 9 reserved -- | |||
referral (10), | ||||
adminLimitExceeded (11), | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 8 | Sermersheim Internet-Draft - Expires Jun 2004 Page 8 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
referral (10), | ||||
adminLimitExceeded (11), | ||||
unavailableCriticalExtension (12), | unavailableCriticalExtension (12), | |||
confidentialityRequired (13), | confidentialityRequired (13), | |||
saslBindInProgress (14), | saslBindInProgress (14), | |||
noSuchAttribute (16), | noSuchAttribute (16), | |||
undefinedAttributeType (17), | undefinedAttributeType (17), | |||
inappropriateMatching (18), | inappropriateMatching (18), | |||
constraintViolation (19), | constraintViolation (19), | |||
attributeOrValueExists (20), | attributeOrValueExists (20), | |||
invalidAttributeSyntax (21), | invalidAttributeSyntax (21), | |||
-- 22-31 unused -- | -- 22-31 unused -- | |||
skipping to change at line 493 | skipping to change at line 493 | |||
[LDAPIANA]. The meanings of the result codes are given in Appendix A. | [LDAPIANA]. The meanings of the result codes are given in Appendix A. | |||
If a server detects multiple errors for an operation, only one result | If a server detects multiple errors for an operation, only one result | |||
code is returned. The server should return the result code that best | code is returned. The server should return the result code that best | |||
indicates the nature of the error encountered. | indicates the nature of the error encountered. | |||
The diagnosticMessage field of this construct may, at the server's | The diagnosticMessage field of this construct may, at the server's | |||
option, be used to return a string containing a textual, human- | option, be used to return a string containing a textual, human- | |||
readable (terminal control and page formatting characters should be | readable (terminal control and page formatting characters should be | |||
avoided) diagnostic message. As this diagnostic message is not | avoided) diagnostic message. As this diagnostic message is not | |||
standardized, implementations MUST NOT rely on the values returned. | standardized, implementations MUST NOT rely on the values returned. | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 9 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
If the server chooses not to return a textual diagnostic, the | If the server chooses not to return a textual diagnostic, the | |||
diagnosticMessage field MUST be empty. | diagnosticMessage field MUST be empty. | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 9 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
For certain result codes (typically, but not restricted to | For certain result codes (typically, but not restricted to | |||
noSuchObject, aliasProblem, invalidDNSyntax and | noSuchObject, aliasProblem, invalidDNSyntax and | |||
aliasDereferencingProblem), the matchedDN field is set to the name of | aliasDereferencingProblem), the matchedDN field is set to the name of | |||
the lowest entry (object or alias) in the Directory that was matched. | the lowest entry (object or alias) in the Directory that was matched. | |||
If no aliases were dereferenced while attempting to locate the entry, | If no aliases were dereferenced while attempting to locate the entry, | |||
this will be a truncated form of the name provided, or if aliases | this will be a truncated form of the name provided, or if aliases | |||
were dereferenced, of the resulting name, as defined in section 12.5 | were dereferenced, of the resulting name, as defined in Section 12.5 | |||
of [X.511]. Otherwise the matchedDN field is empty. | of [X.511]. Otherwise the matchedDN field is empty. | |||
4.1.10. Referral | 4.1.10. Referral | |||
The referral result code indicates that the contacted server does not | The referral result code indicates that the contacted server does not | |||
hold the target entry of the request. The referral field is present | hold the target entry of the request. The referral field is present | |||
in an LDAPResult if the resultCode field value is referral, and | in an LDAPResult if the resultCode field value is referral, and | |||
absent with all other result codes. It contains one or more | absent with all other result codes. It contains one or more | |||
references to one or more servers or services that may be accessed | references to one or more servers or services that may be accessed | |||
via LDAP or other protocols. Referrals can be returned in response to | via LDAP or other protocols. Referrals can be returned in response to | |||
any operation request (except unbind and abandon which do not have | any operation request (except unbind and abandon which do not have | |||
responses). At least one URI MUST be present in the Referral. | responses). At least one URI MUST be present in the Referral. | |||
During a search operation, after the baseObject is located, and | During a search operation, after the baseObject is located, and | |||
entries are being evaluated, the referral is not returned. Instead, | entries are being evaluated, the referral is not returned. Instead, | |||
continuation references, described in section 4.5.3, are returned | continuation references, described in Section 4.5.3, are returned | |||
when the search scope spans multiple naming contexts, and several | when the search scope spans multiple naming contexts, and several | |||
different servers would need to be contacted to complete the | different servers would need to be contacted to complete the | |||
operation. | operation. | |||
Referral ::= SEQUENCE SIZE (1..MAX) OF uri URI | Referral ::= SEQUENCE SIZE (1..MAX) OF uri URI | |||
URI ::= LDAPString -- limited to characters permitted in | URI ::= LDAPString -- limited to characters permitted in | |||
-- URIs | -- URIs | |||
If the client wishes to progress the operation, it MUST follow the | If the client wishes to progress the operation, it MUST follow the | |||
referral by contacting one of the services. If multiple URIs are | referral by contacting one of the services. If multiple URIs are | |||
present, the client assumes that any URI may be used to progress the | present, the client assumes that any URI may be used to progress the | |||
operation. | operation. | |||
Clients that follow referrals MUST ensure that they do not loop | ||||
between servers. They MUST NOT repeatedly contact the same server for | ||||
the same request with the same target entry name, scope and filter. | ||||
Some clients use a counter that is incremented each time referral | ||||
handling occurs for an operation, and these kinds of clients MUST be | ||||
able to handle at least ten nested referrals between the root and a | ||||
leaf entry. | ||||
A URI for a server implementing LDAP and accessible via [TCP]/[IP] | A URI for a server implementing LDAP and accessible via [TCP]/[IP] | |||
(v4 or v6) is written as an LDAP URL according to [LDAPURL]. | (v4 or v6) is written as an LDAP URL according to [LDAPURL]. | |||
When an LDAP URL is used, the following instructions are followed: | When an LDAP URL is used, the following instructions are followed: | |||
- If an alias was dereferenced, the <dn> part of the URL MUST be | - If an alias was dereferenced, the <dn> part of the URL MUST be | |||
present, with the new target object name. Note that UTF-8 | present, with the new target object name. Note that UTF-8 | |||
characters appearing in a DN or search filter may not be legal | characters appearing in a DN or search filter may not be legal | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 10 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
for URLs (e.g. spaces) and MUST be escaped using the % method in | for URLs (e.g. spaces) and MUST be escaped using the % method in | |||
[URI]. | [URI]. | |||
- It is RECOMMENDED that the <dn> part be present to avoid | ||||
ambiguity. | ||||
- If the <dn> part is present, the client MUST use this name in | - If the <dn> part is present, the client MUST use this name in | |||
its next request to progress the operation, and if it is not | its next request to progress the operation, and if it is not | |||
present the client will use the same name as in the original | present the client will use the same name as in the original | |||
request. | request. | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 10 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- Some servers (e.g. participating in distributed indexing) may | - Some servers (e.g. participating in distributed indexing) may | |||
provide a different filter in a URL of a referral for a search | provide a different filter in a URL of a referral for a search | |||
operation. | operation. | |||
- If the <filter> part of the LDAP URL is present, the client MUST | - If the <filter> part of the LDAP URL is present, the client MUST | |||
use this filter in its next request to progress this search, and | use this filter in its next request to progress this search, and | |||
if it is not present the client MUST use the same filter as it | if it is not present the client MUST use the same filter as it | |||
used for that search. | used for that search. | |||
- For search, it is RECOMMENDED that the <scope> part be present | ||||
to avoid ambiguity. | ||||
- If the <scope> part is missing, the scope of the original search | ||||
is used by the client to progress the operation. | ||||
- Other aspects of the new request may be the same as or different | - Other aspects of the new request may be the same as or different | |||
from the request which generated the referral. | from the request which generated the referral. | |||
Other kinds of URIs may be returned, so long as the operation could | Other kinds of URIs may be returned. The syntax and semantics of such | |||
be performed using that protocol. The definition of such URIs and | URIs is left to future specifications. Clients ignore URIs that they | |||
instructions on their use is left to future specifications. | do not support. | |||
4.1.11. Controls | 4.1.11. Controls | |||
A control is a way to specify extension information for an LDAP | A control is a way to specify extension information for an LDAP | |||
message. A control only alters the semantics of the message it is | message. A control only alters the semantics of the message it is | |||
attached to. | attached to. | |||
Controls ::= SEQUENCE OF control Control | Controls ::= SEQUENCE OF control Control | |||
Control ::= SEQUENCE { | Control ::= SEQUENCE { | |||
skipping to change at line 595 | skipping to change at line 608 | |||
The criticality field is either TRUE or FALSE and only applies to | The criticality field is either TRUE or FALSE and only applies to | |||
request messages that have a corresponding response message. For all | request messages that have a corresponding response message. For all | |||
other messages (such as abandonRequest, unbindRequest and all | other messages (such as abandonRequest, unbindRequest and all | |||
response messages), the criticality field SHOULD be FALSE. | response messages), the criticality field SHOULD be FALSE. | |||
If the server recognizes the control type and it is appropriate for | If the server recognizes the control type and it is appropriate for | |||
the operation, the server will make use of the control when | the operation, the server will make use of the control when | |||
performing the operation. | performing the operation. | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 11 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
If the server does not recognize the control type or it is not | If the server does not recognize the control type or it is not | |||
appropriate for the operation, and the criticality field is TRUE, the | appropriate for the operation, and the criticality field is TRUE, the | |||
server MUST NOT perform the operation, and for operations that have a | server MUST NOT perform the operation, and for operations that have a | |||
response, MUST set the resultCode to unavailableCriticalExtension. | response, MUST set the resultCode to unavailableCriticalExtension. | |||
If the control is unrecognized or inappropriate but the criticality | If the control is unrecognized or inappropriate but the criticality | |||
field is FALSE, the server MUST ignore the control. | field is FALSE, the server MUST ignore the control. | |||
The controlValue contains any information associated with the | The controlValue contains any information associated with the | |||
control. Its format is defined by the specification of the control. | control. Its format is defined by the specification of the control. | |||
Implementations MUST be prepared to handle arbitrary contents of the | Implementations MUST be prepared to handle arbitrary contents of the | |||
controlValue octet string, including zero bytes. It is absent only if | controlValue octet string, including zero bytes. It is absent only if | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 11 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
there is no value information which is associated with a control of | there is no value information which is associated with a control of | |||
its type. controlValues that are defined in terms of ASN.1 and BER | its type. controlValues that are defined in terms of ASN.1 and BER | |||
encoded according to Section 5.1, also follow the extensibility rules | encoded according to Section 5.1, also follow the extensibility rules | |||
in Section 4. | in Section 4. | |||
Servers list the controlType of all request controls they recognize | Servers list the controlType of all request controls they recognize | |||
in the supportedControl attribute [Models] in the root DSE. | in the supportedControl attribute [Models] in the root DSE. | |||
Controls SHOULD NOT be combined unless the semantics of the | Controls SHOULD NOT be combined unless the semantics of the | |||
combination has been specified. The semantics of control | combination has been specified. The semantics of control | |||
skipping to change at line 648 | skipping to change at line 660 | |||
so, the format of the controlValue contents, | so, the format of the controlValue contents, | |||
- the semantics of the control, and | - the semantics of the control, and | |||
- optionally, semantics regarding the combination of the control | - optionally, semantics regarding the combination of the control | |||
with other controls. | with other controls. | |||
4.2. Bind Operation | 4.2. Bind Operation | |||
The function of the Bind Operation is to allow authentication | The function of the Bind Operation is to allow authentication | |||
information to be exchanged between the client and server. | information to be exchanged between the client and server. The Bind | |||
operation should be thought of as the "authenticate" operation. | ||||
Authentication and security-related semantics of this operation are | Authentication and security-related semantics of this operation are | |||
given in [AuthMeth]. | given in [AuthMeth]. | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 12 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
The Bind Request is defined as follows: | The Bind Request is defined as follows: | |||
BindRequest ::= [APPLICATION 0] SEQUENCE { | BindRequest ::= [APPLICATION 0] SEQUENCE { | |||
version INTEGER (1 .. 127), | version INTEGER (1 .. 127), | |||
name LDAPDN, | name LDAPDN, | |||
authentication AuthenticationChoice } | authentication AuthenticationChoice } | |||
AuthenticationChoice ::= CHOICE { | AuthenticationChoice ::= CHOICE { | |||
simple [0] OCTET STRING, | simple [0] OCTET STRING, | |||
-- 1 and 2 reserved | -- 1 and 2 reserved | |||
sasl [3] SaslCredentials, | sasl [3] SaslCredentials, | |||
... } | ... } | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 12 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
SaslCredentials ::= SEQUENCE { | SaslCredentials ::= SEQUENCE { | |||
mechanism LDAPString, | mechanism LDAPString, | |||
credentials OCTET STRING OPTIONAL } | credentials OCTET STRING OPTIONAL } | |||
Parameters of the Bind Request are: | Parameters of the Bind Request are: | |||
- version: A version number indicating the version of the protocol | - version: A version number indicating the version of the protocol | |||
to be used in this protocol association. This document describes | to be used in this protocol association. This document describes | |||
version 3 of the LDAP protocol. Note that there is no version | version 3 of the LDAP protocol. Note that there is no version | |||
negotiation. The client sets this parameter to the version it | negotiation. The client sets this parameter to the version it | |||
desires. If the server does not support the specified version, it | desires. If the server does not support the specified version, it | |||
MUST respond with protocolError in the resultCode field of the | MUST respond with protocolError in the resultCode field of the | |||
BindResponse. | BindResponse. | |||
- name: The name of the Directory object that the client wishes to | - name: The name of the Directory object that the client wishes to | |||
bind as. This field may take on a null value (a zero length | bind as. This field may take on a null value (a zero length | |||
string) for the purposes of anonymous binds ([AuthMeth] section 7) | string) for the purposes of anonymous binds ([AuthMeth] Section 7) | |||
or when using Simple Authentication and Security Layer [SASL] | or when using Simple Authentication and Security Layer [SASL] | |||
authentication ([AuthMeth] section 4.3). Server behavior is | authentication ([AuthMeth] Section 4.3). Server behavior is | |||
undefined when the name is a null value, simple authentication is | undefined when the name is a null value, simple authentication is | |||
used, and a password is specified. The server SHALL NOT perform | used, and a password is specified. The server SHALL NOT perform | |||
alias dereferencing in determining the object to bind as. | alias dereferencing in determining the object to bind as. | |||
- authentication: information used to authenticate the name, if any, | - authentication: information used to authenticate the name, if any, | |||
provided in the Bind Request. This type is extensible as defined | provided in the Bind Request. This type is extensible as defined | |||
in Section 3.6 of [LDAPIANA]. Servers that do not support a choice | in Section 3.6 of [LDAPIANA]. Servers that do not support a choice | |||
supplied by a client will return authMethodNotSupported in the | supplied by a client will return authMethodNotSupported in the | |||
resultCode field of the BindResponse. | resultCode field of the BindResponse. | |||
The simple form of an AuthenticationChoice specifies a simple | The simple form of an AuthenticationChoice specifies a simple | |||
password to be used for authentication. Passwords consisting of | password to be used for authentication. | |||
character data (text passwords) SHALL be transferred as [UTF-8] | Textual passwords (consisting of a character sequence with a known | |||
encoded [Unicode]. Prior to transfer, clients SHOULD prepare text | character set and encoding) SHALL be transferred as [UTF-8] | |||
passwords by applying the [SASLprep] profile of the [Stringprep] | encoded [Unicode]. The determination of whether a password is | |||
algorithm. Passwords consisting of other data (such as random | textual is a local client matter. | |||
octets) MUST NOT be altered. | Prior to transfer, clients SHOULD prepare text passwords by | |||
applying the [SASLprep] profile of the [Stringprep] algorithm. | ||||
Passwords consisting of other data (such as random octets) MUST | ||||
NOT be altered. | ||||
Sermersheim Internet-Draft - Expires Jun 2004 Page 13 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Authorization is the use of this authentication information when | Authorization is the use of this authentication information when | |||
performing operations. Authorization MAY be affected by factors | performing operations. Authorization MAY be affected by factors | |||
outside of the LDAP Bind Request, such as those provided by lower | outside of the LDAP Bind Request, such as those provided by lower | |||
layer security services. | layer security services. | |||
4.2.1. Processing of the Bind Request | 4.2.1. Processing of the Bind Request | |||
Before processing a BindResponse, all outstanding operations MUST | Before processing a BindResponse, all outstanding operations MUST | |||
either complete or be abandoned. The server may either wait for the | either complete or be abandoned. The server may either wait for the | |||
outstanding operations to complete, or abandon them. The server then | outstanding operations to complete, or abandon them. The server then | |||
proceeds to authenticate the client in either a single-step, or | proceeds to authenticate the client in either a single-step, or | |||
multi-step bind process. Each step requires the server to return a | multi-step bind process. Each step requires the server to return a | |||
BindResponse to indicate the status of authentication. | BindResponse to indicate the status of authentication. | |||
If the client did not bind before sending a request and receives an | If the client did not bind before sending a request and receives an | |||
operationsError to that request, it may then send a Bind Request. If | operationsError to that request, it may then send a Bind Request. If | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 13 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
this also fails or the client chooses not to bind on the existing | this also fails or the client chooses not to bind on the existing | |||
connection, it may close the connection, reopen it and begin again by | connection, it may close the connection, reopen it and begin again by | |||
first sending a PDU with a Bind Request. This will aid in | first sending a PDU with a Bind Request. This will aid in | |||
interoperating with servers implementing other versions of LDAP. | interoperating with servers implementing other versions of LDAP. | |||
Clients may send multiple Bind Requests on a connection to change the | Clients may send multiple Bind Requests on a connection to change the | |||
authentication and/or security associations or to complete a multi- | authentication and/or security associations or to complete a multi- | |||
stage bind process. Authentication from earlier binds is subsequently | stage bind process. Authentication from earlier binds is subsequently | |||
ignored. | ignored. | |||
skipping to change at line 761 | skipping to change at line 776 | |||
abort a negotiation if it wishes to try again with the same SASL | abort a negotiation if it wishes to try again with the same SASL | |||
mechanism. | mechanism. | |||
A failed Bind Operation has the effect of leaving the connection in | A failed Bind Operation has the effect of leaving the connection in | |||
an anonymous state. An abandoned Bind operation also has the effect | an anonymous state. An abandoned Bind operation also has the effect | |||
of leaving the connection in an anonymous state when (and if) the | of leaving the connection in an anonymous state when (and if) the | |||
server processes the abandonment of the bind. Client implementers | server processes the abandonment of the bind. Client implementers | |||
should note that the client has no way of being sure when (or if) an | should note that the client has no way of being sure when (or if) an | |||
abandon request succeeds, therefore, to arrive at a known | abandon request succeeds, therefore, to arrive at a known | |||
authentication state after abandoning a bind operation, clients may | authentication state after abandoning a bind operation, clients may | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 14 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
either unbind (which results in the underlying connection being | either unbind (which results in the underlying connection being | |||
closed) or by issuing a bind request and then examining the | closed) or by issuing a bind request and then examining the | |||
BindResponse returned by the server. | BindResponse returned by the server. | |||
4.2.2. Bind Response | 4.2.2. Bind Response | |||
The Bind Response is defined as follows. | The Bind Response is defined as follows. | |||
BindResponse ::= [APPLICATION 1] SEQUENCE { | BindResponse ::= [APPLICATION 1] SEQUENCE { | |||
COMPONENTS OF LDAPResult, | COMPONENTS OF LDAPResult, | |||
serverSaslCreds [7] OCTET STRING OPTIONAL } | serverSaslCreds [7] OCTET STRING OPTIONAL } | |||
BindResponse consists simply of an indication from the server of the | BindResponse consists simply of an indication from the server of the | |||
status of the client's request for authentication. | status of the client's request for authentication. | |||
A successful bind operation is indicated by a BindResponse with a | A successful bind operation is indicated by a BindResponse with a | |||
resultCode set to success. Otherwise, an appropriate result code is | resultCode set to success. Otherwise, an appropriate result code is | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 14 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
set in the BindResponse. For bind, the protocolError result code may | set in the BindResponse. For bind, the protocolError result code may | |||
be used to indicate that the version number supplied by the client is | be used to indicate that the version number supplied by the client is | |||
unsupported. | unsupported. | |||
If the client receives a BindResponse response where the resultCode | If the client receives a BindResponse response where the resultCode | |||
field is protocolError, it MUST close the connection as the server | field is protocolError, it MUST close the connection as the server | |||
will be unwilling to accept further operations. (This is for | will be unwilling to accept further operations. (This is for | |||
compatibility with earlier versions of LDAP, in which the bind was | compatibility with earlier versions of LDAP, in which the bind was | |||
always the first operation, and there was no negotiation.) | always the first operation, and there was no negotiation.) | |||
The serverSaslCreds are used as part of a SASL-defined bind mechanism | The serverSaslCreds are used as part of a SASL-defined bind mechanism | |||
to allow the client to authenticate the server to which it is | to allow the client to authenticate the server to which it is | |||
communicating, or to perform "challenge-response" authentication. If | communicating, or to perform "challenge-response" authentication. If | |||
the client bound with the simple choice, or the SASL mechanism does | the client bound with the simple choice, or the SASL mechanism does | |||
not require the server to return information to the client, then this | not require the server to return information to the client, then this | |||
field SHALL NOT be included in the BindResponse. | field SHALL NOT be included in the BindResponse. | |||
4.3. Unbind Operation | 4.3. Unbind Operation | |||
The function of the Unbind Operation is to terminate an LDAP | The function of the Unbind Operation is to terminate an LDAP | |||
association and connection. The Unbind Operation is defined as | association and connection. The Unbind operation is not the | |||
follows: | antithesis of the Bind operation as the name implies. The naming of | |||
these operations is historical. The Unbind operation should be | ||||
thought of as the "quit" operation. | ||||
The Unbind Operation is defined as follows: | ||||
UnbindRequest ::= [APPLICATION 2] NULL | UnbindRequest ::= [APPLICATION 2] NULL | |||
The Unbind Operation has no response defined. Upon transmission of | The Unbind Operation has no response defined. Upon transmission of | |||
the UnbindRequest, each protocol peer is to consider the LDAP | the UnbindRequest, each protocol peer is to consider the LDAP | |||
association terminated, MUST cease transmission of messages to the | association terminated, MUST cease transmission of messages to the | |||
other peer, and MUST close the connection. Any outstanding operations | other peer, and MUST close the connection. Any outstanding operations | |||
on the server are, when possible, abandoned, and when not possible, | on the server are, when possible, abandoned, and when not possible, | |||
completed without transmission of the response. | completed without transmission of the response. | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 15 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
4.4. Unsolicited Notification | 4.4. Unsolicited Notification | |||
An unsolicited notification is an LDAPMessage sent from the server to | An unsolicited notification is an LDAPMessage sent from the server to | |||
the client which is not in response to any LDAPMessage received by | the client which is not in response to any LDAPMessage received by | |||
the server. It is used to signal an extraordinary condition in the | the server. It is used to signal an extraordinary condition in the | |||
server or in the connection between the client and the server. The | server or in the connection between the client and the server. The | |||
notification is of an advisory nature, and the server will not expect | notification is of an advisory nature, and the server will not expect | |||
any response to be returned from the client. | any response to be returned from the client. | |||
The unsolicited notification is structured as an LDAPMessage in which | The unsolicited notification is structured as an LDAPMessage in which | |||
the messageID is zero and protocolOp is of the extendedResp form. The | the messageID is zero and protocolOp is of the extendedResp form. The | |||
responseName field of the ExtendedResponse always contains an LDAPOID | responseName field of the ExtendedResponse always contains an LDAPOID | |||
which is unique for this notification. | which is unique for this notification. | |||
One unsolicited notification (Notice of Disconnection) is defined in | One unsolicited notification (Notice of Disconnection) is defined in | |||
this document. | this document. The specification of an unsolicited notification | |||
consists of: | ||||
4.4.1. Notice of Disconnection | - the OBJECT IDENTIFIER assigned to the notification (to be | |||
specified in the responseName, | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 15 | - the format of the contents (if any) of the responseValue, | |||
Lightweight Directory Access Protocol Version 3 | ||||
- the circumstances which will cause the notification to be | ||||
returned, and | ||||
- the semantics of the operation. | ||||
4.4.1. Notice of Disconnection | ||||
This notification may be used by the server to advise the client that | This notification may be used by the server to advise the client that | |||
the server is about to close the connection due to an error | the server is about to close the connection due to an error | |||
condition. Note that this notification is NOT a response to an unbind | condition. Note that this notification is NOT a response to an unbind | |||
requested by the client: the server MUST follow the procedures of | requested by the client: the server MUST follow the procedures of | |||
section 4.3. This notification is intended to assist clients in | Section 4.3. This notification is intended to assist clients in | |||
distinguishing between an error condition and a transient network | distinguishing between an error condition and a transient network | |||
failure. As with a connection close due to network failure, the | failure. As with a connection close due to network failure, the | |||
client MUST NOT assume that any outstanding requests which modified | client MUST NOT assume that any outstanding requests which modified | |||
the Directory have succeeded or failed. | the Directory have succeeded or failed. | |||
The responseName is 1.3.6.1.4.1.1466.20036, the response field is | The responseName is 1.3.6.1.4.1.1466.20036, the response field is | |||
absent, and the resultCode is used to indicate the reason for the | absent, and the resultCode is used to indicate the reason for the | |||
disconnection. | disconnection. | |||
The following result codes have these meanings when used in this | The following result codes have these meanings when used in this | |||
notification: | notification: | |||
- protocolError: The server has received data from the client in | - protocolError: The server has received data from the client in | |||
which the LDAPMessage structure could not be parsed. | which the LDAPMessage structure could not be parsed. | |||
- strongAuthRequired: The server has detected that an established | - strongAuthRequired: The server has detected that an established | |||
security association between the client and server has | security association between the client and server has | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 16 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
unexpectedly failed or been compromised, or that the server now | unexpectedly failed or been compromised, or that the server now | |||
requires the client to authenticate using a strong(er) mechanism. | requires the client to authenticate using a strong(er) mechanism. | |||
- unavailable: This server will stop accepting new connections and | - unavailable: This server will stop accepting new connections and | |||
operations on all existing connections, and be unavailable for an | operations on all existing connections, and be unavailable for an | |||
extended period of time. The client may make use of an alternative | extended period of time. The client may make use of an alternative | |||
server. | server. | |||
Upon transmission of the UnbindRequest, each protocol peer is to | Upon transmission of the UnbindRequest, each protocol peer is to | |||
consider the LDAP association terminated, MUST cease transmission of | consider the LDAP association terminated, MUST cease transmission of | |||
skipping to change at line 888 | skipping to change at line 922 | |||
4.5.1. Search Request | 4.5.1. Search Request | |||
The Search Request is defined as follows: | The Search Request is defined as follows: | |||
SearchRequest ::= [APPLICATION 3] SEQUENCE { | SearchRequest ::= [APPLICATION 3] SEQUENCE { | |||
baseObject LDAPDN, | baseObject LDAPDN, | |||
scope ENUMERATED { | scope ENUMERATED { | |||
baseObject (0), | baseObject (0), | |||
singleLevel (1), | singleLevel (1), | |||
wholeSubtree (2) }, | wholeSubtree (2) }, | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 16 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
derefAliases ENUMERATED { | derefAliases ENUMERATED { | |||
neverDerefAliases (0), | neverDerefAliases (0), | |||
derefInSearching (1), | derefInSearching (1), | |||
derefFindingBaseObj (2), | derefFindingBaseObj (2), | |||
derefAlways (3) }, | derefAlways (3) }, | |||
sizeLimit INTEGER (0 .. maxInt), | sizeLimit INTEGER (0 .. maxInt), | |||
timeLimit INTEGER (0 .. maxInt), | timeLimit INTEGER (0 .. maxInt), | |||
typesOnly BOOLEAN, | typesOnly BOOLEAN, | |||
filter Filter, | filter Filter, | |||
attributes AttributeSelection } | attributes AttributeSelection } | |||
AttributeSelection ::= SEQUENCE OF selection LDAPString | AttributeSelection ::= SEQUENCE OF selection LDAPString | |||
-- constrained to the <attributeSelection> ABNF below | -- constrained to <attributeSelection> below | |||
Filter ::= CHOICE { | Filter ::= CHOICE { | |||
and [0] SET SIZE (1..MAX) OF filter Filter, | and [0] SET SIZE (1..MAX) OF filter Filter, | |||
or [1] SET SIZE (1..MAX) OF filter Filter, | or [1] SET SIZE (1..MAX) OF filter Filter, | |||
not [2] Filter, | not [2] Filter, | |||
equalityMatch [3] AttributeValueAssertion, | equalityMatch [3] AttributeValueAssertion, | |||
substrings [4] SubstringFilter, | substrings [4] SubstringFilter, | |||
greaterOrEqual [5] AttributeValueAssertion, | greaterOrEqual [5] AttributeValueAssertion, | |||
lessOrEqual [6] AttributeValueAssertion, | lessOrEqual [6] AttributeValueAssertion, | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 17 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
present [7] AttributeDescription, | present [7] AttributeDescription, | |||
approxMatch [8] AttributeValueAssertion, | approxMatch [8] AttributeValueAssertion, | |||
extensibleMatch [9] MatchingRuleAssertion } | extensibleMatch [9] MatchingRuleAssertion } | |||
SubstringFilter ::= SEQUENCE { | SubstringFilter ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
-- at least one must be present, | -- at least one must be present, | |||
-- initial and final can occur at most once | -- initial and final can occur at most once | |||
substrings SEQUENCE SIZE (1..MAX) OF substring CHOICE { | substrings SEQUENCE SIZE (1..MAX) OF substring CHOICE { | |||
initial [0] AssertionValue, | initial [0] AssertionValue, | |||
skipping to change at line 945 | skipping to change at line 979 | |||
- baseObject: The name of the base object entry relative to which | - baseObject: The name of the base object entry relative to which | |||
the search is to be performed. | the search is to be performed. | |||
- scope: Specifies the scope of the search to be performed. The | - scope: Specifies the scope of the search to be performed. The | |||
semantics (as described in [X.511]) of the possible values of this | semantics (as described in [X.511]) of the possible values of this | |||
field are: | field are: | |||
baseObject: The scope is constrained to the entry named by | baseObject: The scope is constrained to the entry named by | |||
baseObject. | baseObject. | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 17 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
oneLevel: The scope is constrained to the immediate | oneLevel: The scope is constrained to the immediate | |||
subordinates of the entry named by baseObject. | subordinates of the entry named by baseObject. | |||
wholeSubtree: the scope is constrained to the entry named | wholeSubtree: the scope is constrained to the entry named | |||
by the baseObject, and all its subordinates. | by the baseObject, and all its subordinates. | |||
- derefAliases: An indicator as to how alias objects (as defined in | - derefAliases: An indicator as to how alias objects (as defined in | |||
[X.501]) are to be handled in searching. The semantics of the | [X.501]) are to be handled in searching. The semantics of the | |||
possible values of this field are: | possible values of this field are: | |||
skipping to change at line 970 | skipping to change at line 1001 | |||
derefInSearching: While searching, dereference any alias | derefInSearching: While searching, dereference any alias | |||
object subordinate to the base object which is also in the | object subordinate to the base object which is also in the | |||
search scope. The filter is applied to the dereferenced | search scope. The filter is applied to the dereferenced | |||
object(s). If the search scope is wholeSubtree, the search | object(s). If the search scope is wholeSubtree, the search | |||
continues in the subtree of any dereferenced object. | continues in the subtree of any dereferenced object. | |||
Aliases in that subtree are also dereferenced. Servers | Aliases in that subtree are also dereferenced. Servers | |||
SHOULD detect looping in this process to prevent denial of | SHOULD detect looping in this process to prevent denial of | |||
service attacks and duplicate entries. | service attacks and duplicate entries. | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 18 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
derefFindingBaseObj: Dereference aliases in locating the | derefFindingBaseObj: Dereference aliases in locating the | |||
base object of the search, but not when searching | base object of the search, but not when searching | |||
subordinates of the base object. | subordinates of the base object. | |||
derefAlways: Dereference aliases both in searching and in | derefAlways: Dereference aliases both in searching and in | |||
locating the base object of the search. | locating the base object of the search. | |||
- sizeLimit: A size limit that restricts the maximum number of | - sizeLimit: A size limit that restricts the maximum number of | |||
entries to be returned as a result of the search. A value of 0 in | entries to be returned as a result of the search. A value of zero | |||
this field indicates that no client-requested size limit | in this field indicates that no client-requested size limit | |||
restrictions are in effect for the search. Servers may enforce a | restrictions are in effect for the search. Servers may enforce a | |||
maximum number of entries to return. | maximum number of entries to return. | |||
- timeLimit: A time limit that restricts the maximum time (in | - timeLimit: A time limit that restricts the maximum time (in | |||
seconds) allowed for a search. A value of 0 in this field | seconds) allowed for a search. A value of zero in this field | |||
indicates that no client-requested time limit restrictions are in | indicates that no client-requested time limit restrictions are in | |||
effect for the search. Servers may enforce a maximum time limit | effect for the search. Servers may enforce a maximum time limit | |||
for the search. | for the search. | |||
- typesOnly: An indicator as to whether search results are to | - typesOnly: An indicator as to whether search results are to | |||
contain both attribute descriptions and values, or just attribute | contain both attribute descriptions and values, or just attribute | |||
descriptions. Setting this field to TRUE causes only attribute | descriptions. Setting this field to TRUE causes only attribute | |||
descriptions (no values) to be returned. Setting this field to | descriptions (no values) to be returned. Setting this field to | |||
FALSE causes both attribute descriptions and values to be | FALSE causes both attribute descriptions and values to be | |||
returned. | returned. | |||
- filter: A filter that defines the conditions that must be | - filter: A filter that defines the conditions that must be | |||
fulfilled in order for the search to match a given entry. | fulfilled in order for the search to match a given entry. | |||
The 'and', 'or' and 'not' choices can be used to form combinations | The 'and', 'or' and 'not' choices can be used to form combinations | |||
of filters. At least one filter element MUST be present in an | of filters. At least one filter element MUST be present in an | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 18 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
'and' or 'or' choice. The others match against individual | 'and' or 'or' choice. The others match against individual | |||
attribute values of entries in the scope of the search. | attribute values of entries in the scope of the search. | |||
(Implementor's note: the 'not' filter is an example of a tagged | (Implementor's note: the 'not' filter is an example of a tagged | |||
choice in an implicitly-tagged module. In BER this is treated as | choice in an implicitly-tagged module. In BER this is treated as | |||
if the tag was explicit.) | if the tag was explicit.) | |||
A server MUST evaluate filters according to the three-valued logic | A server MUST evaluate filters according to the three-valued logic | |||
of X.511 (1993) section 7.8.1. In summary, a filter is evaluated | of X.511 (1993) Section 7.8.1. In summary, a filter is evaluated | |||
to either "TRUE", "FALSE" or "Undefined". If the filter evaluates | to either "TRUE", "FALSE" or "Undefined". If the filter evaluates | |||
to TRUE for a particular entry, then the attributes of that entry | to TRUE for a particular entry, then the attributes of that entry | |||
are returned as part of the search result (subject to any | are returned as part of the search result (subject to any | |||
applicable access control restrictions). If the filter evaluates | applicable access control restrictions). If the filter evaluates | |||
to FALSE or Undefined, then the entry is ignored for the search. | to FALSE or Undefined, then the entry is ignored for the search. | |||
A filter of the "and" choice is TRUE if all the filters in the SET | A filter of the "and" choice is TRUE if all the filters in the SET | |||
OF evaluate to TRUE, FALSE if at least one filter is FALSE, and | OF evaluate to TRUE, FALSE if at least one filter is FALSE, and | |||
otherwise Undefined. A filter of the "or" choice is FALSE if all | otherwise Undefined. A filter of the "or" choice is FALSE if all | |||
of the filters in the SET OF evaluate to FALSE, TRUE if at least | of the filters in the SET OF evaluate to FALSE, TRUE if at least | |||
one filter is TRUE, and Undefined otherwise. A filter of the "not" | one filter is TRUE, and Undefined otherwise. A filter of the "not" | |||
choice is TRUE if the filter being negated is FALSE, FALSE if it | choice is TRUE if the filter being negated is FALSE, FALSE if it | |||
is TRUE, and Undefined if it is Undefined. | is TRUE, and Undefined if it is Undefined. | |||
The present match evaluates to TRUE where there is an attribute or | The present match evaluates to TRUE where there is an attribute or | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 19 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
subtype of the specified attribute description present in an | subtype of the specified attribute description present in an | |||
entry, and FALSE otherwise (including a presence test with an | entry, and FALSE otherwise (including a presence test with an | |||
unrecognized attribute description.) | unrecognized attribute description.) | |||
The matching rule for equalityMatch filter items is defined by the | The matching rule for equalityMatch filter items is defined by the | |||
EQUALITY matching rule for the attribute type. | EQUALITY matching rule for the attribute type. | |||
The matching rule for AssertionValues in a substrings filter item | The matching rule for AssertionValues in a substrings filter item | |||
is defined by the SUBSTR matching rule for the attribute type. | is defined by the SUBSTR matching rule for the attribute type. | |||
Note that the AssertionValue in a substrings filter item MUST | Note that the AssertionValue in a substrings filter item MUST | |||
skipping to change at line 1059 | skipping to change at line 1093 | |||
matching algorithm (e.g. spelling variations, phonetic match, | matching algorithm (e.g. spelling variations, phonetic match, | |||
etc.) returns TRUE. If an item matches for equality, it also | etc.) returns TRUE. If an item matches for equality, it also | |||
satisfies an approximate match. If approximate matching is not | satisfies an approximate match. If approximate matching is not | |||
supported, this filter item should be treated as an equalityMatch. | supported, this filter item should be treated as an equalityMatch. | |||
An extensibleMatch is evaluated as follows: | An extensibleMatch is evaluated as follows: | |||
If the matchingRule field is absent, the type field MUST be | If the matchingRule field is absent, the type field MUST be | |||
present, and an equality match is performed for that type. | present, and an equality match is performed for that type. | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 19 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
If the type field is absent and the matchingRule is present, the | If the type field is absent and the matchingRule is present, the | |||
matchValue is compared against all attributes in an entry which | matchValue is compared against all attributes in an entry which | |||
support that matchingRule. The matchingRule determines the | support that matchingRule. The matchingRule determines the | |||
syntax for the assertion value. The filter item evaluates to | syntax for the assertion value. The filter item evaluates to | |||
TRUE if it matches with at least one attribute in the entry, | TRUE if it matches with at least one attribute in the entry, | |||
FALSE if it does not match any attribute in the entry, and | FALSE if it does not match any attribute in the entry, and | |||
Undefined if the matchingRule is not recognized or the | Undefined if the matchingRule is not recognized or the | |||
assertionValue is invalid. | assertionValue is invalid. | |||
If the type field is present and the matchingRule is present, | If the type field is present and the matchingRule is present, | |||
skipping to change at line 1084 | skipping to change at line 1115 | |||
suitable for use with the specified type (see [Syntaxes]), | suitable for use with the specified type (see [Syntaxes]), | |||
otherwise the filter item is undefined. | otherwise the filter item is undefined. | |||
If the dnAttributes field is set to TRUE, the match is | If the dnAttributes field is set to TRUE, the match is | |||
additionally applied against all the AttributeValueAssertions in | additionally applied against all the AttributeValueAssertions in | |||
an entry's distinguished name, and evaluates to TRUE if there is | an entry's distinguished name, and evaluates to TRUE if there is | |||
at least one attribute in the distinguished name for which the | at least one attribute in the distinguished name for which the | |||
filter item evaluates to TRUE. The dnAttributes field is present | filter item evaluates to TRUE. The dnAttributes field is present | |||
to alleviate the need for multiple versions of generic matching | to alleviate the need for multiple versions of generic matching | |||
rules (such as word matching), where one applies to entries and | rules (such as word matching), where one applies to entries and | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 20 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
another applies to entries and dn attributes as well. | another applies to entries and dn attributes as well. | |||
A filter item evaluates to Undefined when the server would not be | A filter item evaluates to Undefined when the server would not be | |||
able to determine whether the assertion value matches an entry. If | able to determine whether the assertion value matches an entry. If | |||
an attribute description in an equalityMatch, substrings, | an attribute description in an equalityMatch, substrings, | |||
greaterOrEqual, lessOrEqual, approxMatch or extensibleMatch filter | greaterOrEqual, lessOrEqual, approxMatch or extensibleMatch filter | |||
is not recognized by the server, a matching rule id in the | is not recognized by the server, a matching rule id in the | |||
extensibleMatch is not recognized by the server, the assertion | extensibleMatch is not recognized by the server, the assertion | |||
value is invalid, or the type of filtering requested is not | value is invalid, or the type of filtering requested is not | |||
implemented, then the filter is Undefined. Thus for example if a | implemented, then the filter is Undefined. Thus for example if a | |||
server did not recognize the attribute type shoeSize, a filter of | server did not recognize the attribute type shoeSize, a filter of | |||
(shoeSize=*) would evaluate to FALSE, and the filters | (shoeSize=*) would evaluate to FALSE, and the filters | |||
(shoeSize=12), (shoeSize>=12) and (shoeSize<=12) would evaluate to | (shoeSize=12), (shoeSize>=12) and (shoeSize<=12) would evaluate to | |||
Undefined. | Undefined. | |||
Servers MUST NOT return errors if attribute descriptions or | Servers MUST NOT return errors if attribute descriptions or | |||
matching rule ids are not recognized, assertion values are | matching rule ids are not recognized, assertion values are | |||
invalid, or the assertion syntax is not supported. More details of | invalid, or the assertion syntax is not supported. More details of | |||
filter processing are given in section 7.8 of [X.511]. | filter processing are given in Section 7.8 of [X.511]. | |||
- attributes: A list of the attributes to be returned from each | - attributes: A list of the attributes to be returned from each | |||
entry which matches the search filter. LDAPString values of this | entry which matches the search filter. LDAPString values of this | |||
field are constrained to the following ABNF: | field are constrained to the following Augmented Backus-Naur Form | |||
[(ABNF)]: | ||||
attributeSelection = noattrs / | attributeSelection = noattrs / | |||
*( attributedescription / specialattr ) | *( attributedescription / specialattr ) | |||
noattrs = %x31 %x2E %x31 ; "1.1" | noattrs = %x31 %x2E %x31 ; "1.1" | |||
specialattr = ASTERISK | specialattr = ASTERISK | |||
ASTERISK = %x2A ; asterisk ("*") | ASTERISK = %x2A ; asterisk ("*") | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 20 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
<attributedescription> is defined in Section 2.5 of [Models]. | <attributedescription> is defined in Section 2.5 of [Models]. | |||
There are two special values which may be used: an empty list with | There are two special values which may be used: an empty list with | |||
no attributes, and the attribute description string "*". Both of | no attributes, and the attribute description string "*". Both of | |||
these signify that all user attributes are to be returned. (The | these signify that all user attributes are to be returned. (The | |||
"*" allows the client to request all user attributes in addition | "*" allows the client to request all user attributes in addition | |||
to any specified operational attributes). Client implementors | to any specified operational attributes). Client implementors | |||
should note that even if all user attributes are requested, some | should note that even if all user attributes are requested, some | |||
attributes and or attribute values of the entry may not be | attributes and or attribute values of the entry may not be | |||
included in search results due to access controls or other | included in search results due to access controls or other | |||
restrictions. Furthermore, servers will not return operational | restrictions. Furthermore, servers will not return operational | |||
attributes, such as objectClasses or attributeTypes, unless they | attributes, such as objectClasses or attributeTypes, unless they | |||
are listed by name. Operational attributes are described in | are listed by name. Operational attributes are described in | |||
[Models]. | [Models]. | |||
Attributes MUST NOT be named more than once in the list, and are | Attributes MUST NOT be named more than once in the list, and are | |||
returned at most once in an entry. If there are attribute | returned at most once in an entry. If there are attribute | |||
descriptions in the list which are not recognized, they are | descriptions in the list which are not recognized, they are | |||
ignored by the server. | ignored by the server. | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 21 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
If the client does not want any attributes returned, it can | If the client does not want any attributes returned, it can | |||
specify a list containing only the attribute with OID "1.1". This | specify a list containing only the attribute with OID "1.1". This | |||
OID was chosen because it does not (and can not) correspond to any | OID was chosen because it does not (and can not) correspond to any | |||
attribute in use. | attribute in use. | |||
Note that an X.500 "list"-like operation can be emulated by the | Note that an X.500 "list"-like operation can be emulated by the | |||
client requesting a one-level LDAP search operation with a filter | client requesting a one-level LDAP search operation with a filter | |||
checking for the presence of the objectClass attribute, and that an | checking for the presence of the objectClass attribute, and that an | |||
X.500 "read"-like operation can be emulated by a base object LDAP | X.500 "read"-like operation can be emulated by a base object LDAP | |||
search operation with the same filter. A server which provides a | search operation with the same filter. A server which provides a | |||
skipping to change at line 1165 | skipping to change at line 1201 | |||
The results of the search operation are returned as zero or more | The results of the search operation are returned as zero or more | |||
searchResultEntry messages, zero or more SearchResultReference | searchResultEntry messages, zero or more SearchResultReference | |||
messages, followed by a single searchResultDone message. | messages, followed by a single searchResultDone message. | |||
SearchResultEntry ::= [APPLICATION 4] SEQUENCE { | SearchResultEntry ::= [APPLICATION 4] SEQUENCE { | |||
objectName LDAPDN, | objectName LDAPDN, | |||
attributes PartialAttributeList } | attributes PartialAttributeList } | |||
PartialAttributeList ::= SEQUENCE OF | PartialAttributeList ::= SEQUENCE OF | |||
attribute PartialAttribute | partialAttribute PartialAttribute | |||
-- Note that the PartialAttributeList may hold zero elements. | -- Note that the PartialAttributeList may hold zero elements. | |||
-- This may happen when none of the attributes of an entry | -- This may happen when none of the attributes of an entry | |||
-- were requested, or could be returned. | -- were requested, or could be returned. | |||
-- Note also that the partialAttribute vals set may hold zero | ||||
PartialAttribute ::= SEQUENCE { | -- elements. This may happen when typesOnly is requested, access | |||
type AttributeDescription, | -- controls prevent the return of values, or other reasons. | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 21 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
vals SET OF value AttributeValue } | ||||
-- Note that the vals set may hold zero elements. | ||||
-- This may happen when typesOnly is requested, access controls | ||||
-- prevent the return of values, or other reasons. | ||||
SearchResultReference ::= [APPLICATION 19] SEQUENCE | SearchResultReference ::= [APPLICATION 19] SEQUENCE | |||
SIZE (1..MAX) OF uri URI | SIZE (1..MAX) OF uri URI | |||
SearchResultDone ::= [APPLICATION 5] LDAPResult | SearchResultDone ::= [APPLICATION 5] LDAPResult | |||
Each SearchResultEntry represents an entry found during the search. | Each SearchResultEntry represents an entry found during the search. | |||
Each SearchResultReference represents an area not yet explored during | Each SearchResultReference represents an area not yet explored during | |||
the search. The SearchResultEntry and SearchResultReference PDUs may | the search. The SearchResultEntry and SearchResultReference PDUs may | |||
come in any order. Following all the SearchResultReference and | come in any order. Following all the SearchResultReference and | |||
skipping to change at line 1201 | skipping to change at line 1229 | |||
response, which contains an indication of success, or detailing any | response, which contains an indication of success, or detailing any | |||
errors that have occurred. | errors that have occurred. | |||
Each entry returned in a SearchResultEntry will contain all | Each entry returned in a SearchResultEntry will contain all | |||
appropriate attributes as specified in the attributes field of the | appropriate attributes as specified in the attributes field of the | |||
Search Request. Return of attributes is subject to access control and | Search Request. Return of attributes is subject to access control and | |||
other administrative policy. | other administrative policy. | |||
Some attributes may be constructed by the server and appear in a | Some attributes may be constructed by the server and appear in a | |||
SearchResultEntry attribute list, although they are not stored | SearchResultEntry attribute list, although they are not stored | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 22 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
attributes of an entry. Clients SHOULD NOT assume that all attributes | attributes of an entry. Clients SHOULD NOT assume that all attributes | |||
can be modified, even if permitted by access control. | can be modified, even if permitted by access control. | |||
If the server's schema defines short names [Models] for an attribute | If the server's schema defines short names [Models] for an attribute | |||
type then the server SHOULD use one of those names in attribute | type then the server SHOULD use one of those names in attribute | |||
descriptions for that attribute type (in preference to using the | descriptions for that attribute type (in preference to using the | |||
<numericoid> [Models] format of the attribute type's object | <numericoid> [Models] format of the attribute type's object | |||
identifier). The server SHOULD NOT use the short name if that name is | identifier). The server SHOULD NOT use the short name if that name is | |||
known by the server to be ambiguous, or otherwise likely to cause | known by the server to be ambiguous, or otherwise likely to cause | |||
interoperability problems. | interoperability problems. | |||
skipping to change at line 1230 | skipping to change at line 1262 | |||
thus has not searched any entries; in this case it would return a | thus has not searched any entries; in this case it would return a | |||
SearchResultDone containing a referral result code. | SearchResultDone containing a referral result code. | |||
If a server holds a copy or partial copy of the subordinate naming | If a server holds a copy or partial copy of the subordinate naming | |||
context, it may use the search filter to determine whether or not to | context, it may use the search filter to determine whether or not to | |||
return a SearchResultReference response. Otherwise | return a SearchResultReference response. Otherwise | |||
SearchResultReference responses are always returned when in scope. | SearchResultReference responses are always returned when in scope. | |||
The SearchResultReference is of the same data type as the Referral. | The SearchResultReference is of the same data type as the Referral. | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 22 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
A URI for a server implementing LDAP and accessible via [TCP]/[IP] | A URI for a server implementing LDAP and accessible via [TCP]/[IP] | |||
(v4 or v6) is written as an LDAP URL according to [LDAPURL]. | (v4 or v6) is written as an LDAP URL according to [LDAPURL]. | |||
In order to complete the search, the client issues a new search | ||||
operation for each SearchResultReference that is returned. Note that | ||||
the abandon operation described in Section 4.11 applies only to a | ||||
particular operation sent on an association between a client and | ||||
server. The client must abandon subsequent search operations it | ||||
wishes to individually. | ||||
Clients that follow search continuation references MUST ensure that | ||||
they do not loop between servers. They MUST NOT repeatedly contact | ||||
the same server for the same request with the same target entry name, | ||||
scope and filter. Some clients use a counter that is incremented each | ||||
time search result reference handling occurs for an operation, and | ||||
these kinds of clients MUST be able to handle at least ten nested | ||||
search result references between the root and a leaf entry. | ||||
When an LDAP URL is used, the following instructions are followed: | When an LDAP URL is used, the following instructions are followed: | |||
- The <dn> part of the URL MUST be present, with the new target | - The <dn> part of the URL MUST be present, with the new target | |||
object name. The client MUST use this name when following the | object name. The client MUST use this name when following the | |||
referral. Note that UTF-8 characters appearing in a DN or search | referral. Note that UTF-8 characters appearing in a DN or search | |||
filter may not be legal for URLs (e.g. spaces) and MUST be | filter may not be legal for URLs (e.g. spaces) and MUST be | |||
escaped using the % method in [URI]. | escaped using the % method in [URI]. | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 23 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- It is RECOMMENDED that the <dn> part be present to avoid | ||||
ambiguity. | ||||
- Some servers (e.g. participating in distributed indexing) may | - Some servers (e.g. participating in distributed indexing) may | |||
provide a different filter in a URL of a SearchResultReference. | provide a different filter in a URL of a SearchResultReference. | |||
- If the <filter> part of the URL is present, the client MUST use | - If the <filter> part of the URL is present, the client MUST use | |||
this filter in its next request to progress this search, and if | this filter in its next request to progress this search, and if | |||
it is not present the client MUST use the same filter as it used | it is not present the client MUST use the same filter as it used | |||
for that search. | for that search. | |||
- If the originating search scope was singleLevel, the <scope> | - If the originating search scope was singleLevel, the <scope> | |||
part of the URL will be "base". | part of the URL will be "base". | |||
- it is RECOMMENDED that the <scope> part be present to avoid | ||||
ambiguity. | ||||
- If the <scope> part is missing, the scope of the original search | ||||
is used by the client to progress the operation. | ||||
- Other aspects of the new search request may be the same as or | - Other aspects of the new search request may be the same as or | |||
different from the search request which generated the | different from the search request which generated the | |||
SearchResultReference. | SearchResultReference. | |||
- The name of an unexplored subtree in a SearchResultReference | - The name of an unexplored subtree in a SearchResultReference | |||
need not be subordinate to the base object. | need not be subordinate to the base object. | |||
Other kinds of URIs may be returned, so long as the operation could | Other kinds of URIs may be returned. The syntax and semantics of such | |||
be performed using that protocol. The definition of such URIs and | URIs is left to future specifications. Clients ignore URIs that they | |||
instructions on their use is left to future specifications. | do not support. | |||
In order to complete the search, the client issues a new search | ||||
operation for each SearchResultReference that is returned. Note that | ||||
the abandon operation described in section 4.11 applies only to a | ||||
particular operation sent on an association between a client and | ||||
server. The client must abandon subsequent search operations it | ||||
wishes to individually. | ||||
4.5.3.1. Example | 4.5.3.1. Example | |||
For example, suppose the contacted server (hosta) holds the entry | For example, suppose the contacted server (hosta) holds the entry | |||
"DC=Example,DC=NET" and the entry "CN=Manager,DC=Example,DC=NET". It | "DC=Example,DC=NET" and the entry "CN=Manager,DC=Example,DC=NET". It | |||
knows that either LDAP-capable servers (hostb) or (hostc) hold | knows that either LDAP-capable servers (hostb) or (hostc) hold | |||
"OU=People,DC=Example,DC=NET" (one is the master and the other server | "OU=People,DC=Example,DC=NET" (one is the master and the other server | |||
a shadow), and that LDAP-capable server (hostd) holds the subtree | a shadow), and that LDAP-capable server (hostd) holds the subtree | |||
"OU=Roles,DC=Example,DC=NET". If a subtree search of | "OU=Roles,DC=Example,DC=NET". If a subtree search of | |||
"DC=Example,DC=NET" is requested to the contacted server, it may | "DC=Example,DC=NET" is requested to the contacted server, it may | |||
return the following: | return the following: | |||
SearchResultEntry for DC=Example,DC=NET | SearchResultEntry for DC=Example,DC=NET | |||
SearchResultEntry for CN=Manager,DC=Example,DC=NET | SearchResultEntry for CN=Manager,DC=Example,DC=NET | |||
SearchResultReference { | SearchResultReference { | |||
ldap://hostb/OU=People,DC=Example,DC=NET | ldap://hostb/OU=People,DC=Example,DC=NET??sub | |||
ldap://hostc/OU=People,DC=Example,DC=NET } | ldap://hostc/OU=People,DC=Example,DC=NET??sub } | |||
SearchResultReference { | SearchResultReference { | |||
ldap://hostd/OU=Roles,DC=Example,DC=NET } | ldap://hostd/OU=Roles,DC=Example,DC=NET??sub } | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 23 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
SearchResultDone (success) | SearchResultDone (success) | |||
Client implementors should note that when following a | Client implementors should note that when following a | |||
SearchResultReference, additional SearchResultReference may be | SearchResultReference, additional SearchResultReference may be | |||
generated. Continuing the example, if the client contacted the server | generated. Continuing the example, if the client contacted the server | |||
(hostb) and issued the search for the subtree | (hostb) and issued the search for the subtree | |||
"OU=People,DC=Example,DC=NET", the server might respond as follows: | "OU=People,DC=Example,DC=NET", the server might respond as follows: | |||
SearchResultEntry for OU=People,DC=Example,DC=NET | SearchResultEntry for OU=People,DC=Example,DC=NET | |||
SearchResultReference { | SearchResultReference { | |||
ldap://hoste/OU=Managers,OU=People,DC=Example,DC=NET } | ldap://hoste/OU=Managers,OU=People,DC=Example,DC=NET??sub } | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 24 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
SearchResultReference { | SearchResultReference { | |||
ldap://hostf/OU=Consultants,OU=People,DC=Example,DC=NET } | ldap://hostf/OU=Consultants,OU=People,DC=Example,DC=NET??sub } | |||
SearchResultDone (success) | SearchResultDone (success) | |||
If the contacted server does not hold the base object for the search, | If the contacted server does not hold the base object for the search, | |||
then it will return a referral to the client. For example, if the | then it will return a referral to the client. For example, if the | |||
client requests a subtree search of "DC=Example,DC=ORG" to hosta, the | client requests a subtree search of "DC=Example,DC=ORG" to hosta, the | |||
server may return only a SearchResultDone containing a referral. | server may return only a SearchResultDone containing a referral. | |||
SearchResultDone (referral) { | SearchResultDone (referral) { | |||
ldap://hostg/DC=Example,DC=ORG??sub } | ldap://hostg/DC=Example,DC=ORG??sub } | |||
skipping to change at line 1343 | skipping to change at line 1390 | |||
- changes: A list of modifications to be performed on the entry. The | - changes: A list of modifications to be performed on the entry. The | |||
entire list of modifications MUST be performed in the order they | entire list of modifications MUST be performed in the order they | |||
are listed, as a single atomic operation. While individual | are listed, as a single atomic operation. While individual | |||
modifications may violate certain aspects of the directory schema | modifications may violate certain aspects of the directory schema | |||
(such as the object class definition and DIT content rule), the | (such as the object class definition and DIT content rule), the | |||
resulting entry after the entire list of modifications is | resulting entry after the entire list of modifications is | |||
performed MUST conform to the requirements of the directory | performed MUST conform to the requirements of the directory | |||
schema. | schema. | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 24 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- operation: Used to specify the type of modification being | - operation: Used to specify the type of modification being | |||
performed. Each operation type acts on the following | performed. Each operation type acts on the following | |||
modification. The values of this field have the following | modification. The values of this field have the following | |||
semantics respectively: | semantics respectively: | |||
add: add values listed to the modification attribute, | add: add values listed to the modification attribute, | |||
creating the attribute if necessary; | creating the attribute if necessary; | |||
delete: delete values listed from the modification | delete: delete values listed from the modification | |||
attribute, removing the entire attribute if no values are | attribute, removing the entire attribute if no values are | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 25 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
listed, or if all current values of the attribute are | listed, or if all current values of the attribute are | |||
listed for deletion; | listed for deletion; | |||
replace: replace all existing values of the modification | replace: replace all existing values of the modification | |||
attribute with the new values listed, creating the | attribute with the new values listed, creating the | |||
attribute if it did not already exist. A replace with no | attribute if it did not already exist. A replace with no | |||
value will delete the entire attribute if it exists, and is | value will delete the entire attribute if it exists, and is | |||
ignored if the attribute does not exist. | ignored if the attribute does not exist. | |||
- modification: A PartialAttribute (which may have an empty SET of | - modification: A PartialAttribute (which may have an empty SET of | |||
skipping to change at line 1390 | skipping to change at line 1438 | |||
the DIT have been performed if the Modify Response received indicates | the DIT have been performed if the Modify Response received indicates | |||
any sort of error, and that all requested modifications have been | any sort of error, and that all requested modifications have been | |||
performed if the Modify Response indicates successful completion of | performed if the Modify Response indicates successful completion of | |||
the Modify Operation. If the association changes or the connection | the Modify Operation. If the association changes or the connection | |||
fails, whether the modification occurred or not is indeterminate. | fails, whether the modification occurred or not is indeterminate. | |||
The Modify Operation cannot be used to remove from an entry any of | The Modify Operation cannot be used to remove from an entry any of | |||
its distinguished values, i.e. those values which form the entry's | its distinguished values, i.e. those values which form the entry's | |||
relative distinguished name. An attempt to do so will result in the | relative distinguished name. An attempt to do so will result in the | |||
server returning the notAllowedOnRDN result code. The Modify DN | server returning the notAllowedOnRDN result code. The Modify DN | |||
Operation described in section 4.9 is used to rename an entry. | Operation described in Section 4.9 is used to rename an entry. | |||
Note that due to the simplifications made in LDAP, there is not a | Note that due to the simplifications made in LDAP, there is not a | |||
direct mapping of the changes in an LDAP ModifyRequest onto the | direct mapping of the changes in an LDAP ModifyRequest onto the | |||
changes of a DAP ModifyEntry operation, and different implementations | changes of a DAP ModifyEntry operation, and different implementations | |||
of LDAP-DAP gateways may use different means of representing the | of LDAP-DAP gateways may use different means of representing the | |||
change. If successful, the final effect of the operations on the | change. If successful, the final effect of the operations on the | |||
entry MUST be identical. | entry MUST be identical. | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 25 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
4.7. Add Operation | 4.7. Add Operation | |||
The Add Operation allows a client to request the addition of an entry | The Add Operation allows a client to request the addition of an entry | |||
into the Directory. The Add Request is defined as follows: | into the Directory. The Add Request is defined as follows: | |||
AddRequest ::= [APPLICATION 8] SEQUENCE { | AddRequest ::= [APPLICATION 8] SEQUENCE { | |||
entry LDAPDN, | entry LDAPDN, | |||
attributes AttributeList } | attributes AttributeList } | |||
AttributeList ::= SEQUENCE OF attribute Attribute | AttributeList ::= SEQUENCE OF attribute Attribute | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 26 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Parameters of the Add Request are: | Parameters of the Add Request are: | |||
- entry: the name of the entry to be added. Note that the server | - entry: the name of the entry to be added. Note that the server | |||
SHALL NOT dereference any aliases in locating the entry to be | SHALL NOT dereference any aliases in locating the entry to be | |||
added. | added. | |||
- attributes: the list of attributes that make up the content of the | - attributes: the list of attributes that make up the content of the | |||
entry being added. Clients MUST include distinguished values | entry being added. Clients MUST include distinguished values | |||
(those forming the entry's own RDN) in this list, the objectClass | (those forming the entry's own RDN) in this list, the objectClass | |||
attribute, and values of any mandatory attributes of the listed | attribute, and values of any mandatory attributes of the listed | |||
skipping to change at line 1453 | skipping to change at line 1501 | |||
requested entry. The result of the add attempt will be returned to | requested entry. The result of the add attempt will be returned to | |||
the client in the Add Response, defined as follows: | the client in the Add Response, defined as follows: | |||
AddResponse ::= [APPLICATION 9] LDAPResult | AddResponse ::= [APPLICATION 9] LDAPResult | |||
A response of success indicates that the new entry is present in the | A response of success indicates that the new entry is present in the | |||
Directory. | Directory. | |||
4.8. Delete Operation | 4.8. Delete Operation | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 26 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
The Delete Operation allows a client to request the removal of an | The Delete Operation allows a client to request the removal of an | |||
entry from the Directory. The Delete Request is defined as follows: | entry from the Directory. The Delete Request is defined as follows: | |||
DelRequest ::= [APPLICATION 10] LDAPDN | DelRequest ::= [APPLICATION 10] LDAPDN | |||
The Delete Request consists of the name of the entry to be deleted. | The Delete Request consists of the name of the entry to be deleted. | |||
The server SHALL NOT dereference aliases while resolving the name of | The server SHALL NOT dereference aliases while resolving the name of | |||
the target entry to be removed. | the target entry to be removed. | |||
Only leaf entries (those with no subordinate entries) can be deleted | Only leaf entries (those with no subordinate entries) can be deleted | |||
with this operation. | with this operation. | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 27 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Upon receipt of a Delete Request, a server will attempt to perform | Upon receipt of a Delete Request, a server will attempt to perform | |||
the entry removal requested and return the result in the Delete | the entry removal requested and return the result in the Delete | |||
Response defined as follows: | Response defined as follows: | |||
DelResponse ::= [APPLICATION 11] LDAPResult | DelResponse ::= [APPLICATION 11] LDAPResult | |||
4.9. Modify DN Operation | 4.9. Modify DN Operation | |||
The Modify DN Operation allows a client to change the Relative | The Modify DN Operation allows a client to change the Relative | |||
Distinguished Name (RDN) of an entry in the Directory, and/or to move | Distinguished Name (RDN) of an entry in the Directory, and/or to move | |||
skipping to change at line 1509 | skipping to change at line 1557 | |||
- newSuperior: if present, this is the name of an existing object | - newSuperior: if present, this is the name of an existing object | |||
entry which becomes the immediate superior (parent) of the | entry which becomes the immediate superior (parent) of the | |||
existing entry. | existing entry. | |||
Upon receipt of a ModifyDNRequest, a server will attempt to perform | Upon receipt of a ModifyDNRequest, a server will attempt to perform | |||
the name change and return the result in the Modify DN Response, | the name change and return the result in the Modify DN Response, | |||
defined as follows: | defined as follows: | |||
ModifyDNResponse ::= [APPLICATION 13] LDAPResult | ModifyDNResponse ::= [APPLICATION 13] LDAPResult | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 27 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
For example, if the entry named in the "entry" parameter was "cn=John | For example, if the entry named in the "entry" parameter was "cn=John | |||
Smith,c=US", the newrdn parameter was "cn=John Cougar Smith", and the | Smith,c=US", the newrdn parameter was "cn=John Cougar Smith", and the | |||
newSuperior parameter was absent, then this operation would attempt | newSuperior parameter was absent, then this operation would attempt | |||
to rename the entry to be "cn=John Cougar Smith,c=US". If there was | to rename the entry to be "cn=John Cougar Smith,c=US". If there was | |||
already an entry with that name, the operation would fail with the | already an entry with that name, the operation would fail with the | |||
entryAlreadyExists result code. | entryAlreadyExists result code. | |||
The object named in newSuperior MUST exist. For example, if the | The object named in newSuperior MUST exist. For example, if the | |||
client attempted to add "CN=JS,DC=Example,DC=NET", the | client attempted to add "CN=JS,DC=Example,DC=NET", the | |||
"DC=Example,DC=NET" entry did not exist, and the "DC=NET" entry did | "DC=Example,DC=NET" entry did not exist, and the "DC=NET" entry did | |||
exist, then the server would return the noSuchObject result code with | exist, then the server would return the noSuchObject result code with | |||
the matchedDN field containing "DC=NET". | the matchedDN field containing "DC=NET". | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 28 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
If the deleteoldrdn parameter is TRUE, the values forming the old RDN | If the deleteoldrdn parameter is TRUE, the values forming the old RDN | |||
are deleted from the entry. If the deleteoldrdn parameter is FALSE, | are deleted from the entry. If the deleteoldrdn parameter is FALSE, | |||
the values forming the old RDN will be retained as non-distinguished | the values forming the old RDN will be retained as non-distinguished | |||
attribute values of the entry. The server MUST fail the operation and | attribute values of the entry. The server MUST fail the operation and | |||
return an error in the result code if the setting of the deleteoldrdn | return an error in the result code if the setting of the deleteoldrdn | |||
parameter would cause a schema inconsistency in the entry. | parameter would cause a schema inconsistency in the entry. | |||
Note that X.500 restricts the ModifyDN operation to only affect | Note that X.500 restricts the ModifyDN operation to only affect | |||
entries that are contained within a single server. If the LDAP server | entries that are contained within a single server. If the LDAP server | |||
is mapped onto DAP, then this restriction will apply, and the | is mapped onto DAP, then this restriction will apply, and the | |||
skipping to change at line 1566 | skipping to change at line 1614 | |||
- ava: the assertion with which an attribute in the entry is to be | - ava: the assertion with which an attribute in the entry is to be | |||
compared. | compared. | |||
Upon receipt of a Compare Request, a server will attempt to perform | Upon receipt of a Compare Request, a server will attempt to perform | |||
the requested comparison using the EQUALITY matching rule for the | the requested comparison using the EQUALITY matching rule for the | |||
attribute type and return the result in the Compare Response, defined | attribute type and return the result in the Compare Response, defined | |||
as follows: | as follows: | |||
CompareResponse ::= [APPLICATION 15] LDAPResult | CompareResponse ::= [APPLICATION 15] LDAPResult | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 28 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
In the event that the attribute or subtype is not present in the | In the event that the attribute or subtype is not present in the | |||
entry, the resultCode field is set to noSuchAttribute. If the | entry, the resultCode field is set to noSuchAttribute. If the | |||
attribute is unknown, the resultCode is set to | attribute is unknown, the resultCode is set to | |||
undefinedAttributeType. Note that errors and the result of comparison | undefinedAttributeType. Note that errors and the result of comparison | |||
are all returned in the same construct. | are all returned in the same construct. | |||
Note that some directory systems may establish access controls which | Note that some directory systems may establish access controls which | |||
permit the values of certain attributes (such as userPassword) to be | permit the values of certain attributes (such as userPassword) to be | |||
compared but not interrogated by other means. | compared but not interrogated by other means. | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 29 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
4.11. Abandon Operation | 4.11. Abandon Operation | |||
The function of the Abandon Operation is to allow a client to request | The function of the Abandon Operation is to allow a client to request | |||
that the server abandon an outstanding operation. The Abandon Request | that the server abandon an outstanding operation. The Abandon Request | |||
is defined as follows: | is defined as follows: | |||
AbandonRequest ::= [APPLICATION 16] MessageID | AbandonRequest ::= [APPLICATION 16] MessageID | |||
The MessageID MUST be that of an operation which was requested | The MessageID MUST be that of an operation which was requested | |||
earlier in this LDAP association. The abandon request itself has its | earlier in this LDAP association. The abandon request itself has its | |||
skipping to change at line 1621 | skipping to change at line 1669 | |||
multiple times, and MUST also be prepared to receive results from | multiple times, and MUST also be prepared to receive results from | |||
operations it has abandoned (since these may have been in transit | operations it has abandoned (since these may have been in transit | |||
when the abandon was requested, or are not able to be abandoned). | when the abandon was requested, or are not able to be abandoned). | |||
Servers MUST discard abandon requests for message IDs they do not | Servers MUST discard abandon requests for message IDs they do not | |||
recognize, for operations which cannot be abandoned, and for | recognize, for operations which cannot be abandoned, and for | |||
operations which have already been abandoned. | operations which have already been abandoned. | |||
4.12. Extended Operation | 4.12. Extended Operation | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 29 | The extended operation allows additional operations to be defined for | |||
Lightweight Directory Access Protocol Version 3 | services not already available in the protocol. For example, to add | |||
operations to install transport layer security (see Section 4.13). | ||||
An extension mechanism has been added in this version of LDAP, in | ||||
order to allow additional operations to be defined for services not | ||||
available elsewhere in this protocol, for instance digitally signed | ||||
operations and results. | ||||
The extended operation allows clients to make requests and receive | The extended operation allows clients to make requests and receive | |||
responses with predefined syntaxes and semantics. These may be | responses with predefined syntaxes and semantics. These may be | |||
defined in RFCs or be private to particular implementations. Each | defined in RFCs or be private to particular implementations. | |||
request MUST have a unique OBJECT IDENTIFIER assigned to it. | ||||
Each extended operation consists of an extended request and an | ||||
extended response. | ||||
Sermersheim Internet-Draft - Expires Jun 2004 Page 30 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
ExtendedRequest ::= [APPLICATION 23] SEQUENCE { | ExtendedRequest ::= [APPLICATION 23] SEQUENCE { | |||
requestName [0] LDAPOID, | requestName [0] LDAPOID, | |||
requestValue [1] OCTET STRING OPTIONAL } | requestValue [1] OCTET STRING OPTIONAL } | |||
The requestName is a dotted-decimal representation of the OBJECT | The requestName is a dotted-decimal representation of the unique | |||
IDENTIFIER corresponding to the request. The requestValue is | OBJECT IDENTIFIER corresponding to the request. The requestValue is | |||
information in a form defined by that request, encapsulated inside an | information in a form defined by that request, encapsulated inside an | |||
OCTET STRING. | OCTET STRING. | |||
The server will respond to this with an LDAPMessage containing the | The server will respond to this with an LDAPMessage containing the | |||
ExtendedResponse. | ExtendedResponse. | |||
ExtendedResponse ::= [APPLICATION 24] SEQUENCE { | ExtendedResponse ::= [APPLICATION 24] SEQUENCE { | |||
COMPONENTS OF LDAPResult, | COMPONENTS OF LDAPResult, | |||
responseName [10] LDAPOID OPTIONAL, | responseName [10] LDAPOID OPTIONAL, | |||
responseValue [11] OCTET STRING OPTIONAL } | responseValue [11] OCTET STRING OPTIONAL } | |||
If the server does not recognize the request name, it MUST return | The responseName is typically not required to be present as the | |||
only the response fields from LDAPResult, containing the | syntax and semantics of the response (including the format of the | |||
protocolError result code. | responseValue) is implicitly known and associated with the request by | |||
the messageID. | ||||
If the requestName is not recognized by the server, the server MUST | ||||
NOT provide a responseName nor a responseValue and MUST return a | ||||
resultCode of protocolError. | ||||
The requestValue and responseValue fields contain any information | The requestValue and responseValue fields contain any information | |||
associated with the operation. The format of these fields is defined | associated with the operation. The format of these fields is defined | |||
by the specification of the extended operation. Implementations MUST | by the specification of the extended operation. Implementations MUST | |||
be prepared to handle arbitrary contents of these fields, including | be prepared to handle arbitrary contents of these fields, including | |||
zero bytes. Values that are defined in terms of ASN.1 and BER encoded | zero bytes. Values that are defined in terms of ASN.1 and BER encoded | |||
according to Section 5.1, also follow the extensibility rules in | according to Section 5.1, also follow the extensibility rules in | |||
Section 4. | Section 4. | |||
It is RECOMMENDED that servers list the requestName of extended | ||||
operations they support in the supportedExtension attribute [Models] | ||||
of the root DSE. | ||||
Extended operations may be specified in other documents. The | Extended operations may be specified in other documents. The | |||
specification of an extended operation consists of: | specification of an extended operation consists of: | |||
- the OBJECT IDENTIFIER assigned to the ExtendedRequest.requestName | - the OBJECT IDENTIFIER assigned to the requestName (and possibly | |||
(and possibly ExtendedResponse.responseName), | responseName), | |||
- the format of the contents of the requestValue and responseValue | - the format of the contents of the requestValue and responseValue | |||
(if any), | (if any), | |||
- the semantics of the operation, | - the semantics of the operation, | |||
It is RECOMMENDED that servers list the requestName of | 4.13. StartTLS Operation | |||
ExtendedRequests they support in the supportedExtension attribute | ||||
[Models] in the root DSE. | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 30 | Sermersheim Internet-Draft - Expires Jun 2004 Page 31 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
4.13. Start TLS Operation | ||||
The Start Transport Layer Security (StartTLS) operation provides the | The Start Transport Layer Security (StartTLS) operation provides the | |||
ability to establish Transport Layer Security [RFC2246] on an LDAP | ability to establish Transport Layer Security ([TLS]) on an LDAP | |||
connection. | connection. The StartTLS operation is defined using the extended | |||
operation mechanism described in Section 4.12. | ||||
4.13.1. Start TLS Request | 4.13.1. Start TLS Request | |||
A client requests TLS establishment by transmitting a Start TLS | A client requests TLS establishment by transmitting a Start TLS | |||
request PDU to the server. The Start TLS request is defined in terms | request PDU to the server. The Start TLS request is defined in terms | |||
of an ExtendedRequest. The requestName is "1.3.6.1.4.1.1466.20037", | of an ExtendedRequest. The requestName is "1.3.6.1.4.1.1466.20037", | |||
and the requestValue field is absent. | and the requestValue field is always absent. | |||
The client MUST NOT send any PDUs on this connection following this | The client MUST NOT send any PDUs on this connection following this | |||
request until it receives a Start TLS extended response. | request until it receives a Start TLS extended response. | |||
4.13.2. Start TLS Response | 4.13.2. Start TLS Response | |||
When a Start TLS request is made, servers supporting the operation | When a Start TLS request is made, servers supporting the operation | |||
MUST return a Start TLS response PDU to the requestor. The Start TLS | MUST return a Start TLS response PDU to the requestor. The Start TLS | |||
response responseName is also "1.3.6.1.4.1.1466.20037", and the | response responseName is also "1.3.6.1.4.1.1466.20037", and the | |||
response field is absent. | response field is absent. | |||
The server MUST set the resultCode field to either success or one of | The server MUST set the resultCode field to either success or one of | |||
the other values outlined in section 4.13.2.2. | the other values outlined in Section 4.13.2.2. | |||
4.13.2.1. "Success" Response | 4.13.2.1. "Success" Response | |||
If the Start TLS Response contains a result code of success, this | If the Start TLS Response contains a result code of success, this | |||
indicates that the server is willing and able to negotiate TLS. Refer | indicates that the server is willing and able to negotiate TLS. Refer | |||
to section 5.3 of [AuthMeth] for details. | to Section 5.3 of [AuthMeth] for details. | |||
4.13.2.2. Response other than "success" | 4.13.2.2. Response other than "success" | |||
If the ExtendedResponse contains a result code other than success, | If the ExtendedResponse contains a result code other than success, | |||
this indicates that the server is unwilling or unable to negotiate | this indicates that the server is unwilling or unable to negotiate | |||
TLS. The following result codes have these meanings for this | TLS. The following result codes have these meanings for this | |||
operation: | operation: | |||
- operationsError: operations sequencing incorrect; e.g. TLS already | - operationsError: operations sequencing incorrect; e.g. TLS is | |||
established) | already established. | |||
- protocolError: (TLS not supported or incorrect PDU structure) | - protocolError: TLS is not supported or incorrect PDU structure. | |||
- unavailable: (e.g. some major problem with TLS, or server is | - unavailable: Some major problem with TLS, or the server is | |||
shutting down) | shutting down. | |||
The server MUST return operationsError if the client violates any of | The server MUST return operationsError if the client violates any of | |||
the Start TLS extended operation sequencing requirements described in | the Start TLS extended operation sequencing requirements described in | |||
section 5.3 of [AuthMeth]. | Section 5.3 of [AuthMeth]. | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 31 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
If the server does not support TLS (whether by design or by current | If the server does not support TLS (whether by design or by current | |||
configuration), it MUST set the resultCode field to protocolError. | configuration), it MUST set the resultCode field to protocolError. | |||
The client's current association is unaffected if the server does not | The client's current association is unaffected if the server does not | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 32 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
support TLS. The client may proceed with any LDAP operation, or it | support TLS. The client may proceed with any LDAP operation, or it | |||
may close the connection. | may close the connection. | |||
The server MUST return unavailable if it supports TLS but cannot | The server MUST return unavailable if it supports TLS but cannot | |||
establish a TLS connection for some reason, e.g. the certificate | establish a TLS connection for some reason, e.g. the certificate | |||
server not responding, it cannot contact its TLS implementation, or | server not responding, it cannot contact its TLS implementation, or | |||
if the server is in process of shutting down. The client may retry | if the server is in process of shutting down. The client may retry | |||
the StartTLS operation, or it may proceed with any other LDAP | the StartTLS operation, or it may proceed with any other LDAP | |||
operation, or it may close the LDAP connection. | operation, or it may close the LDAP connection. | |||
skipping to change at line 1788 | skipping to change at line 1844 | |||
TLS connection is intact MUST wait for those message responses before | TLS connection is intact MUST wait for those message responses before | |||
sending the TLS closure alert. | sending the TLS closure alert. | |||
4.13.3.2. Abrupt Closure | 4.13.3.2. Abrupt Closure | |||
Either the client or server MAY abruptly close the TLS connection by | Either the client or server MAY abruptly close the TLS connection by | |||
dropping the underlying transfer protocol connection. In this | dropping the underlying transfer protocol connection. In this | |||
circumstance, a server MAY send the client a Notice of Disconnection | circumstance, a server MAY send the client a Notice of Disconnection | |||
before dropping the underlying LDAP connection. | before dropping the underlying LDAP connection. | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 32 | 5. Protocol Element Encodings and Transfer | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 33 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
5. Protocol Element Encodings and Transfer | One underlying service, LDAP over TCP, is defined here. This service | |||
is generally applicable to applications providing or consuming X.500- | ||||
based directory services on the Internet. | ||||
One underlying service is defined here. Clients and servers SHOULD | Implementations of LDAP over TCP MUST implement the mapping as | |||
implement the mapping of LDAP over [TCP] described in 5.2.1. | described in Section 5.2.1 | |||
5.1. Protocol Encoding | 5.1. Protocol Encoding | |||
The protocol elements of LDAP are encoded for exchange using the | The protocol elements of LDAP SHALL be encoded for exchange using the | |||
Basic Encoding Rules [BER] of [ASN.1]. However, due to the high | Basic Encoding Rules [BER] of [ASN.1] with the following | |||
overhead involved in using certain elements of the BER, the following | restrictions: | |||
additional restrictions are placed on BER-encodings of LDAP protocol | ||||
elements: | ||||
(1) Only the definite form of length encoding will be used. | (1) Only the definite form of length encoding is used. | |||
(2) OCTET STRING values will be encoded in the primitive form only. | (2) OCTET STRING values are encoded in the primitive form only. | |||
(3) If the value of a BOOLEAN type is true, the encoding MUST have | (3) If the value of a BOOLEAN type is true, the encoding of the | |||
its contents octets set to hex "FF". | value octet is set to hex "FF". | |||
(4) If a value of a type is its default value, it MUST be absent. | (4) If a value of a type is its default value, it is absent. Only | |||
Only some BOOLEAN and INTEGER types have default values in this | some BOOLEAN and INTEGER types have default values in this | |||
protocol definition. | protocol definition. | |||
These restrictions are meant to ease the overhead of encoding and | ||||
decoding certain elements in BER. | ||||
These restrictions do not apply to ASN.1 types encapsulated inside of | These restrictions do not apply to ASN.1 types encapsulated inside of | |||
OCTET STRING values, such as attribute values, unless otherwise | OCTET STRING values, such as attribute values, unless otherwise | |||
noted. | stated. | |||
5.2. Transfer Protocols | 5.2. Transfer Protocols | |||
This protocol is designed to run over connection-oriented, reliable | This protocol is designed to run over connection-oriented, reliable | |||
transports, with all 8 bits in an octet being significant in the data | transports, with all 8 bits in an octet being significant in the data | |||
stream. | stream. | |||
5.2.1. Transmission Control Protocol (TCP) | 5.2.1. Transmission Control Protocol (TCP) | |||
The encoded LDAPMessage PDUs are mapped directly onto the [TCP] | The encoded LDAPMessage PDUs are mapped directly onto the [TCP] | |||
bytestream using the BER-based encoding described in section 5.1. It | bytestream using the BER-based encoding described in Section 5.1. It | |||
is recommended that server implementations running over the TCP | is recommended that server implementations running over the TCP | |||
provide a protocol listener on the assigned port, 389. Servers may | provide a protocol listener on the assigned port, 389. Servers may | |||
instead provide a listener on a different port number. Clients MUST | instead provide a listener on a different port number. Clients MUST | |||
support contacting servers on any valid TCP port. | support contacting servers on any valid TCP port. | |||
6. Implementation Guidelines | 6. Security Considerations | |||
6.1. Server Implementations | This version of the protocol provides facilities for simple | |||
authentication using a cleartext password, as well as any [SASL] | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 33 | Sermersheim Internet-Draft - Expires Jun 2004 Page 34 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
The server MUST be capable of recognizing all the mandatory attribute | ||||
types specified in [Models], and implement the syntaxes used by those | ||||
attributes specified in [Syntaxes]. Servers MAY also recognize | ||||
additional attribute type names. | ||||
6.2. Client Implementations | ||||
Clients that follow referrals or search continuation references MUST | ||||
ensure that they do not loop between servers. They MUST NOT | ||||
repeatedly contact the same server for the same request with the same | ||||
target entry name, scope and filter. Some clients use a counter that | ||||
is incremented each time referral handling occurs for an operation, | ||||
and these kinds of clients MUST be able to handle at least ten nested | ||||
referrals between the root and a leaf entry. | ||||
In the absence of prior agreements with servers, clients SHOULD NOT | ||||
assume that servers support any particular schemas beyond those | ||||
referenced in section 6.1. Different schemas can have different | ||||
attribute types with the same names. The client can retrieve the | ||||
subschema entries referenced by the subschemaSubentry attribute in | ||||
the entries held by the server. | ||||
7. Security Considerations | ||||
This version of the protocol provides facilities for simple | ||||
authentication using a cleartext password, as well as any [SASL] | ||||
mechanism. SASL allows for integrity and privacy services to be | mechanism. SASL allows for integrity and privacy services to be | |||
negotiated. | negotiated. | |||
It is also permitted that the server can return its credentials to | It is also permitted that the server can return its credentials to | |||
the client, if it chooses to do so. | the client, if it chooses to do so. | |||
Use of cleartext password is strongly discouraged where the | Use of cleartext password is strongly discouraged where the | |||
underlying transport service cannot guarantee confidentiality and may | underlying transport service cannot guarantee confidentiality and may | |||
result in disclosure of the password to unauthorized parties. | result in disclosure of the password to unauthorized parties. | |||
Servers are encouraged to prevent directory modifications by clients | ||||
that have authenticated anonymously [AuthMeth]. | ||||
Requirements of authentication methods, SASL mechanisms, and TLS are | Requirements of authentication methods, SASL mechanisms, and TLS are | |||
described in [AUTHMETH]. | described in [AuthMeth]. | |||
When used with SASL, it should be noted that the name field of the | It should be noted that SASL authentication exchanges do not provide | |||
BindRequest is not protected against modification. Thus if the | data confidentiality nor integrity protection for the version or name | |||
distinguished name of the client (an LDAPDN) is agreed through the | fields of the bind request nor the resultCode, diagnosticMessage, or | |||
negotiation of the credentials, it takes precedence over any value in | referral fields of the bind response nor of any information contained | |||
the unprotected name field. | in controls attached to bind request or responses. Thus information | |||
contained in these fields SHOULD NOT be relied on unless otherwise | ||||
protected (such as by establishing protections at the transport | ||||
layer). | ||||
Server implementors should plan for the possibility of an identity | Server implementors should plan for the possibility of an identity | |||
associated with an LDAP connection being deleted, renamed, or | associated with an LDAP connection being deleted, renamed, or | |||
modified, and take appropriate actions to prevent insecure side | modified, and take appropriate actions to prevent insecure side | |||
effects. The way in which this is dealt with is implementation | effects. Likewise, server implementors should plan for the | |||
specific. Likewise, server implementors should plan for the | possibility of an associated identity's credentials becoming invalid, | |||
possibility of an associated identity's credentials becoming invalid. | or an identities privileges being changed. The way in which these | |||
issues are addressed are application | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 34 | and/or implementation specific. | |||
Lightweight Directory Access Protocol Version 3 | ||||
Implementations which cache attributes and entries obtained via LDAP | Implementations which cache attributes and entries obtained via LDAP | |||
MUST ensure that access controls are maintained if that information | MUST ensure that access controls are maintained if that information | |||
is to be provided to multiple clients, since servers may have access | is to be provided to multiple clients, since servers may have access | |||
control policies which prevent the return of entries or attributes in | control policies which prevent the return of entries or attributes in | |||
search results except to particular authenticated clients. For | search results except to particular authenticated clients. For | |||
example, caches could serve result information only to the client | example, caches could serve result information only to the client | |||
whose request caused it to be in the cache. | whose request caused it to be in the cache. | |||
Protocol servers may return referrals which redirect protocol clients | Protocol servers may return referrals which redirect protocol clients | |||
to peer servers. It is possible for a rogue application to inject | to peer servers. It is possible for a rogue application to inject | |||
such referrals into the data stream in an attempt to redirect a | such referrals into the data stream in an attempt to redirect a | |||
client to a rogue server. Protocol clients are advised to be aware of | client to a rogue server. Protocol clients are advised to be aware of | |||
this, and possibly reject referrals when confidentiality measures are | this, and possibly reject referrals when confidentiality measures are | |||
not in place. Protocol clients are advised to ignore referrals from | not in place. Protocol clients are advised to reject referrals from | |||
the Start TLS operation. | the Start TLS operation. | |||
Protocol peers MUST be prepared to handle invalid and arbitrary | Protocol peers MUST be prepared to handle invalid and arbitrary | |||
length protocol encodings. A number of LDAP security advisories are | length protocol encodings. A number of LDAP security advisories are | |||
available through [CERT]. | available through [CERT]. | |||
8. Acknowledgements | Sermersheim Internet-Draft - Expires Jun 2004 Page 35 | |||
Lightweight Directory Access Protocol Version 3 | ||||
This document is an update to RFC 2251, by Mark Wahl, Tim Howes, and | ||||
Steve Kille. Their work along with the input of individuals of the | ||||
IETF LDAPEXT, LDUP, LDAPBIS, and other Working Groups is gratefully | ||||
acknowledged. | ||||
9. Normative References | 7. Acknowledgements | |||
[X.500] ITU-T Rec. X.500, "The Directory: Overview of Concepts, | This document updates RFC 2251 by Mark Wahl, Tim Howes, and Steve | |||
Models and Service", 1993. | Kille. It also updates RFC 2830 by Jeff Hodges, RL "Bob" Morgan, and | |||
Mark Wahl. Their work along with the input of individuals of the IETF | ||||
ASID, LDAPEXT, LDUP, LDAPBIS, and other Working Groups is gratefully | ||||
acknowledged. | ||||
[Roadmap] Zeilenga, K., "LDAP: Technical Specification Road Map", | 8. Normative References | |||
draft-ietf-ldapbis-roadmap-xx.txt (a work in progress). | ||||
[Keyword] Bradner, S., "Key words for use in RFCs to Indicate | [ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax | |||
Requirement Levels", RFC 2119, March 1997. | Specifications: ABNF", RFC 2234, November 1997. | |||
[ASN.1] ITU-T Recommendation X.680 (07/2002) | ISO/IEC 8824-1:2002 | [ASN.1] ITU-T Recommendation X.680 (07/2002) | ISO/IEC 8824-1:2002 | |||
"Information Technology - Abstract Syntax Notation One | "Information Technology - Abstract Syntax Notation One | |||
(ASN.1): Specification of basic notation" | (ASN.1): Specification of basic notation" | |||
[AuthMeth] Harrison, R., "LDAP: Authentication Methods and Connection | ||||
Level Security Mechanisms ", draft-ietf-ldapbis-authmeth- | ||||
xx.txt, (a work in progress). | ||||
[BER] ITU-T Rec. X.690 (07/2002) | ISO/IEC 8825-1:2002, | [BER] ITU-T Rec. X.690 (07/2002) | ISO/IEC 8825-1:2002, | |||
"Information technology - ASN.1 encoding rules: | "Information technology - ASN.1 encoding rules: | |||
Specification of Basic Encoding Rules (BER), Canonical | Specification of Basic Encoding Rules (BER), Canonical | |||
Encoding Rules (CER) and Distinguished Encoding Rules | Encoding Rules (CER) and Distinguished Encoding Rules | |||
(DER)", 2002. | (DER)", 2002. | |||
[LDAPIANA] Zeilenga, K., "IANA Considerations for LDAP", draft-ietf- | [IP] Postel, J., "Internet Protocol", STD5 and RFC 791, | |||
ldapbis-bcp64-00.txt, (a work in progress). | September 1981 | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 35 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
[ISO10646] Universal Multiple-Octet Coded Character Set (UCS) - | [ISO10646] Universal Multiple-Octet Coded Character Set (UCS) - | |||
Architecture and Basic Multilingual Plane, ISO/IEC 10646-1 | Architecture and Basic Multilingual Plane, ISO/IEC 10646-1 | |||
: 1993. | : 1993. | |||
[UTF-8] Yergeau, F., "UTF-8, a transformation format of Unicode | [Keyword] Bradner, S., "Key words for use in RFCs to Indicate | |||
and ISO 10646", draft-yergeau-rfc2279bis-xx.txt, (a work | Requirement Levels", RFC 2119, March 1997. | |||
in progress). | ||||
[Models] Zeilenga, K., "LDAP: Directory Information Models", draft- | ||||
ietf-ldapbis-models-xx.txt (a work in progress). | ||||
[LDAPDN] Zeilenga, K., "LDAP: String Representation of | [LDAPDN] Zeilenga, K., "LDAP: String Representation of | |||
Distinguished Names", draft-ietf-ldapbis-dn-xx.txt, (a | Distinguished Names", draft-ietf-ldapbis-dn-xx.txt, (a | |||
work in progress). | work in progress). | |||
[Syntaxes] Legg, S., and K. Dally, "LDAP: Syntaxes and Matching | [LDAPIANA] Zeilenga, K., "IANA Considerations for LDAP", draft-ietf- | |||
Rules", draft-ietf-ldapbis-syntaxes-xx.txt, (a work in | ldapbis-bcp64-xx.txt, (a work in progress). | |||
progress). | ||||
[X.501] ITU-T Rec. X.501, "The Directory: Models", 1993. | [LDAPURL] Smith, M., "LDAP: Uniform Resource Locator", draft-ietf- | |||
ldapbis-url-xx.txt, (a work in progress). | ||||
[X.511] ITU-T Rec. X.511, "The Directory: Abstract Service | [Models] Zeilenga, K., "LDAP: Directory Information Models", draft- | |||
Definition", 1993. | ietf-ldapbis-models-xx.txt (a work in progress). | |||
[URI] Berners-Lee, T., Fielding, R., and L. Masinter Uniform | [Roadmap] Zeilenga, K., "LDAP: Technical Specification Road Map", | |||
Resource Identifiers (URI): Generic Syntax", RFC 2396, | draft-ietf-ldapbis-roadmap-xx.txt (a work in progress). | |||
August 1998. | ||||
[AuthMeth] Harrison, R., "LDAP: Authentication Methods and Connection | Sermersheim Internet-Draft - Expires Jun 2004 Page 36 | |||
Level Security Mechanisms ", draft-ietf-ldapbis-authmeth- | Lightweight Directory Access Protocol Version 3 | |||
xx.txt, (a work in progress). | ||||
[SASL] Meyers, J., "Simple Authentication and Security Layer", | [SASL] Melnikov, A., "Simple Authentication and Security Layer", | |||
RFC 2222, October 1997. | draft-ietf-sasl-rfc2222bis-xx.txt (a work in progress). | |||
[SASLPrep] Zeilenga, K., "Stringprep profile for user names and | [SASLPrep] Zeilenga, K., "Stringprep profile for user names and | |||
passwords", draft-ietf-sasl-saslprep-xx.txt, (a work in | passwords", draft-ietf-sasl-saslprep-xx.txt, (a work in | |||
progress). | progress). | |||
[StringPrep] Hoffman P. and M. Blanchet, "Preparation of | ||||
Internationalized Strings ('stringprep')", draft-hoffman- | ||||
rfc3454bis-xx.txt, a work in progress. | ||||
[Syntaxes] Legg, S., and K. Dally, "LDAP: Syntaxes and Matching | ||||
Rules", draft-ietf-ldapbis-syntaxes-xx.txt, (a work in | ||||
progress). | ||||
[TCP] Postel, J., "Transmission Control Protocol", STD7 and RFC | ||||
793, September 1981 | ||||
[TLS] Dierks, T. and C. Allen. "The TLS Protocol Version 1.1", | ||||
draft-ietf-tls-rfc2246-bis-xx.txt, a work in progress. | ||||
[Unicode] The Unicode Consortium, "The Unicode Standard, Version | [Unicode] The Unicode Consortium, "The Unicode Standard, Version | |||
3.2.0" is defined by "The Unicode Standard, Version 3.0" | 3.2.0" is defined by "The Unicode Standard, Version 3.0" | |||
(Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5), | (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5), | |||
as amended by the "Unicode Standard Annex #27: Unicode | as amended by the "Unicode Standard Annex #27: Unicode | |||
3.1" (http://www.unicode.org/reports/tr27/) and by the | 3.1" (http://www.unicode.org/reports/tr27/) and by the | |||
"Unicode Standard Annex #28: Unicode 3.2" | "Unicode Standard Annex #28: Unicode 3.2" | |||
(http://www.unicode.org/reports/tr28/). | (http://www.unicode.org/reports/tr28/). | |||
[TCP] Postel, J., "Transmission Control Protocol", STD7 and RFC | [URI] Berners-Lee, T., Fielding, R., and L. Masinter Uniform | |||
793, September 1981 | Resource Identifiers (URI): Generic Syntax", RFC 2396, | |||
August 1998. | ||||
[IP] Postel, J., "Internet Protocol", STD5 and RFC 791, | [UTF-8] Yergeau, F., "UTF-8, a transformation format of Unicode | |||
September 1981 | and ISO 10646", STD63 and RFC3629. | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 36 | [X.500] ITU-T Rec. X.500, "The Directory: Overview of Concepts, | |||
Lightweight Directory Access Protocol Version 3 | Models and Service", 1993. | |||
10. Informative References | [X.501] ITU-T Rec. X.501, "The Directory: Models", 1993. | |||
[X.511] ITU-T Rec. X.511, "The Directory: Abstract Service | ||||
Definition", 1993. | ||||
9. Informative References | ||||
[CERT] the CERT(R) Center, (http://www.cert.org) | [CERT] the CERT(R) Center, (http://www.cert.org) | |||
11. IANA Considerations | 10. IANA Considerations | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 37 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
It is requested that the Internet Assigned Numbers Authority (IANA) | It is requested that the Internet Assigned Numbers Authority (IANA) | |||
update the occurrence of "RFC XXXX" in Appendix B with this RFC | update the occurrence of "RFC XXXX" in Appendix B with this RFC | |||
number at publication. | number at publication. | |||
12. Editor's Address | 11. Editor's Address | |||
Jim Sermersheim | Jim Sermersheim | |||
Novell, Inc. | Novell, Inc. | |||
1800 South Novell Place | 1800 South Novell Place | |||
Provo, Utah 84606, USA | Provo, Utah 84606, USA | |||
jimse@novell.com | jimse@novell.com | |||
+1 801 861-3088 | +1 801 861-3088 | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 37 | Sermersheim Internet-Draft - Expires Jun 2004 Page 38 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Appendix A - LDAP Result Codes | Appendix A - LDAP Result Codes | |||
This normative appendix details additional considerations regarding | This normative appendix details additional considerations regarding | |||
LDAP result codes and provides a brief, general description of each | LDAP result codes and provides a brief, general description of each | |||
LDAP result code enumerated in Section 4.1.10. | LDAP result code enumerated in Section 4.1.10. | |||
Additional result codes MAY be defined for use with extensions | Additional result codes MAY be defined for use with extensions | |||
[LDAPIANA]. Client implementations SHALL treat any result code which | [LDAPIANA]. Client implementations SHALL treat any result code which | |||
skipping to change at line 2054 | skipping to change at line 2113 | |||
saslBindInProgress (14). | saslBindInProgress (14). | |||
The success, compareTrue, and compare result codes indicate | The success, compareTrue, and compare result codes indicate | |||
successful completion (and, hence, are referred to as "successful" | successful completion (and, hence, are referred to as "successful" | |||
result codes). | result codes). | |||
The referral and saslBindInProgress result codes indicate the client | The referral and saslBindInProgress result codes indicate the client | |||
is required to take additional action to complete the operation | is required to take additional action to complete the operation | |||
A.2 Result Codes | A.2 Result Codes | |||
Existing LDAP result codes are described as follows: | Existing LDAP result codes are described as follows: | |||
success (0) | success (0) | |||
Indicates the successful completion of an operation. | Indicates the successful completion of an operation. Note: | |||
this code is not used with the compare operation. See | ||||
compareTrue (5) and compareFalse (6). | ||||
operationsError (1) | operationsError (1) | |||
Indicates that the operation is not properly sequenced with | Indicates that the operation is not properly sequenced with | |||
relation to other operations (of same or different type). | relation to other operations (of same or different type). | |||
For example, this code is returned if the client attempts to | For example, this code is returned if the client attempts to | |||
Start TLS [RFC2246] while there are other operations | Start TLS [RFC2246] while there are other operations | |||
outstanding or if TLS was already established. | outstanding or if TLS was already established. | |||
protocolError (2) | protocolError (2) | |||
Indicates the server received data which has incorrect | Indicates the server received data which has incorrect | |||
structure. | structure. | |||
For bind operation only, the code may be returned to indicate | For bind operation only, this code is also used to indicate | |||
the server does not support the requested protocol version. | that the server does not support the requested protocol | |||
version. | ||||
timeLimitExceeded (3) | timeLimitExceeded (3) | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 39 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Indicates that the time limit specified by the client was | Indicates that the time limit specified by the client was | |||
exceeded before the operation could be completed. | exceeded before the operation could be completed. | |||
sizeLimitExceeded (4) | sizeLimitExceeded (4) | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 38 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Indicates that the size limit specified by the client was | Indicates that the size limit specified by the client was | |||
exceeded before the operation could be completed. | exceeded before the operation could be completed. | |||
compareFalse (5) | compareFalse (5) | |||
Indicates that the compare operation has successfully | Indicates that the compare operation has successfully | |||
completed and the assertion has evaluated to FALSE. | completed and the assertion has evaluated to FALSE. | |||
compareTrue (6) | compareTrue (6) | |||
Indicates that the compare operation has successfully | Indicates that the compare operation has successfully | |||
completed and the assertion has evaluated to TRUE. | completed and the assertion has evaluated to TRUE. | |||
skipping to change at line 2107 | skipping to change at line 2170 | |||
strongAuthRequired (8) | strongAuthRequired (8) | |||
Indicates that the server has detected that an established | Indicates that the server has detected that an established | |||
security association between the client and server has | security association between the client and server has | |||
unexpectedly failed or been compromised, or that the server | unexpectedly failed or been compromised, or that the server | |||
now requires the client to authenticate using a strong(er) | now requires the client to authenticate using a strong(er) | |||
mechanism. | mechanism. | |||
referral (10) | referral (10) | |||
Indicates that a referral needs to be chased to complete the | Indicates that a referral needs to be chased to complete the | |||
operation (see section 4.1.11). | operation (see Section 4.1.11). | |||
adminLimitExceeded (11) | adminLimitExceeded (11) | |||
Indicates that an administrative limit has been exceeded. | Indicates that an administrative limit has been exceeded. | |||
unavailableCriticalExtension (12) | unavailableCriticalExtension (12) | |||
Indicates that server cannot perform a critical extension | Indicates that the server is unable or unwilling to perform a | |||
(see section 4.1.12). | critical extension (see Section 4.1.12). | |||
confidentialityRequired (13) | confidentialityRequired (13) | |||
Indicates that data confidentiality protections are required. | Indicates that data confidentiality protections are required. | |||
saslBindInProgress (14) | saslBindInProgress (14) | |||
Indicates the server requires the client to send a new bind | Indicates the server requires the client to send a new bind | |||
request, with the same SASL mechanism, to continue the | request, with the same SASL mechanism, to continue the | |||
authentication process (see section 4.2). | authentication process (see Section 4.2). | |||
noSuchAttribute (16) | noSuchAttribute (16) | |||
Indicates that the named entry does not contain the specified | Indicates that the named entry does not contain the specified | |||
attribute or attribute value. | attribute or attribute value. | |||
undefinedAttributeType (17) | undefinedAttributeType (17) | |||
Indicates that a request field contains an undefined | Indicates that a request field contains an unrecognized | |||
attribute type. | attribute description. | |||
inappropriateMatching (18) | inappropriateMatching (18) | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 40 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Indicates that an attempt was made, e.g. in a filter, to use | Indicates that an attempt was made, e.g. in a filter, to use | |||
a matching rule not defined for the attribute type concerned. | a matching rule not defined for the attribute type concerned. | |||
constraintViolation (19) | constraintViolation (19) | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 39 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Indicates that the client supplied an attribute value which | Indicates that the client supplied an attribute value which | |||
does not conform to the constraints placed upon it by the | does not conform to the constraints placed upon it by the | |||
data model. | data model. | |||
For example, this code is returned when multiple values are | For example, this code is returned when multiple values are | |||
supplied to an attribute which has a SINGLE-VALUE constraint. | supplied to an attribute which has a SINGLE-VALUE constraint. | |||
attributeOrValueExists (20) | attributeOrValueExists (20) | |||
Indicates that the client supplied an attribute or value to | Indicates that the client supplied an attribute or value to | |||
be added to an entry, but the attribute or value already | be added to an entry, but the attribute or value already | |||
exists. | exists. | |||
invalidAttributeSyntax (21) | invalidAttributeSyntax (21) | |||
Indicates that a purported attribute value does not conform | Indicates that a purported attribute value does not conform | |||
to the syntax of the attribute. | to the syntax of the attribute. | |||
noSuchObject (32) | noSuchObject (32) | |||
Indicates that the object does not exist in the DIT. | Indicates that the object does not exist in the DIT. | |||
aliasProblem (33) | aliasProblem (33) | |||
Indicates that an alias problem has occurred. Typically an | Indicates that an alias problem has occurred. For example, | |||
alias has been dereferenced which names no object. | the code may used to indicate an alias has been dereferenced | |||
which names no object. | ||||
invalidDNSyntax (34) | invalidDNSyntax (34) | |||
Indicates that an LDAPDN or RelativeLDAPDN field (e.g. search | Indicates that an LDAPDN or RelativeLDAPDN field (e.g. search | |||
base, target entry, ModifyDN newrdn, etc.) of a request does | base, target entry, ModifyDN newrdn, etc.) of a request does | |||
not conform to the required syntax or contains attribute | not conform to the required syntax or contains attribute | |||
values which do not conform to the syntax of the attribute's | values which do not conform to the syntax of the attribute's | |||
type. | type. | |||
aliasDereferencingProblem (36) | aliasDereferencingProblem (36) | |||
Indicates that a problem occurred while dereferencing an | Indicates that a problem occurred while dereferencing an | |||
alias. Typically an alias was encountered in a situation | alias. Typically an alias was encountered in a situation | |||
where it was not allowed or where access was denied. | where it was not allowed or where access was denied. | |||
inappropriateAuthentication (48) | inappropriateAuthentication (48) | |||
Indicates the server requires the client which had attempted | Indicates the server requires the client which had attempted | |||
to bind anonymously or without supplying credentials to | to bind anonymously or without supplying credentials to | |||
provide some form of credentials. | provide some form of credentials. | |||
invalidCredentials (49) | invalidCredentials (49) | |||
Indicates the supplied password or SASL credentials are | Indicates that the provided credentials (e.g. the user's name | |||
invalid. | and password) are invalid. | |||
insufficientAccessRights (50) | insufficientAccessRights (50) | |||
Indicates that the client does not have sufficient access | Indicates that the client does not have sufficient access | |||
rights to perform the operation. | rights to perform the operation. | |||
busy (51) | busy (51) | |||
Indicates that the server is busy. | ||||
Sermersheim Internet-Draft - Expires Jun 2004 Page 41 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Indicates that the server is too busy to service the | ||||
operation. | ||||
unavailable (52) | unavailable (52) | |||
Indicates that the server is shutting down or a subsystem | Indicates that the server is shutting down or a subsystem | |||
necessary to complete the operation is offline. | necessary to complete the operation is offline. | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 40 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
unwillingToPerform (53) | unwillingToPerform (53) | |||
Indicates that the server is unwilling to perform the | Indicates that the server is unwilling to perform the | |||
operation. | operation. | |||
loopDetect (54) | loopDetect (54) | |||
Indicates that the server has detected an internal loop. | Indicates that the server has detected an internal loop. | |||
namingViolation (64) | namingViolation (64) | |||
Indicates that the entry name violates naming restrictions. | Indicates that the entry's name violates naming restrictions. | |||
objectClassViolation (65) | objectClassViolation (65) | |||
Indicates that the entry violates object class restrictions. | Indicates that the entry violates object class restrictions. | |||
notAllowedOnNonLeaf (66) | notAllowedOnNonLeaf (66) | |||
Indicates that the operation is inappropriately acting upon a | Indicates that the operation is inappropriately acting upon a | |||
non-leaf entry. | non-leaf entry. | |||
notAllowedOnRDN (67) | notAllowedOnRDN (67) | |||
Indicates that the operation is inappropriately attempting to | Indicates that the operation is inappropriately attempting to | |||
remove a value which forms the entry's relative distinguished | remove a value which forms the entry's relative distinguished | |||
name. | name. | |||
entryAlreadyExists (68) | entryAlreadyExists (68) | |||
Indicates that the request cannot be fulfilled (added, moved, | Indicates that the request cannot be fulfilled (added, moved, | |||
or renamed) as the target entry already exists. | or renamed) as the target entry already exists. | |||
objectClassModsProhibited (69) | objectClassModsProhibited (69) | |||
Indicates that the attempt to modify the object class(es) of | Indicates that an attempt to modify the object class(es) of | |||
an entry's objectClass attribute is prohibited. | an entry's objectClass attribute is prohibited. | |||
For example, this code is returned when a client attempts to | For example, this code is returned when a client attempts to | |||
modify the structural object class of an entry. | modify the structural object class of an entry. | |||
affectsMultipleDSAs (71) | affectsMultipleDSAs (71) | |||
Indicates that the operation cannot be completed as it | Indicates that the operation cannot be completed as it | |||
affects multiple servers (DSAs). | affects multiple servers (DSAs). | |||
other (80) | other (80) | |||
Indicates the server has encountered an internal error. | Indicates the server has encountered an internal error. | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 41 | Sermersheim Internet-Draft - Expires Jun 2004 Page 42 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Appendix B - Complete ASN.1 Definition | Appendix B - Complete ASN.1 Definition | |||
This appendix is normative. | This appendix is normative. | |||
Lightweight-Directory-Access-Protocol-V3 | Lightweight-Directory-Access-Protocol-V3 | |||
-- Copyright (C) The Internet Society (2003). This version of | -- Copyright (C) The Internet Society (2003). This version of | |||
-- this ASN.1 module is part of RFC XXXX; see the RFC itself | -- this ASN.1 module is part of RFC XXXX; see the RFC itself | |||
-- for full legal notices. | -- for full legal notices. | |||
skipping to change at line 2297 | skipping to change at line 2363 | |||
-- [ISO10646] characters | -- [ISO10646] characters | |||
LDAPOID ::= OCTET STRING -- Constrained to <numericoid> [Models] | LDAPOID ::= OCTET STRING -- Constrained to <numericoid> [Models] | |||
LDAPDN ::= LDAPString | LDAPDN ::= LDAPString | |||
RelativeLDAPDN ::= LDAPString | RelativeLDAPDN ::= LDAPString | |||
AttributeDescription ::= LDAPString | AttributeDescription ::= LDAPString | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 42 | Sermersheim Internet-Draft - Expires Jun 2004 Page 43 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
-- Constrained to <attributedescription> | -- Constrained to <attributedescription> | |||
-- [Models] | -- [Models] | |||
AttributeValue ::= OCTET STRING | AttributeValue ::= OCTET STRING | |||
AttributeValueAssertion ::= SEQUENCE { | AttributeValueAssertion ::= SEQUENCE { | |||
attributeDesc AttributeDescription, | attributeDesc AttributeDescription, | |||
assertionValue AssertionValue } | assertionValue AssertionValue } | |||
AssertionValue ::= OCTET STRING | AssertionValue ::= OCTET STRING | |||
Attribute ::= SEQUENCE { | PartialAttribute ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
vals SET SIZE (1..MAX) OF value AttributeValue } | vals SET OF value AttributeValue } | |||
Attribute ::= PartialAttribute(WITH COMPONENTS { | ||||
..., | ||||
vals (SIZE(1..MAX))}) | ||||
MatchingRuleId ::= LDAPString | MatchingRuleId ::= LDAPString | |||
LDAPResult ::= SEQUENCE { | LDAPResult ::= SEQUENCE { | |||
resultCode ENUMERATED { | resultCode ENUMERATED { | |||
success (0), | success (0), | |||
operationsError (1), | operationsError (1), | |||
protocolError (2), | protocolError (2), | |||
timeLimitExceeded (3), | timeLimitExceeded (3), | |||
sizeLimitExceeded (4), | sizeLimitExceeded (4), | |||
skipping to change at line 2350 | skipping to change at line 2420 | |||
-- 22-31 unused -- | -- 22-31 unused -- | |||
noSuchObject (32), | noSuchObject (32), | |||
aliasProblem (33), | aliasProblem (33), | |||
invalidDNSyntax (34), | invalidDNSyntax (34), | |||
-- 35 reserved for undefined isLeaf -- | -- 35 reserved for undefined isLeaf -- | |||
aliasDereferencingProblem (36), | aliasDereferencingProblem (36), | |||
-- 37-47 unused -- | -- 37-47 unused -- | |||
inappropriateAuthentication (48), | inappropriateAuthentication (48), | |||
invalidCredentials (49), | invalidCredentials (49), | |||
insufficientAccessRights (50), | insufficientAccessRights (50), | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 44 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
busy (51), | busy (51), | |||
unavailable (52), | unavailable (52), | |||
unwillingToPerform (53), | unwillingToPerform (53), | |||
loopDetect (54), | loopDetect (54), | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 43 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
-- 55-63 unused -- | -- 55-63 unused -- | |||
namingViolation (64), | namingViolation (64), | |||
objectClassViolation (65), | objectClassViolation (65), | |||
notAllowedOnNonLeaf (66), | notAllowedOnNonLeaf (66), | |||
notAllowedOnRDN (67), | notAllowedOnRDN (67), | |||
entryAlreadyExists (68), | entryAlreadyExists (68), | |||
objectClassModsProhibited (69), | objectClassModsProhibited (69), | |||
-- 70 reserved for CLDAP -- | -- 70 reserved for CLDAP -- | |||
affectsMultipleDSAs (71), | affectsMultipleDSAs (71), | |||
-- 72-79 unused -- | -- 72-79 unused -- | |||
skipping to change at line 2408 | skipping to change at line 2478 | |||
SaslCredentials ::= SEQUENCE { | SaslCredentials ::= SEQUENCE { | |||
mechanism LDAPString, | mechanism LDAPString, | |||
credentials OCTET STRING OPTIONAL } | credentials OCTET STRING OPTIONAL } | |||
BindResponse ::= [APPLICATION 1] SEQUENCE { | BindResponse ::= [APPLICATION 1] SEQUENCE { | |||
COMPONENTS OF LDAPResult, | COMPONENTS OF LDAPResult, | |||
serverSaslCreds [7] OCTET STRING OPTIONAL } | serverSaslCreds [7] OCTET STRING OPTIONAL } | |||
UnbindRequest ::= [APPLICATION 2] NULL | UnbindRequest ::= [APPLICATION 2] NULL | |||
Sermersheim Internet-Draft - Expires Jun 2004 Page 45 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
SearchRequest ::= [APPLICATION 3] SEQUENCE { | SearchRequest ::= [APPLICATION 3] SEQUENCE { | |||
baseObject LDAPDN, | baseObject LDAPDN, | |||
scope ENUMERATED { | scope ENUMERATED { | |||
baseObject (0), | baseObject (0), | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 44 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
singleLevel (1), | singleLevel (1), | |||
wholeSubtree (2) }, | wholeSubtree (2) }, | |||
derefAliases ENUMERATED { | derefAliases ENUMERATED { | |||
neverDerefAliases (0), | neverDerefAliases (0), | |||
derefInSearching (1), | derefInSearching (1), | |||
derefFindingBaseObj (2), | derefFindingBaseObj (2), | |||
derefAlways (3) }, | derefAlways (3) }, | |||
sizeLimit INTEGER (0 .. maxInt), | sizeLimit INTEGER (0 .. maxInt), | |||
timeLimit INTEGER (0 .. maxInt), | timeLimit INTEGER (0 .. maxInt), | |||
typesOnly BOOLEAN, | typesOnly BOOLEAN, | |||
skipping to change at line 2463 | skipping to change at line 2532 | |||
matchingRule [1] MatchingRuleId OPTIONAL, | matchingRule [1] MatchingRuleId OPTIONAL, | |||
type [2] AttributeDescription OPTIONAL, | type [2] AttributeDescription OPTIONAL, | |||
matchValue [3] AssertionValue, | matchValue [3] AssertionValue, | |||
dnAttributes [4] BOOLEAN DEFAULT FALSE } | dnAttributes [4] BOOLEAN DEFAULT FALSE } | |||
SearchResultEntry ::= [APPLICATION 4] SEQUENCE { | SearchResultEntry ::= [APPLICATION 4] SEQUENCE { | |||
objectName LDAPDN, | objectName LDAPDN, | |||
attributes PartialAttributeList } | attributes PartialAttributeList } | |||
PartialAttributeList ::= SEQUENCE OF | PartialAttributeList ::= SEQUENCE OF | |||
attribute PartialAttribute | partialAttribute PartialAttribute | |||
PartialAttribute ::= SEQUENCE { | ||||
type AttributeDescription, | ||||
vals SET OF value AttributeValue } | ||||
SearchResultReference ::= [APPLICATION 19] SEQUENCE | SearchResultReference ::= [APPLICATION 19] SEQUENCE | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 45 | Sermersheim Internet-Draft - Expires Jun 2004 Page 46 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
SIZE (1..MAX) OF uri URI | SIZE (1..MAX) OF uri URI | |||
SearchResultDone ::= [APPLICATION 5] LDAPResult | SearchResultDone ::= [APPLICATION 5] LDAPResult | |||
ModifyRequest ::= [APPLICATION 6] SEQUENCE { | ModifyRequest ::= [APPLICATION 6] SEQUENCE { | |||
object LDAPDN, | object LDAPDN, | |||
changes SEQUENCE OF change SEQUENCE { | changes SEQUENCE OF change SEQUENCE { | |||
operation ENUMERATED { | operation ENUMERATED { | |||
skipping to change at line 2528 | skipping to change at line 2593 | |||
requestName [0] LDAPOID, | requestName [0] LDAPOID, | |||
requestValue [1] OCTET STRING OPTIONAL } | requestValue [1] OCTET STRING OPTIONAL } | |||
ExtendedResponse ::= [APPLICATION 24] SEQUENCE { | ExtendedResponse ::= [APPLICATION 24] SEQUENCE { | |||
COMPONENTS OF LDAPResult, | COMPONENTS OF LDAPResult, | |||
responseName [10] LDAPOID OPTIONAL, | responseName [10] LDAPOID OPTIONAL, | |||
responseValue [11] OCTET STRING OPTIONAL } | responseValue [11] OCTET STRING OPTIONAL } | |||
END | END | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 46 | Sermersheim Internet-Draft - Expires Jun 2004 Page 47 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Appendix C - Change History | Appendix C - Changes | |||
<Note to RFC editor: This section is to be removed prior to RFC | ||||
publication> | ||||
C.1 Changes made to RFC 2251: | This appendix is non-normative. | |||
C.1.1 Editorial | This appendix summarizes substantive changes made to RFC 2251 and RFC | |||
2830. | ||||
- Bibliography References: Changed all bibliography references to | C.1 Changes made to made to RFC 2251: | |||
use a long name form for readability. | ||||
- Changed occurrences of "unsupportedCriticalExtension" | ||||
"unavailableCriticalExtension" | ||||
- Fixed a small number of misspellings (mostly dropped letters). | ||||
C.1.2 Section 1 | This section summarizes the substantive changes made to Sections 1, | |||
2, 3.1, and 4 through the remainder of RFC 2251. Readers should | ||||
consult [Models] and [AuthMeth] for summaries of changes to other | ||||
sections. | ||||
- Removed IESG note. | C.1.1 Section 1 | |||
C.1.3 Section 9 | - Removed IESG note. Post publication of RFC 2251, mandatory LDAP | |||
authentication mechanisms have been standardized which are | ||||
sufficient to remove this note. See [AuthMeth] for authentication | ||||
mechanisms. | ||||
- Added references to RFCs 1823, 2234, 2829 and 2830. | C.1.2 Section 3.1 and others | |||
C.2 Changes made to draft-ietf-ldapbis-protocol-00.txt: | - Removed notes giving history between LDAP v1, v2 and v3. Instead, | |||
added sufficient language so that this document can stand on its | ||||
own. | ||||
C.2.1 Section 4.1.6 | C.1.3 Section 4 | |||
- In the first paragraph, clarified what the contents of an | - Clarified where the extensibility features of ASN.1 apply to the | |||
AttributeValue are. There was confusion regarding whether or not | protocol. This change also affected various ASN.1 types. | |||
an AttributeValue that is BER encoded (due to the "binary" option) | - Removed the requirement that servers which implement version 3 or | |||
is to be wrapped in an extra OCTET STRING. | later MUST provide the supportedLDAPVersion attribute. This | |||
- To the first paragraph, added wording that doesn't restrict other | statement provided no interoperability advantages. | |||
transfer encoding specifiers from being used. The previous wording | ||||
only allowed for the string encoding and the ;binary encoding. | ||||
- To the first paragraph, added a statement restricting multiple | ||||
options that specify transfer encoding from being present. This | ||||
was never specified in the previous version and was seen as a | ||||
potential interoperability problem. | ||||
- Added a third paragraph stating that the ;binary option is | ||||
currently the only option defined that specifies the transfer | ||||
encoding. This is for completeness. | ||||
C.2.2 Section 4.1.7 | C.1.4 Section 4.1.1 | |||
- Generalized the second paragraph to read "If an option specifying | - There was a mandatory requirement for the server to return a | |||
the transfer encoding is present in attributeDesc, the | Notice of Disconnection and drop the connection when a PDU is | |||
AssertionValue is encoded as specified by the option...". | malformed in a certain way. This has been clarified such that the | |||
Previously, only the ;binary option was mentioned. | server SHOULD return the Notice of Disconnection, and MUST drop | |||
the connection. | ||||
C.2.3 Sections 4.2, 4.9, 4.10 | C.1.5 Section 4.1.1.1 | |||
- Added alias dereferencing specifications. In the case of modDN, | - Clarified that the messageID of requests MUST be non-zero. | |||
followed precedent set on other update operations (... alias is | ||||
not dereferenced...) In the case of bind and compare stated that | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 47 | Sermersheim Internet-Draft - Expires Jun 2004 Page 48 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
servers SHOULD NOT dereference aliases. Specifications were added | - Clarified when it is and isn't appropriate to return an already | |||
because they were missing from the previous version and caused | used message id. RFC 2251 accidentally imposed synchronous server | |||
interoperability problems. Concessions were made for bind and | behavior in its wording of this. | |||
compare (neither should have ever allowed alias dereferencing) by | ||||
using SHOULD NOT language, due to the behavior of some existing | ||||
implementations. | ||||
C.2.4 Sections 4.5 and Appendix A | ||||
- Changed SubstringFilter.substrings.initial, any, and all from | ||||
LDAPString to AssertionValue. This was causing an incompatibility | ||||
with X.500 and confusion among other TS RFCs. | ||||
C.3 Changes made to draft-ietf-ldapbis-protocol-01.txt: | C.1.6 Section 4.1.2 | |||
C.3.1 Section 3.4 | - Stated that LDAPOID is constrained to <numericoid> from [Models]. | |||
- Reworded text surrounding subschemaSubentry to reflect that it is | C.1.7 Section 4.1.5.1 | |||
a single-valued attribute that holds the schema for the root DSE. | ||||
Also noted that if the server masters entries that use differing | ||||
schema, each entry's subschemaSubentry attribute must be | ||||
interrogated. This may change as further fine-tuning is done to | ||||
the data model. | ||||
C.3.2 Section 4.1.12 | - Removed the Binary Option from the specification. There are | |||
numerous interoperability problems associated with this method of | ||||
alternate attribute type encoding. Work to specify a suitable | ||||
replacement is ongoing. | ||||
- Specified that the criticality field is only used for requests and | C.1.8 Section 4.1.6 | |||
not for unbind or abandon. Noted that it is ignored for all other | ||||
operations. | ||||
C.3.3 Section 4.2 | - Removed references to the "binary" encoding as it has been removed | |||
from the specification. | ||||
- Noted that Server behavior is undefined when the name is a null | C.1.9 Section 4.1.7 | |||
value, simple authentication is used, and a password is specified. | ||||
C.3.4 Section 4.2.(various) | - Removed references to the "binary" encoding as it has been removed | |||
from the specification. | ||||
- Changed "unauthenticated" to "anonymous" and "DN" and "LDAPDN" to | C.1.10 Section 4.1.8 | |||
"name" | ||||
C.3.5 Section 4.2.2 | - Combined the definitions of PartialAttribute and Attribute here, | |||
and defined Attribute in terms of PartialAttribute. | ||||
- Changed "there is no authentication or encryption being performed | C.1.11 Section 4.1.10 | |||
by a lower layer" to "the underlying transport service cannot | ||||
guarantee confidentiality" | ||||
C.3.6 Section 4.5.2 | - Renamed "errorMessage" to "diagnosticMessage" as it is allowed to | |||
be sent for non-error results. | ||||
- Moved some language into Appendix A, and refer the reader there. | ||||
- Allowed matchedDN to be present for other result codes than those | ||||
listed in RFC 2251. | ||||
- Removed all mention of ExtendedResponse due to lack of | C.1.12 Section 4.1.11 | |||
implementation. | ||||
C.4 Changes made to draft-ietf-ldapbis-protocol-02.txt: | - Defined referrals in terms of URIs rather than URLs. | |||
- Removed the requirement that all referral URIs MUST be equally | ||||
capable of progressing the operation. The statement was ambiguous | ||||
and provided no instructions on how to carry it out. | ||||
- Added the requirement that clients MUST NOT loop between servers. | ||||
- Clarified the instructions for using LDAPURLs in referrals, and in | ||||
doing so added a recommendation that the scope part be present. | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 48 | Sermersheim Internet-Draft - Expires Jun 2004 Page 49 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
C.4.1 Section 4 | C.1.13 Section 4.1.12 | |||
- Removed "typically" from "and is typically transferred" in the | ||||
first paragraph. We know of no (and can conceive of no) case where | ||||
this isn't true. | ||||
- Added "Section 5.1 specifies how the LDAP protocol is encoded." To | ||||
the first paragraph. Added this cross reference for readability. | ||||
- Changed "version 3 " to "version 3 or later" in the second | ||||
paragraph. This was added to clarify the original intent. | ||||
- Changed "protocol version" to "protocol versions" in the third | ||||
paragraph. This attribute is multi-valued with the intent of | ||||
holding all supported versions, not just one. | ||||
C.4.2 Section 4.1.8 | ||||
- Changed "when transferred in protocol" to "when transferred from | ||||
the server to the client" in the first paragraph. This is to | ||||
clarify that this behavior only happens when attributes are being | ||||
sent from the server. | ||||
C.4.3 Section 4.1.10 | ||||
- Changed "servers will return responses containing fields of type | ||||
LDAPResult" to "servers will return responses of LDAPResult or | ||||
responses containing the components of LDAPResponse". This | ||||
statement was incorrect and at odds with the ASN.1. The fix here | ||||
reflects the original intent. | ||||
- Dropped '--new' from result codes ASN.1. This simplification in | ||||
comments just reduces unneeded verbiage. | ||||
C.4.4 Section 4.1.11 | ||||
- Changed "It contains a reference to another server (or set of | ||||
servers)" to "It contains one or more references to one or more | ||||
servers or services" in the first paragraph. This reflects the | ||||
original intent and clarifies that the URL may point to non-LDAP | ||||
services. | ||||
C.4.5 Section 4.1.12 | ||||
- Specified how control values defined in terms of ASN.1 are to be | ||||
encoded. | ||||
- Added language regarding combinations of controls on a message. | ||||
- Changed "The server MUST be prepared" to "Implementations MUST be | - Changed "The server MUST be prepared" to "Implementations MUST be | |||
prepared" in the eighth paragraph to reflect that both client and | prepared" in the eighth paragraph to reflect that both client and | |||
server implementations must be able to handle this (as both parse | server implementations must be able to handle this (as both parse | |||
controls). | controls). | |||
C.4.6 Section 4.4 | C.1.14 Section 4.2 | |||
- Changed "One unsolicited notification is defined" to "One | ||||
unsolicited notification (Notice of Disconnection) is defined" in | ||||
the third paragraph. For clarity and readability. | ||||
C.4.7 Section 4.5.1 | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 49 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- Changed "checking for the existence of the objectClass attribute" | ||||
to "checking for the presence of the objectClass attribute" in the | ||||
last paragraph. This was done as a measure of consistency (we use | ||||
the terms present and presence rather than exists and existence in | ||||
search filters). | ||||
C.4.8 Section 4.5.3 | ||||
- Changed "outstanding search operations to different servers," to | ||||
"outstanding search operations" in the fifth paragraph as they may | ||||
be to the same server. This is a point of clarification. | ||||
C.4.9 Section 4.6 | ||||
- Changed "clients MUST NOT attempt to delete" to "clients MUST NOT | ||||
attempt to add or delete" in the second to last paragraph. | ||||
- Change "using the "delete" form" to "using the "add" or "delete" | ||||
form" in the second to last paragraph. | ||||
C.4.10 Section 4.7 | ||||
- Changed "Clients MUST NOT supply the createTimestamp or | ||||
creatorsName attributes, since these will be generated | ||||
automatically by the server." to "Clients MUST NOT supply NO-USER- | ||||
MODIFICATION attributes such as createTimestamp or creatorsName | ||||
attributes, since these are provided by the server." in the | ||||
definition of the attributes field. This tightens the language to | ||||
reflect the original intent and to not leave a hole in which one | ||||
could interpret the two attributes mentioned as the only non- | ||||
writable attributes. | ||||
C.4.11 Section 4.11 | ||||
- Changed "has been" to "will be" in the fourth paragraph. This | ||||
clarifies that the server will (not has) abandon the operation. | ||||
C.5 Changes made to draft-ietf-ldapbis-protocol-03.txt: | ||||
C.5.1 Section 3.2.1 | ||||
- Changed "An attribute is a type with one or more associated | ||||
values. The attribute type is identified by a short descriptive | ||||
name and an OID (object identifier). The attribute type governs | ||||
whether there can be more than one value of an attribute of that | ||||
type in an entry, the syntax to which the values must conform, the | ||||
kinds of matching which can be performed on values of that | ||||
attribute, and other functions." to " An attribute is a | ||||
description (a type and zero or more options) with one or more | ||||
associated values. The attribute type governs whether the | ||||
attribute can have multiple values, the syntax and matching rules | ||||
used to construct and compare values of that attribute, and other | ||||
functions. Options indicate modes of transfer and other | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 50 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
functions.". This points out that an attribute consists of both | ||||
the type and options. | ||||
C.5.2 Section 4 | ||||
- Changed "Section 5.1 specifies the encoding rules for the LDAP | ||||
protocol" to "Section 5.1 specifies how the protocol is encoded | ||||
and transferred." | ||||
C.5.3 Section 4.1.2 | ||||
- Added ABNF for the textual representation of LDAPOID. Previously, | ||||
there was no formal BNF for this construct. | ||||
C.5.4 Section 4.1.4 | ||||
- Changed "This identifier may be written as decimal digits with | ||||
components separated by periods, e.g. "2.5.4.10"" to "may be | ||||
written as defined by ldapOID in section 4.1.2" in the second | ||||
paragraph. This was done because we now have a formal BNF | ||||
definition of an oid. | ||||
C.5.5 Section 4.1.5 | ||||
- Changed the BNF for AttributeDescription to ABNF. This was done | ||||
for readability and consistency (no functional changes involved). | ||||
- Changed "Options present in an AttributeDescription are never | ||||
mutually exclusive." to "Options MAY be mutually exclusive. An | ||||
AttributeDescription with mutually exclusive options is treated as | ||||
an undefined attribute type." for clarity. It is generally | ||||
understood that this is the original intent, but the wording could | ||||
be easily misinterpreted. | ||||
- Changed "Any option could be associated with any AttributeType, | ||||
although not all combinations may be supported by a server." to | ||||
"Though any option or set of options could be associated with any | ||||
AttributeType, the server support for certain combinations may be | ||||
restricted by attribute type, syntaxes, or other factors.". This | ||||
is to clarify the meaning of 'combination' (it applies both to | ||||
combination of attribute type and options, and combination of | ||||
options). It also gives examples of *why* they might be | ||||
unsupported. | ||||
C.5.6 Section 4.1.11 | ||||
- Changed the wording regarding 'equally capable' referrals to "If | ||||
multiple URLs are present, the client assumes that any URL may be | ||||
used to progress the operation.". The previous language implied | ||||
that the server MUST enforce rules that it was practically | ||||
incapable of. The new language highlights the original intent-- | ||||
that is, that any of the referrals may be used to progress the | ||||
operation, there is no inherent 'weighting' mechanism. | ||||
C.5.7 Section 4.5.1 and Appendix A | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 51 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- Added the comment "-- initial and final can occur at most once", | ||||
to clarify this restriction. | ||||
C.5.8 Section 5.1 | ||||
- Changed heading from "Mapping Onto BER-based Transport Services" | ||||
to "Protocol Encoding". | ||||
C.5.9 Section 5.2.1 | ||||
- Changed "The LDAPMessage PDUs" to "The encoded LDAPMessage PDUs" | ||||
to point out that the PDUs are encoded before being streamed to | ||||
TCP. | ||||
C.6 Changes made to draft-ietf-ldapbis-protocol-04.txt: | ||||
C.6.1 Section 4.5.1 and Appendix A | ||||
- Changed the ASN.1 for the and and or choices of Filter to have a | ||||
lower range of 1. This was an omission in the original ASN.1 | ||||
C.6.2 Various | ||||
- Fixed various typo's | ||||
C.7 Changes made to draft-ietf-ldapbis-protocol-05.txt: | ||||
C.7.1 Section 3.2.1 | ||||
- Added "(as defined in Section 12.4.1 of [X.501])" to the fifth | ||||
paragraph when talking about "operational attributes". This is | ||||
because the term "operational attributes" is never defined. | ||||
Alternately, we could drag a definition into the spec, for now, | ||||
I'm just pointing to the reference in X.501. | ||||
C.7.2 Section 4.1.5 | ||||
- Changed "And is also case insensitive" to "The entire | ||||
AttributeDescription is case insensitive". This is to clarify | ||||
whether we're talking about the entire attribute description, or | ||||
just the options. | ||||
- Expounded on the definition of attribute description options. This | ||||
doc now specifies a difference between transfer and tagging | ||||
options and describes the semantics of each, and how and when | ||||
subtyping rules apply. Now allow options to be transmitted in any | ||||
order but disallow any ordering semantics to be implied. These | ||||
changes are the result of ongoing input from an engineering team | ||||
designed to deal with ambiguity issues surrounding attribute | ||||
options. | ||||
C.7.3 Sections 4.1.5.1 and 4.1.6 | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 52 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- Refer to non "binary" transfer encodings as "native encoding" | ||||
rather than "string" encoding to clarify and avoid confusion. | ||||
C.8 Changes made to draft-ietf-ldapbis-protocol-06.txt: | ||||
C.8.1 Title | ||||
- Changed to "LDAP: The Protocol" to be consisted with other working | ||||
group documents | ||||
C.8.2 Abstract | ||||
- Moved above TOC to conform to new guidelines | ||||
- Reworded to make consistent with other WG documents. | ||||
- Moved 2119 conventions to "Conventions" section | ||||
C.8.3 Introduction | ||||
- Created to conform to new guidelines | ||||
C.8.4 Models | ||||
- Removed section. There is only one model in this document | ||||
(Protocol Model) | ||||
C.8.5 Protocol Model | ||||
- Removed antiquated paragraph: "In keeping with the goal of easing | ||||
the costs associated with use of the directory, it is an objective | ||||
of this protocol to minimize the complexity of clients so as to | ||||
facilitate widespread deployment of applications capable of using | ||||
the directory." | ||||
- Removed antiquated paragraph concerning LDAP v1 and v2 and | ||||
referrals. | ||||
C.8.6 Data Model | ||||
- Removed Section 3.2 and subsections. These have been moved to | ||||
[Models] | ||||
C.8.7 Relationship to X.500 | ||||
- Removed section. It has been moved to [Roadmap] | ||||
C.8.8 Server Specific Data Requirements | ||||
- Removed section. It has been moved to [Models] | ||||
C.8.9 Elements of Protocol | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 53 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- Added "Section 5.1 specifies how the protocol is encoded and | ||||
transferred." to the end of the first paragraph for reference. | ||||
- Reworded notes about extensibility, and now talk about implied | ||||
extensibility and the use of ellipses in the ASN.1 | ||||
- Removed references to LDAPv2 in third and fourth paragraphs. | ||||
C.8.10 Message ID | ||||
- Reworded second paragraph to "The message ID of a request MUST | ||||
have a non-zero value different from the values of any other | ||||
requests outstanding in the LDAP session of which this message is | ||||
a part. The zero value is reserved for the unsolicited | ||||
notification message." (Added notes about non-zero and the zero | ||||
value). | ||||
C.8.11 String Types | ||||
- Removed ABNF for LDAPOID and added "Although an LDAPOID is encoded | ||||
as an OCTET STRING, values are limited to the definition of | ||||
numericoid given in Section 1.3 of [Models]." | ||||
C.8.12 Distinguished Name and Relative Distinguished Name | ||||
- Removed ABNF and referred to [Models] and [LDAPDN] where this is | ||||
defined. | ||||
C.8.13 Attribute Type | ||||
- Removed sections. It's now in the [Models] doc. | ||||
C.8.14 Attribute Description | ||||
- Removed ABNF and aligned section with [Models] | ||||
- Moved AttributeDescriptionList here. | ||||
C.8.15 Transfer Options | ||||
- Added section and consumed much of old options language (while | ||||
aligning with [Models] | ||||
C.8.16 Binary Transfer Option | ||||
- Clarified intent regarding exactly what is to be BER encoded. | ||||
- Clarified that clients must not expect ;binary when not asking for | ||||
it (;binary, as opposed to ber encoded data). | ||||
C.8.17 Attribute | ||||
- Use the term "attribute description" in lieu of "type" | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 54 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- Clarified the fact that clients cannot rely on any apparent | ||||
ordering of attribute values. | ||||
C.8.18 LDAPResult | ||||
- To resultCode, added ellipses "..." to the enumeration to indicate | ||||
extensibility. and added a note, pointing to [LDAPIANA] | ||||
- Removed error groupings ad refer to Appendix A. | ||||
C.8.19 Bind Operation | ||||
- Added "Prior to the BindRequest, the implied identity is | ||||
anonymous. Refer to [AuthMeth] for the authentication-related | ||||
semantics of this operation." to the first paragraph. | ||||
- Added ellipses "..." to AuthenticationChoice and added a note | ||||
"This type is extensible as defined in Section 3.6 of [LDAPIANA]. | ||||
Servers that do not support a choice supplied by a client will | ||||
return authMethodNotSupported in the result code of the | ||||
BindResponse." | ||||
- Simplified text regarding how the server handles unknown versions. | ||||
Removed references to LDAPv2 | ||||
C.8.20 Sequencing of the Bind Request | ||||
- Aligned with [AuthMeth] In particular, paragraphs 4 and 6 were | ||||
removed, while a portion of 4 was retained (see C.8.9) | ||||
C.8.21 Authentication and other Security Service | ||||
- Section was removed. Now in [AuthMeth] | ||||
C.8.22 Continuation References in the Search Result | ||||
- Added "If the originating search scope was singleLevel, the scope | ||||
part of the URL will be baseObject." | ||||
C.8.23 Security Considerations | ||||
- Removed reference to LDAPv2 | ||||
C.8.24 Result Codes | ||||
- Added as normative appendix A | ||||
C.8.25 ASN.1 | ||||
- Added EXTENSIBILITY IMPLIED | ||||
- Added a number of comments holding referenced to [Models] and | ||||
[ISO10646]. | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 55 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- Removed AttributeType. It is not used. | ||||
C.9 Changes made to draft-ietf-ldapbis-protocol-07.txt: | ||||
- Removed all mention of transfer encodings and the binary attribute | ||||
option. Please refer to draft-legg-ldap-binary-00.txt and draft- | ||||
legg-ldap-transfer-00.txt | ||||
- Further alignment with [Models]. | ||||
- Added extensibility ellipsis to protocol op choice | ||||
- In 4.1.1, clarified when connections may be dropped due to | ||||
malformed PDUs | ||||
- Specified which matching rules and syntaxes are used for various | ||||
filter items | ||||
C.10 Changes made to draft-ietf-ldapbis-protocol-08.txt: | ||||
C.10.1 Section 4.1.1.1: | ||||
- Clarified when it is and isn't appropriate to return an already | ||||
used message id. | ||||
C.10.2 Section 4.1.11: | ||||
- Clarified that a control only applies to the message it's attached | ||||
to. | ||||
- Explained that the criticality field is only applicable to certain | ||||
request messages. | ||||
- Added language regarding the combination of controls. | ||||
C.10.3 Section 4.11: | ||||
- Explained that Abandon and Unbind cannot be abandoned, and | ||||
illustrated how to determine whether an operation has been | ||||
abandoned. | ||||
C.11 Changes made to draft-ietf-ldapbis-protocol-09.txt: | ||||
- Fixed formatting | ||||
C.12 Changes made to draft-ietf-ldapbis-protocol-10.txt: | ||||
C.12.1 Section 4.1.4: | ||||
- Removed second paragraph as this language exists in MODELS | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 56 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
C.12.2 Section 4.2.1: | ||||
- Replaced fourth paragraph. It was accidentally removed in an | ||||
earlier edit. | ||||
C.12.2 Section 4.13: | ||||
- Added section describing the StartTLS operation (moved from | ||||
authmeth) | ||||
C.13 Changes made to draft-ietf-ldapbis-protocol-11.txt: | ||||
C.13.1 Section 4.1.9 | ||||
- Changed "errorMessage" to "diagnosticMessage". Simply to indicate | ||||
that the field may be non-empty even if a non-error resultCode is | ||||
present. | ||||
C.13.2 Section 4.2: | ||||
- Reconciled language in "name" definition with [AuthMeth] | ||||
C.13.3 Section 4.2.1 | ||||
- Renamed to "Processing of the Bind Request", and moved some text | ||||
from 4.2 into this section. | ||||
- Rearranged paragraphs to flow better. | ||||
- Specified that (as well as failed) an abandoned bind operation | ||||
will leave the connection in an anonymous state. | ||||
C.13.4 Section 4.5.3 | ||||
- Generalized the second paragraph which cited indexing and | ||||
searchreferralreferences. | ||||
C.14 Changes made to draft-ietf-ldapbis-protocol-12.txt: | ||||
- Reworked bind errors. | ||||
- General clarifications and edits | ||||
C.15 Changes made to draft-ietf-ldapbis-protocol-13.txt | ||||
C.15.1 Section 2 & various | ||||
- Added definitions for LDAP connection, TLS connection, and LDAP | ||||
association, and updated appropriate fields to use proper terms. | ||||
C.15.2 Section 4.2 | ||||
- Added text to authentication, specifying the way in which textual | ||||
strings used as passwords are to be prepared. | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 57 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
C.15.3 Section 4.5.1 | ||||
- Clarified derefInSearching. Specifically how it works in terms of | ||||
subtree and one level searches | ||||
C.15.4 Section 4.5.2 | ||||
- Changed MUST to SHOULD for returning textual attribute name, The | ||||
MUST is unreasonable. There are likely cases (such as when the | ||||
server knows multiple attributes in separate entries of a search | ||||
result set share the same short name) where returning a numericoid | ||||
is better than returning a short name. That is, the MUST may | ||||
actually disallow servers from preventing misinterpretation of | ||||
short names. This is not only an interop issue, but likely a | ||||
security consideration. | ||||
C.15.4 Section 4.9 | ||||
- Made modify consistent with add in regards to the need of parent | ||||
entries already existing. | ||||
C.15.6 Section 4.13.2.2 | ||||
- Removed wording indicating that referrals can be returned from | ||||
StartTLS | ||||
C.16 Changes made to draft-ietf-ldapbis-protocol-14.txt | ||||
C.16.1 Section 4.1.9 | ||||
- Added: If a server detects multiple errors for an operation, only | - Mandated that servers return protocolError when the version is not | |||
one resultCode is returned. The server should return the | supported. | |||
resultCode that best indicates the nature of the error | - Clarified behavior when the simple authentication is used, the | |||
encountered. | name is empty and the password is non-empty. | |||
- Required servers to not dereference aliases for bind. This was | ||||
added for consistency with other operations and to help ensure | ||||
data consistency | ||||
- Required that textual passwords be transferred as UTF-8 encoded | ||||
Unicode, and added recommendations on string preparation. This was | ||||
to help ensure interoperability of passwords being sent from | ||||
different clients. | ||||
C.16.2 Section 4.1.11 | C.1.15 Section 4.2.1 | |||
- Added: controlValues that are defined in terms of ASN.1 and BER | ||||
encoded according to Section 5.1, also follow the extensibility | ||||
rules in Section 4. | ||||
- This section was largely reorganized for readability and language | ||||
was added to clarify the authentication state of failed and | ||||
abandoned bind operations. | ||||
- Removed: "If a SASL transfer encryption or integrity mechanism has | - Removed: "If a SASL transfer encryption or integrity mechanism has | |||
been negotiated, that mechanism does not support the changing of | been negotiated, that mechanism does not support the changing of | |||
credentials from one identity to another, then the client MUST | credentials from one identity to another, then the client MUST | |||
instead establish a new connection." | instead establish a new connection." | |||
Each SASL negotiation is, generally, independent of other SASL | Each SASL negotiation is, generally, independent of other SASL | |||
negotiations. If there were dependencies between multiple | negotiations. If there were dependencies between multiple | |||
negotiations of a particular mechanism, the mechanism technical | negotiations of a particular mechanism, the mechanism technical | |||
specification should detail how applications are to deal with | specification should detail how applications are to deal with | |||
them. LDAP should not require any special handling. And if an LDAP | them. LDAP should not require any special handling. And if an LDAP | |||
client had used such a mechanism, it would have the option of | client had used such a mechanism, it would have the option of | |||
using another mechanism. | using another mechanism. | |||
- Dropped MUST imperative in paragraph 3 to align with [Keywords]. | ||||
C.16.3 Section 4.5.2 and Section 7 | C.1.16 Section 4.2.3 | |||
- Removed: "If the LDAP association is operating over a connection- | ||||
oriented transport such as TCP" | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 58 | - Moved most error-related text to Appendix A, and added text | |||
regarding certain errors used in conjunction with the bind | ||||
operation. | ||||
- Prohibited the server from specifying serverSaslCreds when not | ||||
appropriate. | ||||
Sermersheim Internet-Draft - Expires Jun 2004 Page 50 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
This is always true. | C.1.17 Section 4.3 | |||
C.16.4 Section 4.11 | - Required both peers to cease transmission and close the connection | |||
- Added: thus a client SHOULD NOT use the Abandon operation when it | for the unbind operation. | |||
needs an indication of whether the operation was abandoned. For | ||||
example, if a client performs an update operation (Add, Modify, or | ||||
ModifyDN), and it needs to know whether the directory has changed | ||||
due to the operation, it should not use the Abandon operation to | ||||
cancel the update operation. Clients can determine that an | ||||
operation has been abandoned by performing a subsequent bind | ||||
operation. | ||||
C.16.5 Section 4.12 | C.1.18 Section 4.4 | |||
- Added: | - Added instructions for future specifications of Unsolicited | |||
"The requestValue and responseValue fields contain any information | Notifications. | |||
associated with the operation. The format of these fields is | ||||
defined by the specification of the extended operation. | ||||
Implementations MUST be prepared to handle arbitrary contents of | ||||
these fields, including zero bytes. Values that are defined in | ||||
terms of ASN.1 and BER encoded according to Section 5.1, also | ||||
follow the extensibility rules in Section 4. | ||||
Extended operations may be specified in other documents. The | C.1.19 Section 4.5.1 | |||
specification of an extended operation consists of: | ||||
- the OBJECT IDENTIFIER assigned to the | - SearchRequest attributes is now defined as an AttributeSelection | |||
ExtendedRequest.requestName (and possibly | type rather than AttributeDescriptionList. | |||
ExtendedResponse.responseName), | - The Filter choices 'and' and 'or', and the SubstringFilter | |||
substrings types are now defined with a lower bound of 1. | ||||
- The SubstringFilter substrings 'initial, 'any', and 'final' types | ||||
are now AssertionValue rather than LDAPString. | ||||
- Clarified the semantics of the derefAliases choices. | ||||
- Added instructions for equalityMatch, substrings, greaterOrEqual, | ||||
lessOrEqual, and approxMatch. | ||||
- the format of the contents of the requestValue and responseValue | C.1.20 Section 4.5.2 | |||
(if any), | ||||
- the semantics of the operation, | - Recommended that servers not use attribute short names when it | |||
knows they are ambiguous or may cause interoperability problems. | ||||
- Removed all mention of ExtendedResponse due to lack of | ||||
implementation. | ||||
Servers list the requestName of all ExtendedRequests they | C.1.21 Section 4.5.3 | |||
recognize in the supportedExtension attribute [Models] in the root | ||||
DSE. | ||||
requestValues and responseValues that are defined in terms of | - Made changes similar to those made to Section 4.1.11. | |||
ASN.1 and BER encoded according to Section 5.1, also follow the | ||||
extensibility rules in Section 4." | ||||
This was to align with controls and control values. | C.1.22 Section 4.5.3.1 | |||
C.16.6 Section 4.13.3.1 | - Fixed examples to adhere to changes made to Section 4.5.3. | |||
- Added: After the TLS connection has been closed, the server MUST | C.1.23 Section 4.6 | |||
NOT send responses to any request message received before the TLS | ||||
closure. | ||||
C.16.7 Section A2 | - Removed restriction that required an equality match filter in | |||
- Removed precedence rules | order to perform value delete modifications. It is sufficiently | |||
documented that in absence of an equality matching rule, octet | ||||
equality is used. | ||||
- Replaced AttributeTypeAndValues with Attribute as they are | ||||
equivalent. | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 59 | Sermersheim Internet-Draft - Expires Jun 2004 Page 51 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
C.17 Changes made to draft-ietf-ldapbis-protocol-15.txt | - Clarified what type of modification changes might temporarily | |||
violate schema. | ||||
C.17.1 Section 4.1.8 | C.1.24 Section 4.9 | |||
- Removed: "Servers which support matching rules for use in the | ||||
extensibleMatch search filter MUST list the matching rules they | ||||
implement in subschema entries, using the matchingRules | ||||
attributes. The server SHOULD also list there, using the | ||||
matchingRuleUse attribute, the attribute types with which each | ||||
matching rule can be used. More information is given in section | ||||
4.5 of [Syntaxes]." | ||||
This language is moved to [Models] | - Required servers to not dereference aliases for modify DN. This | |||
was added for consistency with other operations and to help ensure | ||||
data consistency. | ||||
- Allow modify DN to fail when moving between naming contexts. | ||||
C.17.2 Section 4.10 | C.1.25 Section 4.10 | |||
- Added: "In the event that the attribute or subtype is not present | ||||
in the entry, the resultCode field is set to noSuchAttribute. If | ||||
the attribute is unknown, the resultCode is set to | ||||
undefinedAttributeType." | ||||
C.17.3 Section 7 | - Clarified the semantics of Compare when the attribute is not | |||
- Added: Requirements of authentication methods, SASL mechanisms, | present and when it is unknown. | |||
and TLS are described in [AUTHMETH]. | - Required servers to not dereference aliases for compare. This was | |||
added for consistency with other operations and to help ensure | ||||
data consistency. | ||||
- Added: Protocol peers MUST be prepared to handle invalid and | C.1.26 Section 4.11 | |||
arbitrary length protocol encodings. A number of LDAP security | ||||
advisories are available through [CERT]. | ||||
C.17.4 Section 10 | - Explained that since abandon returns no response, clients hould | |||
- Added as Informative References | not use it if they need to know the outcome. | |||
- Specified that Abandon and Unbind cannot be abandoned. | ||||
C.17.5 Various | C.1.27 Section 4.12 | |||
- Clarified that the [LDAPURL] form or URLs in referrals specifies | ||||
LDAP servers implementing TCP/IP. | ||||
C.18 Changes made to draft-ietf-ldapbis-protocol-16.txt | - Specified how values of extended operations defined in terms of | |||
ASN.1 are to be encoded. | ||||
- Added instructions on what extended operation specifications | ||||
consist of. | ||||
- Added a recommendation that servers advertise supported extended | ||||
operations. | ||||
C.18.1 Section 4.1.4 and others | C.1.28 Section 5.2 | |||
- Renamed AttributeDescriptionList to AttributeSelection and moved | ||||
its definition to 4.5.1 (the only place it is referenced). | ||||
C.18.2 Sections 4.1.10, 4.5.3 | - Moved referral-specific instructions into referral-related | |||
- Made obvious the fact that instructions regarding LDAP URLS used | sections. | |||
as referrals and search result references only apply to LDAP URLs, | ||||
and that other URLs need to define their own instructions. | ||||
C.18.3 Section 4.2.1 | C.1.29 Section 7 | |||
- Further clarified the authentication state of an abandoned bind | ||||
C.18.4 Section 4.5.1 | - Reworded notes regarding SASL not protecting certain aspects of | |||
- Added: "Note that the AssertionValue in a substrings filter item | the LDAP bind PDU. | |||
MUST conform to the assertion syntax of the EQUALITY matching rule | - Noted that Servers are encouraged to prevent directory | |||
for the attribute type rather than the assertion syntax of the | modifications by clients that have authenticated anonymously | |||
SUBSTR matching rule for the attribute type. The entire | [AuthMeth]. | |||
- Added a note regarding the scenario where an identity is changed | ||||
(deleted, privileges or credentials modified, etc.). | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 60 | Sermersheim Internet-Draft - Expires Jun 2004 Page 52 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
SubstringFilter is converted into an assertion value of the | - Warned against following referrals that may have been injected in | |||
substrings matching rule prior to applying the rule." | the data stream. | |||
- Added a note regarding malformed and long encodings. | ||||
C.18.5 Section 4.6 | ||||
- Replaced AttributeTypeAndValues with Attribute as they are | ||||
equivalent. | ||||
- Reformatted documentation of the various fields. | ||||
- Clarified what type of modification changes might temporarily | ||||
violate schema. | ||||
C.18.6 Section 7 | ||||
- Added: "Server implementors should plan for the possibility of an | ||||
identity or associated with an LDAP connection being deleted, | ||||
renamed, or modified, and take appropriate actions to prevent | ||||
insecure side effects. The way in which this is dealt with is | ||||
implementation specific. Likewise, server implementors should plan | ||||
for the possibility of an associated identities credentials | ||||
becoming invalid." | ||||
C.18.7 Section 9 | ||||
- Updated references to X.680 and X.690 | ||||
C.18.8 Section 11 | ||||
- Added IANA considerations | ||||
C.18.9 Section A.2 | C.1.30 Appendix A | |||
- Clarified that strongAuthRequired could be sent any time | ||||
(including when credentials have been weakened or compromised. | ||||
C.18.10 Appendix B | - Added "EXTESIBILITY IMPLIED" to ASN.1 definition. | |||
- Added copyright to ASN.1 definition | - Removed AttributeType. It is not used. | |||
C.19 Changes made to draft-ietf-ldapbis-protocol-17.txt | C.2 Changes made to made to RFC 2830: | |||
C.19.1 Section 4.1.1 | This section summarizes the substantive changes made to Sections of | |||
- Changed MAY to SHOULD when stating when a Notice of Disconnect is | RFC 2830. Readers should consult [AuthMeth] for summaries of changes | |||
to be returned. | to other sections. | |||
C.19.2 Sections 4.1.10 and 4.5.3 | C.2.1 Section 2.3 | |||
- Changed occurrences of URL to URI for format of referrals. | ||||
C.19.3 Section 4.1.11 | - Removed wording indicating that referrals can be returned from | |||
- Dropped MUST imperative in paragraph 2, and added a SHOULD in | StartTLS | |||
paragraph 3 to align with [Keywords]. | ||||
C.19.4 Section 4.2 | C.2.1 Section 4.13.3.1 | |||
- Reworded section on string prep for simple passwords for clarity. | ||||
C.19.5 Section 4.2.1 | - Reworded most of this section and added the requirement that after | |||
- Dropped MUST imperative in paragraph 3 to align with [Keywords]. | the TLS connection has been closed, the server MUST NOT send | |||
responses to any request message received before the TLS closure. | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 61 | Sermersheim Internet-Draft - Expires Jun 2004 Page 53 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
C.19.6 Section 4.2.2 | Intellectual Property Rights | |||
- Added SHALL NOT imperative to last paragraph to align with | ||||
[Keywords]. | ||||
C.19.7 Section 4.5.1 | ||||
- Added correct approxMatch semantics. | ||||
C.19.8 Various | ||||
- Added SHALL NOT imperative in regards to dereferencing aliases of | ||||
base objects. | ||||
C.19.9 Section 4.9 | ||||
- Allow modDN to fail when moving between naming contexts. | ||||
C.19.10 Section 4.12 | ||||
- Added RECOMMENDED imperative to paragraph that talks about | ||||
advertising supported extended operations. | ||||
C.19.11 Section 4.1.11 | ||||
- Dropped all MAY imperative to align with [Keywords]. | ||||
C.19.12 Various | The IETF takes no position regarding the validity or scope of any | |||
- Made it more obvious that Attribute contains at least one value, | intellectual property or other rights that might be claimed to | |||
while PartialAttribute now allows zero values. Added appropriate | pertain to the implementation or use of the technology described in | |||
references back to Attribute and PartialAttribute. | 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. | ||||
Sermersheim Internet-Draft - Expires Apr 2004 Page 62 | The IETF invites any interested party to bring to its attention any | |||
Lightweight Directory Access Protocol Version 3 | 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. | ||||
Full Copyright Statement | Full Copyright Statement | |||
Copyright (C) The Internet Society (2003). All Rights Reserved. | Copyright (C) The Internet Society (2003). All Rights Reserved. | |||
This document and translations of it may be copied and furnished to | This document and translations of it may be copied and furnished to | |||
others, and derivative works that comment on or otherwise explain it | others, and derivative works that comment on or otherwise explain it | |||
or assist in its implementation may be prepared, copied, published | or assist in its implementation may be prepared, copied, published | |||
and distributed, in whole or in part, without restriction of any | and distributed, in whole or in part, without restriction of any | |||
kind, provided that the above copyright notice and this paragraph are | kind, provided that the above copyright notice and this paragraph are | |||
skipping to change at line 3432 | skipping to change at line 2929 | |||
The limited permissions granted above are perpetual and will not be | The limited permissions granted above are perpetual and will not be | |||
revoked by the Internet Society or its successors or assigns. | revoked by the Internet Society or its successors or assigns. | |||
This document and the information contained herein is provided on an | This document and the information contained herein is provided on an | |||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | |||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | |||
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | |||
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | |||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
Sermersheim Internet-Draft - Expires Apr 2004 Page 63 | Sermersheim Internet-Draft - Expires Jun 2004 Page 54 | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |