draft-ietf-ldapbis-protocol-11.txt | draft-ietf-ldapbis-protocol-12.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-11.txt Nov 2002 | Document: draft-ietf-ldapbis-protocol-12.txt Dec 2002 | |||
Obsoletes: RFC 2251 | Obsoletes: RFC 2251 | |||
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 | |||
skipping to change at line 50 | skipping to change at line 50 | |||
Directory Access Protocol (DAP). | Directory Access Protocol (DAP). | |||
Table of Contents | Table of Contents | |||
1. Introduction.....................................................2 | 1. Introduction.....................................................2 | |||
2. Conventions......................................................3 | 2. Conventions......................................................3 | |||
3. Protocol Model...................................................3 | 3. Protocol Model...................................................3 | |||
4. Elements of Protocol.............................................3 | 4. Elements of Protocol.............................................3 | |||
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.................................................5 | 4.1.2. String Types.................................................6 | |||
4.1.3. Distinguished Name and Relative Distinguished Name...........6 | 4.1.3. Distinguished Name and Relative Distinguished Name...........6 | |||
Sermersheim Internet-Draft - Expires May 2003 Page 1 | Sermersheim Internet-Draft - Expires Jun 2003 Page 1 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
4.1.4. Attribute Descriptions.......................................6 | 4.1.4. Attribute Descriptions.......................................6 | |||
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....................................................7 | 4.1.7. Attribute....................................................7 | |||
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 | |||
skipping to change at line 86 | skipping to change at line 86 | |||
5. Protocol Element Encodings and Transfer.........................31 | 5. Protocol Element Encodings and Transfer.........................31 | |||
5.1. Protocol Encoding.............................................31 | 5.1. Protocol Encoding.............................................31 | |||
5.2. Transfer Protocols............................................32 | 5.2. Transfer Protocols............................................32 | |||
6. Implementation Guidelines.......................................32 | 6. Implementation Guidelines.......................................32 | |||
6.1. Server Implementations........................................32 | 6.1. Server Implementations........................................32 | |||
6.2. Client Implementations........................................32 | 6.2. Client Implementations........................................32 | |||
7. Security Considerations.........................................33 | 7. Security Considerations.........................................33 | |||
8. Acknowledgements................................................33 | 8. Acknowledgements................................................33 | |||
9. Normative References............................................33 | 9. Normative References............................................33 | |||
10. Editor's Address...............................................34 | 10. Editor's Address...............................................34 | |||
Appendix A - LDAP Result Codes.....................................35 | Appendix A - LDAP Result Codes.....................................36 | |||
A.1 Non-Error Result Codes.........................................35 | A.1 Non-Error Result Codes.........................................36 | |||
A.2 Error Result Codes.............................................35 | A.2 Error Result Codes.............................................36 | |||
A.3 Classes and Precedence of Error Result Codes...................35 | A.3 Classes and Precedence of Error Result Codes...................36 | |||
Appendix C - Change History........................................46 | Appendix C - Change History........................................47 | |||
C.1 Changes made to RFC 2251:......................................46 | C.1 Changes made to RFC 2251:......................................47 | |||
C.2 Changes made to draft-ietf-ldapbis-protocol-00.txt:............46 | C.2 Changes made to draft-ietf-ldapbis-protocol-00.txt:............47 | |||
C.3 Changes made to draft-ietf-ldapbis-protocol-01.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:............47 | C.4 Changes made to draft-ietf-ldapbis-protocol-02.txt:............48 | |||
C.5 Changes made to draft-ietf-ldapbis-protocol-03.txt:............49 | C.5 Changes made to draft-ietf-ldapbis-protocol-03.txt:............50 | |||
C.6 Changes made to draft-ietf-ldapbis-protocol-04.txt:............51 | C.6 Changes made to draft-ietf-ldapbis-protocol-04.txt:............52 | |||
C.7 Changes made to draft-ietf-ldapbis-protocol-05.txt:............51 | C.7 Changes made to draft-ietf-ldapbis-protocol-05.txt:............52 | |||
C.8 Changes made to draft-ietf-ldapbis-protocol-06.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:............55 | C.9 Changes made to draft-ietf-ldapbis-protocol-07.txt:............56 | |||
C.10 Changes made to draft-ietf-ldapbis-protocol-08.txt:...........55 | C.10 Changes made to draft-ietf-ldapbis-protocol-08.txt:...........56 | |||
C.11 Changes made to draft-ietf-ldapbis-protocol-09.txt:...........55 | C.11 Changes made to draft-ietf-ldapbis-protocol-09.txt:...........56 | |||
C.12 Changes made to draft-ietf-ldapbis-protocol-10.txt:...........55 | C.12 Changes made to draft-ietf-ldapbis-protocol-10.txt:...........56 | |||
Appendix D - Outstanding Work Items................................56 | C.13 Changes made to draft-ietf-ldapbis-protocol-11.txt:...........57 | |||
Appendix D - Outstanding Work Items................................57 | ||||
1. Introduction | 1. Introduction | |||
The Directory is "a collection of open systems cooperating to provide | Sermersheim Internet-Draft - Expires Jun 2003 Page 2 | |||
directory services" [X.500]. A Directory user, which may be a human | ||||
Sermersheim Internet-Draft - Expires May 2003 Page 2 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
The Directory is "a collection of open systems cooperating to provide | ||||
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 Lightweight Directory | This document details the protocol elements of Lightweight Directory | |||
Access Protocol, along with their semantic meanings. Following the | Access Protocol, along with their semantic meanings. Following the | |||
description of protocol elements, it describes the way in which the | description of protocol elements, it describes the way in which the | |||
protocol is encoded and transferred. | protocol is encoded and transferred. | |||
skipping to change at line 134 | skipping to change at line 134 | |||
This document is an integral part of the LDAP Technical Specification | This document is an integral part of the LDAP Technical Specification | |||
[Roadmap]. | [Roadmap]. | |||
This document replaces RFC 2251. Appendix C holds a detailed log of | This document replaces RFC 2251. Appendix C holds a detailed log of | |||
changes to RFC 2251. At publication time, this appendix will be | changes to RFC 2251. At publication time, this appendix will be | |||
distilled to a summary of changes to RFC 2251. | distilled to a summary of changes to RFC 2251. | |||
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 | "SHOULD", "SHOULD NOT", "RECOMMENDED", and "MAY" in this document are | |||
are to be interpreted as described in [RFC2119]. | to be interpreted as described in [RFC2119]. | |||
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 any results or | operation(s), the server returns a response containing any results or | |||
errors to the requesting client. | errors to the requesting client. | |||
skipping to change at line 162 | skipping to change at line 162 | |||
eventually receives a response for every request that requires one. | eventually receives a response for every request that requires one. | |||
Note that the core protocol operations defined in this document can | Note that the core protocol operations defined in this document can | |||
be mapped to a subset of the X.500(1997) directory abstract service. | be mapped to a subset of the X.500(1997) directory abstract service. | |||
However there is not a one-to-one mapping between LDAP protocol | However there is not a one-to-one mapping between LDAP protocol | |||
operations and DAP operations. Server implementations acting as a | operations and DAP operations. Server implementations acting as a | |||
gateway to X.500 directories may need to make multiple DAP requests. | gateway to X.500 directories may need to make multiple DAP requests. | |||
4. Elements of Protocol | 4. Elements of Protocol | |||
The LDAP protocol is described using Abstract Syntax Notation 1 | Sermersheim Internet-Draft - Expires Jun 2003 Page 3 | |||
(ASN.1) [X.680], and is transferred using a subset of ASN.1 Basic | ||||
Sermersheim Internet-Draft - Expires May 2003 Page 3 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
The LDAP protocol is described using Abstract Syntax Notation 1 | ||||
(ASN.1) [X.680], and is transferred using a subset of ASN.1 Basic | ||||
Encoding Rules [X.690]. Section 5.1 specifies how the protocol is | Encoding Rules [X.690]. Section 5.1 specifies how the protocol is | |||
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 ignore trailing | implied extensibility, clients and servers MUST ignore trailing | |||
SEQUENCE elements whose tags they do not recognize. | SEQUENCE elements whose tags they do not recognize. | |||
skipping to change at line 218 | skipping to change at line 217 | |||
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, | |||
modDNRequest ModifyDNRequest, | modDNRequest ModifyDNRequest, | |||
modDNResponse ModifyDNResponse, | ||||
compareRequest CompareRequest, | ||||
Sermersheim Internet-Draft - Expires May 2003 Page 4 | Sermersheim Internet-Draft - Expires Jun 2003 Page 4 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
modDNResponse ModifyDNResponse, | ||||
compareRequest CompareRequest, | ||||
compareResponse CompareResponse, | compareResponse CompareResponse, | |||
abandonRequest AbandonRequest, | abandonRequest AbandonRequest, | |||
extendedReq ExtendedRequest, | extendedReq ExtendedRequest, | |||
extendedResp ExtendedResponse, | extendedResp ExtendedResponse, | |||
... }, | ... }, | |||
controls [0] Controls OPTIONAL } | controls [0] Controls OPTIONAL } | |||
MessageID ::= INTEGER (0 .. maxInt) | MessageID ::= INTEGER (0 .. maxInt) | |||
maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) -- | maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) -- | |||
skipping to change at line 272 | skipping to change at line 271 | |||
which this message is a part. The zero value is reserved for the | which this message is a part. The zero value is reserved for the | |||
unsolicited notification message. | unsolicited notification message. | |||
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 connection unless it can be determined | earlier request on the same connection unless it can be determined | |||
that the server is no longer servicing the earlier request. Otherwise | that the server is no longer servicing the earlier request. Otherwise | |||
the behavior is undefined. For operations that do not return | the behavior is undefined. For operations that do not return | |||
responses (unbind, abandon, and abandoned operations), the client | responses (unbind, abandon, and abandoned operations), the client | |||
SHOULD assumes the operation is in progress until a subsequent bind | SHOULD assume the operation is in progress until a subsequent bind | |||
request completes. | request completes. | |||
4.1.2. String Types | Sermersheim Internet-Draft - Expires Jun 2003 Page 5 | |||
Sermersheim Internet-Draft - Expires May 2003 Page 5 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
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 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 [RFC2044]. Note that in the UTF-8 | following the UTF-8 algorithm [RFC2279]. Note that in the UTF-8 | |||
algorithm characters which are the same as ASCII (0x0000 through | algorithm characters which are the same as ASCII (0x0000 through | |||
0x007F) are represented as that same ASCII character in a single | 0x007F) are represented as that same ASCII character in a single | |||
byte. The other byte values are used to form a variable-length | byte. The other byte values are used to form a variable-length | |||
encoding of an arbitrary character. | encoding of an arbitrary character. | |||
LDAPString ::= OCTET STRING -- UTF-8 encoded, | LDAPString ::= OCTET STRING -- UTF-8 encoded, | |||
-- ISO 10646 characters | -- ISO 10646 characters | |||
The LDAPOID is a notational convenience to indicate that the | The LDAPOID is a notational convenience to indicate that the | |||
permitted value of this string is a (UTF-8 encoded) dotted-decimal | permitted value of this string is a (UTF-8 encoded) dotted-decimal | |||
skipping to change at line 330 | skipping to change at line 329 | |||
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] | |||
An AttributeDescriptionList describes a list of 0 or more attribute | An AttributeDescriptionList describes a list of 0 or more attribute | |||
descriptions. (A list of zero elements has special significance in | descriptions. (A list of zero elements has special significance in | |||
the Search request.) | the Search request.) | |||
AttributeDescriptionList ::= SEQUENCE OF | Sermersheim Internet-Draft - Expires Jun 2003 Page 6 | |||
Sermersheim Internet-Draft - Expires May 2003 Page 6 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
AttributeDescriptionList ::= SEQUENCE OF | ||||
AttributeDescription | AttributeDescription | |||
4.1.5. Attribute Value | 4.1.5. Attribute Value | |||
A field of type AttributeValue is an OCTET STRING containing an | A field of type AttributeValue is an OCTET STRING containing an | |||
encoded attribute value data type. The value is encoded according to | encoded attribute value data type. The value is encoded according to | |||
its LDAP-specific encoding definition. The LDAP-specific encoding | its LDAP-specific encoding definition. The LDAP-specific encoding | |||
definitions for different syntaxes and attribute types may be found | definitions for different syntaxes and attribute types may be found | |||
in other documents, and in particular [Syntaxes]. | in other documents, and in particular [Syntaxes]. | |||
skipping to change at line 384 | skipping to change at line 382 | |||
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 | |||
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 | |||
An attribute consists of an attribute description and one or more | An attribute consists of an attribute description and one or more | |||
values of that attribute description. (Though attributes MUST have at | values of that attribute description. (Though attributes MUST have at | |||
least one value when stored, due to access control restrictions the | ||||
set may be empty when transferred from the server to the client. This | ||||
Sermersheim Internet-Draft - Expires May 2003 Page 7 | Sermersheim Internet-Draft - Expires Jun 2003 Page 7 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
least one value when stored, due to access control restrictions the | ||||
set may be empty when transferred from the server to the client. This | ||||
is described in section 4.5.2, concerning the PartialAttributeList | is described in section 4.5.2, concerning the PartialAttributeList | |||
type.) | type.) | |||
Attribute ::= SEQUENCE { | Attribute ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
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 reply upon | of attribute values is unordered. Implementations MUST NOT reply upon | |||
any apparent ordering being repeatable. | any apparent ordering being repeatable. | |||
skipping to change at line 422 | skipping to change at line 420 | |||
subschema entries, using the matchingRules attributes. The server | subschema entries, using the matchingRules attributes. The server | |||
SHOULD also list there, using the matchingRuleUse attribute, the | SHOULD also list there, using the matchingRuleUse attribute, the | |||
attribute types with which each matching rule can be used. More | attribute types with which each matching rule can be used. More | |||
information is given in section 4.5 of [Syntaxes]. | information is given in section 4.5 of [Syntaxes]. | |||
4.1.9. Result Message | 4.1.9. Result Message | |||
The LDAPResult is the construct used in this protocol to return | The LDAPResult is the construct used in this protocol to return | |||
success or failure indications from servers to clients. To various | success or failure indications from servers to clients. To various | |||
requests, servers will return responses of LDAPResult or responses | requests, servers will return responses of LDAPResult or responses | |||
containing the components of LDAPResponse to indicate the final | containing the components of LDAPResult to indicate the final status | |||
status of a protocol operation request. | of a protocol operation request. | |||
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), | |||
compareFalse (5), | compareFalse (5), | |||
compareTrue (6), | compareTrue (6), | |||
authMethodNotSupported (7), | authMethodNotSupported (7), | |||
strongAuthRequired (8), | strongAuthRequired (8), | |||
-- 9 reserved -- | -- 9 reserved -- | |||
referral (10), | referral (10), | |||
adminLimitExceeded (11), | adminLimitExceeded (11), | |||
unavailableCriticalExtension (12), | unavailableCriticalExtension (12), | |||
confidentialityRequired (13), | ||||
saslBindInProgress (14), | ||||
Sermersheim Internet-Draft - Expires May 2003 Page 8 | Sermersheim Internet-Draft - Expires Jun 2003 Page 8 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
confidentialityRequired (13), | ||||
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 -- | |||
noSuchObject (32), | noSuchObject (32), | |||
aliasProblem (33), | aliasProblem (33), | |||
invalidDNSyntax (34), | invalidDNSyntax (34), | |||
skipping to change at line 480 | skipping to change at line 478 | |||
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 -- | |||
other (80), | other (80), | |||
... }, | ... }, | |||
-- 81-90 reserved for APIs -- | -- 81-90 reserved for APIs -- | |||
matchedDN LDAPDN, | matchedDN LDAPDN, | |||
errorMessage LDAPString, | diagnosticMessage LDAPString, | |||
referral [3] Referral OPTIONAL } | referral [3] Referral OPTIONAL } | |||
The result codes enumeration is extensible as defined in Section 3.5 | The result codes enumeration is extensible as defined in Section 3.5 | |||
of [LDAPIANA]. The meanings of the result codes are given in Appendix | of [LDAPIANA]. The meanings of the result codes are given in Appendix | |||
A. | A. | |||
The errorMessage field of this construct may, at the server's option, | The diagnosticMessage field of this construct may, at the server's | |||
be used to return a string containing a textual, human-readable | option, be used to return a string containing a textual, human- | |||
(terminal control and page formatting characters should be avoided) | readable (terminal control and page formatting characters should be | |||
error diagnostic. As this error diagnostic is not standardized, | avoided) diagnostic message. As this diagnostic message is not | |||
implementations MUST NOT rely on the values returned. If the server | standardized, implementations MUST NOT rely on the values returned. | |||
chooses not to return a textual diagnostic, the errorMessage field of | If the server chooses not to return a textual diagnostic, the | |||
the LDAPResult type MUST contain a zero length string. | diagnosticMessage field of the LDAPResult type MUST contain a zero | |||
length string. | ||||
For result codes of noSuchObject, aliasProblem, invalidDNSyntax and | For certain result codes (typically, but not restricted to | |||
aliasDereferencingProblem, the matchedDN field is set to the name of | noSuchObject, aliasProblem, invalidDNSyntax and | |||
the lowest entry (object or alias) in the directory that was matched. | ||||
If no aliases were dereferenced while attempting to locate the entry, | ||||
this will be a truncated form of the name provided, or if aliases | ||||
Sermersheim Internet-Draft - Expires May 2003 Page 9 | Sermersheim Internet-Draft - Expires Jun 2003 Page 9 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
aliasDereferencingProblem), the matchedDN field is set to the name of | ||||
the lowest entry (object or alias) in the directory that was matched. | ||||
If no aliases were dereferenced while attempting to locate the entry, | ||||
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]. The matchedDN field contains a zero length string with | of [X.511]. The matchedDN field contains a zero length string with | |||
all other result codes. | all other result codes. | |||
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 LDAPResult.resultCode field value is | in an LDAPResult if the LDAPResult.resultCode field value is | |||
referral, and absent with all other result codes. It contains one or | referral, and absent with all other result codes. It contains one or | |||
skipping to change at line 551 | skipping to change at line 551 | |||
progress the operation, and if it is not present the client will use | progress the operation, and if it is not present the client will use | |||
the same name as in the original request. Some servers (e.g. | the same name as in the original request. Some servers (e.g. | |||
participating in distributed indexing) may provide a different filter | participating in distributed indexing) may provide a different filter | |||
in a referral for a search operation. If the filter part of the URL | in a referral for a search operation. If the filter part of the URL | |||
is present in an LDAPURL, the client MUST use this filter in its next | is present in an LDAPURL, the client MUST use this filter in its next | |||
request to progress this search, and if it is not present the client | request to progress this search, and if it is not present the client | |||
MUST use the same filter as it used for that search. Other aspects of | MUST use the same filter as it used for that search. Other aspects of | |||
the new request may be the same or different as the request which | the new request may be the same or different as the request which | |||
generated the referral. | generated the referral. | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 10 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Note that UTF-8 characters appearing in a DN or search filter may not | Note that UTF-8 characters appearing in a DN or search filter may not | |||
be legal for URLs (e.g. spaces) and MUST be escaped using the % | be legal for URLs (e.g. spaces) and MUST be escaped using the % | |||
method in [RFC2396]. | method in [RFC2396]. | |||
Other kinds of URLs may be returned, so long as the operation could | Other kinds of URLs may be returned, so long as the operation could | |||
be performed using that protocol. | be performed using that protocol. | |||
Sermersheim Internet-Draft - Expires May 2003 Page 10 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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 | Controls ::= SEQUENCE OF Control | |||
Control ::= SEQUENCE { | Control ::= SEQUENCE { | |||
controlType LDAPOID, | controlType LDAPOID, | |||
skipping to change at line 607 | skipping to change at line 607 | |||
MUST be prepared to handle arbitrary contents of the controlValue | MUST be prepared to handle arbitrary contents of the controlValue | |||
octet string, including zero bytes. It is absent only if there is no | octet string, including zero bytes. It is absent only if there is no | |||
value information which is associated with a control of its type. | value information which is associated with a control of its type. | |||
This document does not specify any controls. Controls may be | This document does not specify any controls. Controls may be | |||
specified in other documents. The specification of a control consists | specified in other documents. The specification of a control consists | |||
of: | of: | |||
- the OBJECT IDENTIFIER assigned to the control, | - the OBJECT IDENTIFIER assigned to the control, | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 11 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- whether the control is always noncritical, always critical, or | - whether the control is always noncritical, always critical, or | |||
critical at the client's option, | critical at the client's option, | |||
- the format of the controlValue contents of the control, | - the format of the controlValue contents of the control, | |||
- the semantics of the control, | - the semantics of the control, | |||
Sermersheim Internet-Draft - Expires May 2003 Page 11 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- and optionally, semantics regarding the combination of the control | - and optionally, semantics regarding the combination of the control | |||
with other controls. | with other controls. | |||
Servers list the controlType of all controls they recognize in the | Servers list the controlType of all controls they recognize in the | |||
supportedControl attribute [Models] in the root DSE. | 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 | |||
combinations, if specified, are generally found in the control | combinations, if specified, are generally found in the control | |||
specification most recently published. In the absence of combination | specification most recently published. In the absence of combination | |||
semantics, the behavior of the operation is undefined. | semantics, the behavior of the operation is undefined. | |||
Additionally, the order of a combination of controls in the SEQUENCE | Additionally, the order of a combination of controls in the SEQUENCE | |||
is ignored unless the control specification(s) describe(s) | is ignored unless the control specification(s) describe(s) | |||
combination semantics. | combination semantics. | |||
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. Prior to | information to be exchanged between the client and server. Prior to | |||
the BindRequest, the implied identity is anonymous. Refer to | the first BindRequest, the implied identity is anonymous. Refer to | |||
[AuthMeth] for the authentication-related semantics of this | [AuthMeth] for the authentication-related semantics of this | |||
operation. | operation. | |||
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 } | |||
skipping to change at line 663 | skipping to change at line 663 | |||
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 session. This document describes | to be used in this protocol session. 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, and the client just sets this parameter to the | negotiation, and the client just sets this parameter to the | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 12 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
version it desires. If the server does not support the specified | version it desires. If the server does not support the specified | |||
version, it responds with protocolError in the resultCode field of | version, it responds with protocolError in the resultCode field of | |||
the BindResponse. | the 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) | ||||
Sermersheim Internet-Draft - Expires May 2003 Page 12 | or when using SASL authentication ([AuthMeth] section 4.3). Server | |||
Lightweight Directory Access Protocol Version 3 | behavior is undefined when the name is a null value, simple | |||
authentication is used, and a password is specified. The server | ||||
string) for the purposes of anonymous binds, when authentication | SHOULD NOT perform any alias dereferencing in determining the | |||
has been performed at a lower layer, or when using SASL | object to bind as. | |||
credentials with a mechanism that includes the name in the | ||||
credentials. Server behavior is undefined when the name is a null | ||||
value, simple authentication is used, and a password is specified. | ||||
The server SHOULD NOT perform any 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 | |||
result code of the BindResponse. | result code of the BindResponse. | |||
Upon receipt of a Bind Request, a protocol server will authenticate | ||||
the requesting client, if necessary. The server will then return a | ||||
Bind Response to the client indicating the status of the | ||||
authentication. | ||||
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 lower layer security | outside of the LDAP Bind Request, such as lower layer security | |||
services. | services. | |||
4.2.1. Sequencing of the Bind Request | 4.2.1. Processing of the Bind Request | |||
Upon receipt of a BindRequest, the server MUST ensure there are no | ||||
outstanding operations in progress on the connection (This simplifies | ||||
server implementation). The server then proceeds to authenticate the | ||||
client in either a single-step, or multi-step bind process. Each step | ||||
requires the server to return a BindResponse to indicate the status | ||||
of authentication. | ||||
If the client did not bind before sending a request and receives an | ||||
operationsError, it may then send a Bind Request. If 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 first sending a | ||||
PDU with a Bind Request. This will aid in interoperating with servers | ||||
implementing other versions of LDAP. | ||||
Clients MAY send multiple Bind Requests on a connection to change | ||||
their credentials. Authentication from earlier binds is subsequently | ||||
ignored. A failed or abandoned Bind Operation has the effect of | ||||
leaving the connection in an anonymous state. To arrive at a known | ||||
authentication state after abandoning a bind operation, clients may | ||||
unbind, rebind, or make use of the BindResponse. If a SASL transfer | ||||
encryption or integrity mechanism has been negotiated, and that | ||||
mechanism does not support the changing of credentials from one | ||||
identity to another, then the client MUST instead establish a new | ||||
connection. | ||||
For some SASL authentication mechanisms, it may be necessary for the | For some SASL authentication mechanisms, it may be necessary for the | |||
client to invoke the BindRequest multiple times. If at any stage the | client to invoke the BindRequest multiple times. If at any stage the | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 13 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
client wishes to abort the bind process it MAY unbind and then drop | client wishes to abort the bind process it MAY unbind and then drop | |||
the underlying connection. Clients MUST NOT invoke operations between | the underlying connection. Clients MUST NOT invoke operations between | |||
two Bind requests made as part of a multi-stage bind. | two Bind Requests made as part of a multi-stage bind. | |||
A client may abort a SASL bind negotiation by sending a BindRequest | A client may abort a SASL bind negotiation by sending a BindRequest | |||
with a different value in the mechanism field of SaslCredentials, or | with a different value in the mechanism field of SaslCredentials, or | |||
an AuthenticationChoice other than sasl. | an AuthenticationChoice other than sasl. | |||
If the client sends a BindRequest with the sasl mechanism field as an | If the client sends a BindRequest with the sasl mechanism field as an | |||
empty string, the server MUST return a BindResponse with | empty string, the server MUST return a BindResponse with | |||
authMethodNotSupported as the resultCode. This will allow clients to | authMethodNotSupported as the resultCode. This will allow clients to | |||
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. | |||
If the client did not bind before sending a request and receives an | ||||
operationsError, it may then send a Bind Request. If this also fails | ||||
or the client chooses not to bind on the existing connection, it will | ||||
close the connection, reopen it and begin again by first sending a | ||||
PDU with a Bind Request. This will aid in interoperating with servers | ||||
implementing other versions of LDAP. | ||||
Clients MAY send multiple bind requests on a connection to change | ||||
their credentials. A subsequent bind process has the effect of | ||||
abandoning all operations outstanding on the connection. (This | ||||
simplifies server implementation.) Authentication from earlier binds | ||||
Sermersheim Internet-Draft - Expires May 2003 Page 13 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
are subsequently ignored, and so if the bind fails, the connection | ||||
will be treated as anonymous. If a SASL transfer encryption or | ||||
integrity mechanism has been negotiated, and that mechanism does not | ||||
support the changing of credentials from one identity to another, | ||||
then the client MUST instead establish a new connection. | ||||
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. | |||
skipping to change at line 776 | skipping to change at line 778 | |||
- inappropriateAuthentication: the server requires the client which | - inappropriateAuthentication: the server requires the client which | |||
had attempted to bind anonymously or without supplying credentials | had attempted to bind anonymously or without supplying credentials | |||
to provide some form of credentials. | to provide some form of credentials. | |||
- invalidCredentials: the wrong password was supplied or the SASL | - invalidCredentials: the wrong password was supplied or the SASL | |||
credentials could not be processed. | credentials could not be processed. | |||
- unavailable: the server is shutting down. | - unavailable: the server is shutting down. | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 14 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
If the server does not support the client's requested protocol | If the server does not support the client's requested protocol | |||
version, it MUST set the resultCode to protocolError. | version, it MUST set the resultCode to protocolError. | |||
If the client receives a BindResponse response where the resultCode | If the client receives a BindResponse response where the resultCode | |||
was protocolError, it MUST close the connection as the server will be | was protocolError, it MUST close the connection as the server will be | |||
unwilling to accept further operations. (This is for compatibility | unwilling to accept further operations. (This is for compatibility | |||
with earlier versions of LDAP, in which the bind was always the first | with earlier versions of LDAP, in which the bind was always the first | |||
operation, and there was no negotiation.) | operation, and there was no negotiation.) | |||
Sermersheim Internet-Draft - Expires May 2003 Page 14 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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 is not to be included in the result. | field is not to be included in the result. | |||
4.3. Unbind Operation | 4.3. Unbind Operation | |||
The function of the Unbind Operation is to terminate a protocol | The function of the Unbind Operation is to terminate a protocol | |||
skipping to change at line 829 | skipping to change at line 831 | |||
the messageID is 0 and protocolOp is of the extendedResp form. The | the messageID is 0 and protocolOp is of the extendedResp form. The | |||
responseName field of the ExtendedResponse is present. The LDAPOID | responseName field of the ExtendedResponse is present. The LDAPOID | |||
value MUST be unique for this notification, and not be used in any | value MUST be unique for this notification, and not be used in any | |||
other situation. | other situation. | |||
One unsolicited notification (Notice of Disconnection) is defined in | One unsolicited notification (Notice of Disconnection) is defined in | |||
this document. | this document. | |||
4.4.1. Notice of Disconnection | 4.4.1. Notice of Disconnection | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 15 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
Sermersheim Internet-Draft - Expires May 2003 Page 15 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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 resultCode values are to be used in this notification: | The following resultCode values are to be used in this 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 | |||
skipping to change at line 884 | skipping to change at line 886 | |||
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) }, | |||
derefAliases ENUMERATED { | derefAliases ENUMERATED { | |||
neverDerefAliases (0), | neverDerefAliases (0), | |||
derefInSearching (1), | derefInSearching (1), | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 16 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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 AttributeDescriptionList } | attributes AttributeDescriptionList } | |||
Filter ::= CHOICE { | Filter ::= CHOICE { | |||
Sermersheim Internet-Draft - Expires May 2003 Page 16 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
and [0] SET SIZE (1..MAX) OF Filter, | and [0] SET SIZE (1..MAX) OF Filter, | |||
or [1] SET SIZE (1..MAX) OF Filter, | or [1] SET SIZE (1..MAX) OF 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, | |||
present [7] AttributeDescription, | present [7] AttributeDescription, | |||
approxMatch [8] AttributeValueAssertion, | approxMatch [8] AttributeValueAssertion, | |||
extensibleMatch [9] MatchingRuleAssertion } | extensibleMatch [9] MatchingRuleAssertion } | |||
skipping to change at line 943 | skipping to change at line 945 | |||
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: | |||
neverDerefAliases: do not dereference aliases in searching | neverDerefAliases: do not dereference aliases in searching | |||
or in locating the base object of the search; | or in locating the base object of the search; | |||
derefInSearching: dereference aliases in subordinates of | derefInSearching: dereference aliases in subordinates of | |||
the base object in searching, but not in locating the base | the base object in searching, but not in locating the base | |||
object of the search; | object of the search; | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 17 | ||||
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. | |||
Sermersheim Internet-Draft - Expires May 2003 Page 17 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- 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 0 in | |||
this field indicates that no client-requested size limit | 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 0 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. | effect for the search. | |||
skipping to change at line 999 | skipping to change at line 1001 | |||
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 | |||
subtype of the specified attribute description present in an | subtype of the specified attribute description present in an | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 18 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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 and assertion syntax for equalityMatch filter | The matching rule and assertion syntax for equalityMatch filter | |||
items is defined by the EQUALITY matching rule for the attribute | items is defined by the EQUALITY matching rule for the attribute | |||
type. | type. | |||
Sermersheim Internet-Draft - Expires May 2003 Page 18 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
The matching rule and assertion syntax for AssertionValues in a | The matching rule and assertion syntax for AssertionValues in a | |||
substrings filter item is defined by the SUBSTR matching rule for | substrings filter item is defined by the SUBSTR matching rule for | |||
the attribute type. | the attribute type. | |||
The matching rule and assertion syntax for greaterOrEqual and | The matching rule and assertion syntax for greaterOrEqual and | |||
lessOrEqual filter items is defined by the ORDERING matching rule | lessOrEqual filter items is defined by the ORDERING matching rule | |||
for the attribute type. | for the attribute type. | |||
The matching rule and assertion syntax for approxMatch filter | The matching rule and assertion syntax for approxMatch filter | |||
items is implementation-defined. If approximate matching is not | items is implementation-defined. If approximate matching is not | |||
skipping to change at line 1035 | skipping to change at line 1038 | |||
is absent and matchingRule is present, the matchValue is compared | is absent and matchingRule is present, the matchValue is compared | |||
against all attributes in an entry which support that | against all attributes in an entry which support that | |||
matchingRule, and the matchingRule determines the syntax for the | matchingRule, and the matchingRule determines the syntax for the | |||
assertion value (the filter item evaluates to TRUE if it matches | assertion value (the filter item evaluates to TRUE if it matches | |||
with at least one attribute in the entry, FALSE if it does not | with at least one attribute in the entry, FALSE if it does not | |||
match any attribute in the entry, and Undefined if the | match any attribute in the entry, and Undefined if the | |||
matchingRule is not recognized or the assertionValue cannot be | matchingRule is not recognized or the assertionValue cannot be | |||
parsed.) If the type field is present and matchingRule is present, | parsed.) If the type field is present and matchingRule is present, | |||
the matchingRule MUST be one permitted for use with that type, | the matchingRule MUST be one permitted for use with that type, | |||
otherwise the filter item is undefined. If the dnAttributes field | otherwise the filter item is undefined. If the dnAttributes field | |||
is set to TRUE, the match is applied against all the attributes in | is set to TRUE, the match is applied against all the | |||
an entry's distinguished name as well, and also evaluates to TRUE | AttributeValueAssertions in an entry's distinguished name as well, | |||
if there is at least one attribute in the distinguished name for | and also evaluates to TRUE if there is at least one attribute in | |||
which the filter item evaluates to TRUE. (Editors note: The | the distinguished name for which the filter item evaluates to | |||
dnAttributes field is present so that there does not need to be | TRUE. (Editors note: The dnAttributes field is present so that | |||
multiple versions of generic matching rules such as for word | there does not need to be multiple versions of generic matching | |||
matching, one to apply to entries and another to apply to entries | rules such as for word matching, one to apply to entries and | |||
and dn attributes as well). | another to apply 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 cannot be parsed, or the type of filtering requested is not | value cannot be parsed, 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. | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 19 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Servers MUST NOT return errors if attribute descriptions or | Servers MUST NOT return errors if attribute descriptions or | |||
matching rule ids are not recognized, or assertion values cannot | matching rule ids are not recognized, or assertion values cannot | |||
be parsed. More details of filter processing are given in section | be parsed. More details of filter processing are given in section | |||
7.8 of [X.511]. | 7.8 of [X.511]. | |||
Sermersheim Internet-Draft - Expires May 2003 Page 19 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- 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. There are two special | entry which matches the search filter. There are two special | |||
values which may be used: an empty list with no attributes, and | values which may be used: an empty list with no attributes, and | |||
the attribute description string "*". Both of these signify that | the attribute description string "*". Both of these signify that | |||
all user attributes are to be returned. (The "*" allows the client | all user attributes are to be returned. (The "*" allows the client | |||
to request all user attributes in addition to any specified | to request all user attributes in addition to any specified | |||
operational attributes). | operational attributes). | |||
Attributes MUST be named at most once in the list, and are | Attributes MUST be named at most 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 | |||
skipping to change at line 1112 | skipping to change at line 1115 | |||
The results of the search attempted by the server upon receipt of a | The results of the search attempted by the server upon receipt of a | |||
Search Request are returned in Search Responses, which are LDAP | Search Request are returned in Search Responses, which are LDAP | |||
messages containing either SearchResultEntry, SearchResultReference, | messages containing either SearchResultEntry, SearchResultReference, | |||
or SearchResultDone data types. | or SearchResultDone data types. | |||
SearchResultEntry ::= [APPLICATION 4] SEQUENCE { | SearchResultEntry ::= [APPLICATION 4] SEQUENCE { | |||
objectName LDAPDN, | objectName LDAPDN, | |||
attributes PartialAttributeList } | attributes PartialAttributeList } | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 20 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
PartialAttributeList ::= SEQUENCE OF SEQUENCE { | PartialAttributeList ::= SEQUENCE OF SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
-- implementors should note that the PartialAttributeList may | -- implementors should note that the PartialAttributeList may | |||
-- have zero elements (if none of the attributes of that entry | -- have zero elements (if none of the attributes of that entry | |||
-- were requested, or could be returned), and that the vals set | -- were requested, or could be returned), and that the vals set | |||
Sermersheim Internet-Draft - Expires May 2003 Page 20 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
-- may also have zero elements (if types only was requested, or | -- may also have zero elements (if types only was requested, or | |||
-- all values were excluded from the result.) | -- all values were excluded from the result.) | |||
SearchResultReference ::= [APPLICATION 19] SEQUENCE OF LDAPURL | SearchResultReference ::= [APPLICATION 19] SEQUENCE OF LDAPURL | |||
-- at least one LDAPURL element must be present | -- at least one LDAPURL element must be present | |||
SearchResultDone ::= [APPLICATION 5] LDAPResult | SearchResultDone ::= [APPLICATION 5] LDAPResult | |||
Upon receipt of a Search Request, a server will perform the necessary | Upon receipt of a Search Request, a server will perform the necessary | |||
search of the DIT. | search of the DIT. | |||
skipping to change at line 1147 | skipping to change at line 1149 | |||
during the search. There may also be zero or more responses | during the search. There may also be zero or more responses | |||
containing SearchResultReference, one for each area not explored by | containing SearchResultReference, one for each area not explored by | |||
this server during the search. The SearchResultEntry and | this server during the search. The SearchResultEntry and | |||
SearchResultReference PDUs may come in any order. Following all the | SearchResultReference PDUs may come in any order. Following all the | |||
SearchResultReference responses and all SearchResultEntry responses | SearchResultReference responses and all SearchResultEntry responses | |||
to be returned by the server, the server will return a response | to be returned by the server, the server will return a response | |||
containing the SearchResultDone, which contains an indication of | containing the SearchResultDone, which contains an indication of | |||
success, or detailing any errors that have occurred. | success, or detailing any errors that have occurred. | |||
Each entry returned in a SearchResultEntry will contain all | Each entry returned in a SearchResultEntry will contain all | |||
attributes, complete with associated values if necessary, as | appropriate attributes as specified in the attributes field of the | |||
specified in the attributes field of the Search Request. Return of | Search Request. Return of attributes is subject to access control and | |||
attributes is subject to access control and other administrative | other administrative policy. | |||
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 | |||
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 a textual name for an attribute type, | If the server's schema defines a textual name for an attribute type, | |||
it MUST use a textual name for attributes of that attribute type by | it MUST use a textual name for attributes of that attribute type by | |||
specifying one of the textual names as the value of the attribute | specifying one of the textual names as the value of the attribute | |||
type. Otherwise, the server uses the object identifier for the | type. Otherwise, the server uses the object identifier for the | |||
attribute type by specifying the object identifier, in ldapOID form, | attribute type by specifying the object identifier, in ldapOID form, | |||
as the value of attribute type. | as the value of attribute type. | |||
4.5.3. Continuation References in the Search Result | 4.5.3. Continuation References in the Search Result | |||
If the server was able to locate the entry referred to by the | If the server was able to locate the entry referred to by the | |||
baseObject but was unable to search all the entries in the scope at | baseObject but was unable to search all the entries in the scope at | |||
and under the baseObject, the server may return one or more | and under the baseObject, the server may return one or more | |||
SearchResultReference entries, each containing a reference to another | SearchResultReference entries, each containing a reference to another | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 21 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
set of servers for continuing the operation. A server MUST NOT return | set of servers for continuing the operation. A server MUST NOT return | |||
any SearchResultReference if it has not located the baseObject and | any SearchResultReference if it has not located the baseObject and | |||
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 resultCode. | SearchResultDone containing a referral resultCode. | |||
Sermersheim Internet-Draft - Expires May 2003 Page 21 | If a server holds a copy or partial copy of the subordinate naming | |||
Lightweight Directory Access Protocol Version 3 | context, it may use the search filter to determine whether or not to | |||
return a SearchResultReference response. Otherwise | ||||
In the absence of indexing information provided to a server from | SearchResultReference responses are always returned when in scope. | |||
servers holding subordinate naming contexts, SearchResultReference | ||||
responses are not affected by search filters and 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. | |||
URLs for servers implementing the LDAP protocol are written according | URLs for servers implementing the LDAP protocol are written according | |||
to [LDAPDN]. The <dn> part MUST be present in the URL, with the new | to [LDAPDN]. The <dn> part MUST be present in the URL, with the new | |||
target object name. The client MUST use this name in its next | target object name. The client MUST use this name in its next | |||
request. Some servers (e.g. part of a distributed index exchange | request. Some servers (e.g. part of a distributed index exchange | |||
system) may provide a different filter in the URLs of the | system) may provide a different filter in the URLs of the | |||
SearchResultReference. If the filter part of the URL is present in an | SearchResultReference. If the filter part of the URL is present in an | |||
LDAP URL, the client MUST use the new filter in its next request to | LDAP URL, the client MUST use the new filter in its next request to | |||
progress the search, and if the filter part is absent the client will | progress the search, and if the filter part is absent the client will | |||
skipping to change at line 1226 | skipping to change at line 1228 | |||
"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 | |||
ldap://hostc/OU=People,DC=Example,DC=NET | ldap://hostc/OU=People,DC=Example,DC=NET | |||
} | } | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 22 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
SearchResultReference { | SearchResultReference { | |||
ldap://hostd/OU=Roles,DC=Example,DC=NET | ldap://hostd/OU=Roles,DC=Example,DC=NET | |||
} | } | |||
SearchResultDone (success) | SearchResultDone (success) | |||
Sermersheim Internet-Draft - Expires May 2003 Page 22 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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 | |||
} | } | |||
skipping to change at line 1281 | skipping to change at line 1284 | |||
modification AttributeTypeAndValues } } | modification AttributeTypeAndValues } } | |||
AttributeTypeAndValues ::= SEQUENCE { | AttributeTypeAndValues ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
Parameters of the Modify Request are: | Parameters of the Modify Request are: | |||
- object: The object to be modified. The value of this field | - object: The object to be modified. The value of this field | |||
contains the DN of the entry to be modified. The server will not | contains the DN of the entry to be modified. The server will not | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 23 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
perform any alias dereferencing in determining the object to be | perform any alias dereferencing in determining the object to be | |||
modified. | modified. | |||
- modification: A list of modifications to be performed on the | - modification: A list of modifications to be performed on the | |||
entry. The entire list of entry modifications MUST be performed in | entry. The entire list of entry modifications MUST be performed in | |||
the order they are listed, as a single atomic operation. While | the order they are listed, as a single atomic operation. While | |||
Sermersheim Internet-Draft - Expires May 2003 Page 23 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
individual modifications may violate the directory schema, the | individual modifications may violate the directory schema, 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. The values that may be taken on by the 'operation' field | schema. The values that may be taken on by the 'operation' field | |||
in each modification construct have the following semantics | in each modification construct have the following semantics | |||
respectively: | respectively: | |||
add: add values listed to the given attribute, creating the | add: add values listed to the given attribute, creating the | |||
attribute if necessary; | attribute if necessary; | |||
skipping to change at line 1338 | skipping to change at line 1341 | |||
performed if the Modify Response indicates successful completion of | performed if the Modify Response indicates successful completion of | |||
the Modify Operation. If the connection fails, whether the | the Modify Operation. If the connection fails, whether the | |||
modification occurred or not is indeterminate. | 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, those values which form the entry's | its distinguished values, 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 error notAllowedOnRDN. The Modify DN Operation | server returning the error notAllowedOnRDN. The Modify DN Operation | |||
described in section 4.9 is used to rename an entry. | described in section 4.9 is used to rename an entry. | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 24 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
If an EQUALITY matching rule has not been defined for an attribute | If an EQUALITY matching rule has not been defined for an attribute | |||
type, clients MUST NOT attempt to add or delete individual values of | type, clients MUST NOT attempt to add or delete individual values of | |||
that attribute from an entry using the "add" or "delete" form of a | that attribute from an entry using the "add" or "delete" form of a | |||
modification, and MUST instead use the "replace" form. | modification, and MUST instead use the "replace" form. | |||
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 modifications in an LDAP ModifyRequest onto the | direct mapping of the modifications in an LDAP ModifyRequest onto the | |||
Sermersheim Internet-Draft - Expires May 2003 Page 24 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
EntryModifications of a DAP ModifyEntry operation, and different | EntryModifications of a DAP ModifyEntry operation, and different | |||
implementations of LDAP-DAP gateways may use different means of | implementations of LDAP-DAP gateways may use different means of | |||
representing the change. If successful, the final effect of the | representing the change. If successful, the final effect of the | |||
operations on the entry MUST be identical. | operations on the entry MUST be identical. | |||
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: | |||
skipping to change at line 1396 | skipping to change at line 1398 | |||
the error noSuchObject with the matchedDN field containing "DC=NET". | the error noSuchObject with the matchedDN field containing "DC=NET". | |||
If the parent entry exists but is not in a naming context held by the | If the parent entry exists but is not in a naming context held by the | |||
server, the server SHOULD return a referral to the server holding the | server, the server SHOULD return a referral to the server holding the | |||
parent entry. | parent entry. | |||
Servers implementations SHOULD NOT restrict where entries can be | Servers implementations SHOULD NOT restrict where entries can be | |||
located in the directory unless DIT structure rules are in place. | located in the directory unless DIT structure rules are in place. | |||
Some servers MAY allow the administrator to restrict the classes of | Some servers MAY allow the administrator to restrict the classes of | |||
entries which can be added to the directory. | entries which can be added to the directory. | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 25 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Upon receipt of an Add Request, a server will attempt to perform the | Upon receipt of an Add Request, a server will attempt to perform the | |||
add requested. The result of the add attempt will be returned to the | add requested. The result of the add attempt will be returned to the | |||
client in the Add Response, defined as follows: | client in the Add Response, defined as follows: | |||
AddResponse ::= [APPLICATION 9] LDAPResult | AddResponse ::= [APPLICATION 9] LDAPResult | |||
Sermersheim Internet-Draft - Expires May 2003 Page 25 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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 | |||
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 | |||
skipping to change at line 1434 | skipping to change at line 1436 | |||
DelResponse ::= [APPLICATION 11] LDAPResult | DelResponse ::= [APPLICATION 11] LDAPResult | |||
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. The result of the delete attempt will be | the entry removal requested. The result of the delete attempt will be | |||
returned to the client in the Delete Response. | returned to the client in the Delete Response. | |||
4.9. Modify DN Operation | 4.9. Modify DN Operation | |||
The Modify DN Operation allows a client to change the leftmost (least | The Modify DN Operation allows a client to change the leftmost (least | |||
significant) component of the name of an entry in the directory, or | significant) component of the name of an entry in the directory, | |||
to move a subtree of entries to a new location in the directory. The | and/or to move a subtree of entries to a new location in the | |||
Modify DN Request is defined as follows: | directory. The Modify DN Request is defined as follows: | |||
ModifyDNRequest ::= [APPLICATION 12] SEQUENCE { | ModifyDNRequest ::= [APPLICATION 12] SEQUENCE { | |||
entry LDAPDN, | entry LDAPDN, | |||
newrdn RelativeLDAPDN, | newrdn RelativeLDAPDN, | |||
deleteoldrdn BOOLEAN, | deleteoldrdn BOOLEAN, | |||
newSuperior [0] LDAPDN OPTIONAL } | newSuperior [0] LDAPDN OPTIONAL } | |||
Parameters of the Modify DN Request are: | Parameters of the Modify DN Request are: | |||
- entry: the Distinguished Name of the entry to be changed. This | - entry: the Distinguished Name of the entry to be changed. This | |||
entry may or may not have subordinate entries. Note that the | entry may or may not have subordinate entries. Note that the | |||
server will not dereference any aliases in locating the entry to | server will not dereference any aliases in locating the entry to | |||
be changed. | be changed. | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 26 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- newrdn: the RDN that will form the leftmost component of the new | - newrdn: the RDN that will form the leftmost component of the new | |||
name of the entry. | name of the entry. | |||
- deleteoldrdn: a boolean parameter that controls whether the old | - deleteoldrdn: a boolean parameter that controls whether the old | |||
RDN attribute values are to be retained as attributes of the | RDN attribute values are to be retained as attributes of the | |||
entry, or deleted from the entry. | entry, or deleted from the entry. | |||
Sermersheim Internet-Draft - Expires May 2003 Page 26 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- newSuperior: if present, this is the Distinguished Name of the | - newSuperior: if present, this is the Distinguished Name of the | |||
entry which becomes the immediate superior of the existing entry. | entry which becomes the immediate superior of the existing entry. | |||
The result of the name change attempted by the server upon receipt of | The result of the name change attempted by the server upon receipt of | |||
a Modify DN Request is returned in the Modify DN Response, defined as | a Modify DN Request is returned in the Modify DN Response, defined as | |||
follows: | follows: | |||
ModifyDNResponse ::= [APPLICATION 13] LDAPResult | ModifyDNResponse ::= [APPLICATION 13] LDAPResult | |||
Upon receipt of a ModifyDNRequest, a server will attempt to perform | Upon receipt of a ModifyDNRequest, a server will attempt to perform | |||
skipping to change at line 1507 | skipping to change at line 1509 | |||
The Compare Operation allows a client to compare an assertion | The Compare Operation allows a client to compare an assertion | |||
provided with an entry in the directory. The Compare Request is | provided with an entry in the directory. The Compare Request is | |||
defined as follows: | defined as follows: | |||
CompareRequest ::= [APPLICATION 14] SEQUENCE { | CompareRequest ::= [APPLICATION 14] SEQUENCE { | |||
entry LDAPDN, | entry LDAPDN, | |||
ava AttributeValueAssertion } | ava AttributeValueAssertion } | |||
Parameters of the Compare Request are: | Parameters of the Compare Request are: | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 27 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- entry: the name of the entry to be compared with. Note that the | - entry: the name of the entry to be compared with. Note that the | |||
server SHOULD NOT dereference any aliases in locating the entry to | server SHOULD NOT dereference any aliases in locating the entry to | |||
be compared with. | be compared with. | |||
- 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. | |||
Sermersheim Internet-Draft - Expires May 2003 Page 27 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
The result of the compare attempted by the server upon receipt of a | The result of the compare attempted by the server upon receipt of a | |||
Compare Request is returned in the Compare Response, defined as | Compare Request is returned in the Compare Response, defined as | |||
follows: | follows: | |||
CompareResponse ::= [APPLICATION 15] LDAPResult | CompareResponse ::= [APPLICATION 15] LDAPResult | |||
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. The result of the comparison will be returned to the | attribute type. The result of the comparison will be returned to the | |||
client in the Compare Response. Note that errors and the result of | client in the Compare Response. Note that errors and the result of | |||
comparison are all returned in the same construct. | comparison 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 read. | compared but not interrogated by other means. | |||
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 | |||
skipping to change at line 1561 | skipping to change at line 1563 | |||
abandoned by performing a subsequent bind operation. | abandoned by performing a subsequent bind operation. | |||
Abandon and Unbind operations cannot be abandoned. The ability to | Abandon and Unbind operations cannot be abandoned. The ability to | |||
abandon other (particularly update) operations is at the discretion | abandon other (particularly update) operations is at the discretion | |||
of the server. | of the server. | |||
In the event that a server receives an Abandon Request on a Search | In the event that a server receives an Abandon Request on a Search | |||
Operation in the midst of transmitting responses to the search, that | Operation in the midst of transmitting responses to the search, that | |||
server MUST cease transmitting entry responses to the abandoned | server MUST cease transmitting entry responses to the abandoned | |||
request immediately, and MUST NOT send the SearchResponseDone. Of | request immediately, and MUST NOT send the SearchResponseDone. Of | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 28 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
course, the server MUST ensure that only properly encoded LDAPMessage | course, the server MUST ensure that only properly encoded LDAPMessage | |||
PDUs are transmitted. | PDUs are transmitted. | |||
Clients MUST NOT send abandon requests for the same operation | Clients MUST NOT send abandon requests for the same operation | |||
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). | |||
Sermersheim Internet-Draft - Expires May 2003 Page 28 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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 | |||
An extension mechanism has been added in this version of LDAP, in | An extension mechanism has been added in this version of LDAP, in | |||
order to allow additional operations to be defined for services not | order to allow additional operations to be defined for services not | |||
available elsewhere in this protocol, for instance digitally signed | available elsewhere in this protocol, for instance digitally signed | |||
operations and results. | operations and results. | |||
skipping to change at line 1617 | skipping to change at line 1620 | |||
protocolError result code. | protocolError result code. | |||
4.13. Start TLS Operation | 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 [RFC2246] on an LDAP | |||
connection. | connection. | |||
4.13.1. Start TLS Request | 4.13.1. Start TLS Request | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 29 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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 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. | |||
Sermersheim Internet-Draft - Expires May 2003 Page 29 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
skipping to change at line 1672 | skipping to change at line 1675 | |||
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]. | |||
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 to protocolError, or to | configuration), it MUST set the resultCode to protocolError, or to | |||
referral. The server MUST include an actual referral value in the | referral. The server MUST include an actual referral value in the | |||
LDAP Result if it returns a resultCode of referral. The client's | LDAP Result if it returns a resultCode of referral. The client's | |||
current session is unaffected if the server does not support TLS. The | current session is unaffected if the server does not support TLS. The | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 30 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
client MAY proceed with any LDAP operation, or it MAY close the | client MAY proceed with any LDAP operation, or it MAY close the | |||
connection. | 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 | |||
Sermersheim Internet-Draft - Expires May 2003 Page 30 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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 connection. | operation, or it MAY close the connection. | |||
4.13.3. Closing a TLS Connection | 4.13.3. Closing a TLS Connection | |||
Two forms of TLS connection closure--graceful and abrupt--are | Two forms of TLS connection closure--graceful and abrupt--are | |||
supported. | supported. | |||
4.13.3.1. Graceful Closure | 4.13.3.1. Graceful Closure | |||
Either the client or server MAY terminate the TLS connection on an | Either the client or server MAY terminate the TLS connection and | |||
LDAP association by sending a TLS closure alert. | leave the LDAP session intact by sending a TLS closure alert. | |||
Before closing a TLS connection, the client MUST either wait for any | Before sending a TLS closure alert, the client MUST either wait for | |||
outstanding LDAP operations to complete, or explicitly abandon them. | any outstanding LDAP operations to complete, or explicitly abandon | |||
them. | ||||
After the initiator of a close has sent a TLS closure alert, it MUST | After the initiator of a close has sent a TLS closure alert, it MUST | |||
discard any TLS messages until it has received a TLS closure alert | discard any TLS messages until it has received a TLS closure alert | |||
from the other party. It will cease to send TLS Record Protocol | from the other party. It will cease to send TLS Record Protocol | |||
PDUs, and following the receipt of the alert, MAY send and receive | PDUs, and following the receipt of the alert, MAY send and receive | |||
LDAP PDUs. | LDAP PDUs. | |||
The other party, if it receives a TLS closure alert, MUST immediately | The other party, if it receives a TLS closure alert, MUST immediately | |||
transmit a TLS closure alert. It will subsequently cease to send TLS | transmit a TLS closure alert. It will subsequently cease to send TLS | |||
Record Protocol PDUs, and MAY send and receive LDAP PDUs. | Record Protocol PDUs, and MAY send and receive LDAP PDUs. | |||
4.13.3.2. Abrupt Closure | 4.13.3.2. Abrupt Closure | |||
Either the client or server MAY abruptly close the entire LDAP | Either the client or server MAY abruptly close the TLS connection by | |||
association and any TLS connection established on it by dropping the | dropping the underlying transfer protocol connection. In this | |||
underlying TCP connection. In this circumstance, a server MAY send | circumstance, a server MAY send the client a Notice of Disconnection | |||
the client a Notice of Disconnection before dropping the TCP | before dropping the underlying connection. | |||
connection. | ||||
5. Protocol Element Encodings and Transfer | 5. Protocol Element Encodings and Transfer | |||
One underlying service is defined here. Clients and servers SHOULD | One underlying service is defined here. Clients and servers SHOULD | |||
implement the mapping of LDAP over TCP described in 5.2.1. | implement the mapping of LDAP over TCP described in 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 are encoded for exchange using the | |||
Basic Encoding Rules (BER) [X.690] of ASN.1 [X.680]. However, due to | Basic Encoding Rules (BER) [X.690] of ASN.1 [X.680]. However, due to | |||
the high overhead involved in using certain elements of the BER, the | the high overhead involved in using certain elements of the BER, the | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 31 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
following additional restrictions are placed on BER-encodings of LDAP | following additional restrictions are placed on BER-encodings of LDAP | |||
protocol elements: | protocol elements: | |||
(1) Only the definite form of length encoding will be used. | (1) Only the definite form of length encoding will be used. | |||
(2) OCTET STRING values will be encoded in the primitive form only. | (2) OCTET STRING values will be encoded in the primitive form only. | |||
Sermersheim Internet-Draft - Expires May 2003 Page 31 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
(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 MUST have | |||
its contents octets set to hex "FF". | its contents octets 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 MUST be absent. | |||
Only some BOOLEAN and INTEGER types have default values in this | Only some BOOLEAN and INTEGER types have default values in this | |||
protocol definition. | protocol definition. | |||
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. | noted. | |||
skipping to change at line 1779 | skipping to change at line 1783 | |||
The server MUST be capable of recognizing all the mandatory attribute | The server MUST be capable of recognizing all the mandatory attribute | |||
type names and implement the syntaxes specified in [Syntaxes]. | type names and implement the syntaxes specified in [Syntaxes]. | |||
Servers MAY also recognize additional attribute type names. | Servers MAY also recognize additional attribute type names. | |||
6.2. Client Implementations | 6.2. Client Implementations | |||
Clients which request referrals MUST ensure that they do not loop | Clients which request referrals MUST ensure that they do not loop | |||
between servers. They MUST NOT repeatedly contact the same server for | between servers. They MUST NOT repeatedly contact the same server for | |||
the same request with the same target entry name, scope and filter. | the same request with the same target entry name, scope and filter. | |||
Some clients may be using a counter that is incremented each time | Some clients may be using a counter that is incremented each time | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 32 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
referral handling occurs for an operation, and these kinds of clients | referral handling occurs for an operation, and these kinds of clients | |||
MUST be able to handle a DIT with at least ten layers of naming | MUST be able to handle a DIT with at least ten layers of naming | |||
contexts between the root and a leaf entry. | contexts between the root and a leaf entry. | |||
In the absence of prior agreements with servers, clients SHOULD NOT | In the absence of prior agreements with servers, clients SHOULD NOT | |||
assume that servers support any particular schemas beyond those | assume that servers support any particular schemas beyond those | |||
referenced in section 6.1. Different schemas can have different | referenced in section 6.1. Different schemas can have different | |||
Sermersheim Internet-Draft - Expires May 2003 Page 32 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
attribute types with the same names. The client can retrieve the | attribute types with the same names. The client can retrieve the | |||
subschema entries referenced by the subschemaSubentry attribute in | subschema entries referenced by the subschemaSubentry attribute in | |||
the server's root DSE or in entries held by the server. | the server's root DSE or in entries held by the server. | |||
7. Security Considerations | 7. Security Considerations | |||
When used with a connection-oriented transport, this version of the | When used with a connection-oriented transport, this version of the | |||
protocol provides facilities for simple authentication using a | protocol provides facilities for simple authentication using a | |||
cleartext password, as well as any SASL mechanism [RFC2222]. SASL | cleartext password, as well as any SASL mechanism [RFC2222]. SASL | |||
allows for integrity and privacy services to be negotiated. | allows for integrity and privacy services to be negotiated. | |||
skipping to change at line 1834 | skipping to change at line 1838 | |||
This document is an update to RFC 2251, by Mark Wahl, Tim Howes, and | 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 | Steve Kille. Their work along with the input of individuals of the | |||
IETF LDAPEXT, LDUP, LDAPBIS, and other Working Groups is gratefully | IETF LDAPEXT, LDUP, LDAPBIS, and other Working Groups is gratefully | |||
acknowledged. | acknowledged. | |||
9. Normative References | 9. Normative References | |||
[X.500] ITU-T Rec. X.500, "The Directory: Overview of Concepts, | [X.500] ITU-T Rec. X.500, "The Directory: Overview of Concepts, | |||
Models and Service", 1993. | Models and Service", 1993. | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 33 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
[Roadmap] K. Zeilenga (editor), "LDAP: Technical Specification Road | [Roadmap] K. Zeilenga (editor), "LDAP: Technical Specification Road | |||
Map", draft-ietf-ldapbis-roadmap-xx.txt (a work in | Map", draft-ietf-ldapbis-roadmap-xx.txt (a work in | |||
progress). | progress). | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", RFC 2119, March 1997. | Requirement Levels", RFC 2119, March 1997. | |||
Sermersheim Internet-Draft - Expires May 2003 Page 33 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
[X.680] ITU-T Recommendation X.680 (1997) | ISO/IEC 8824-1:1998 | [X.680] ITU-T Recommendation X.680 (1997) | ISO/IEC 8824-1:1998 | |||
Information Technology - Abstract Syntax Notation One | Information Technology - Abstract Syntax Notation One | |||
(ASN.1): Specification of basic notation | (ASN.1): Specification of basic notation | |||
[X.690] ITU-T Rec. X.690, "Specification of ASN.1 encoding rules: | [X.690] ITU-T Rec. X.690, "Specification of ASN.1 encoding rules: | |||
Basic, Canonical, and Distinguished Encoding Rules", 1994. | Basic, Canonical, and Distinguished Encoding Rules", 1994. | |||
[LDAPIANA] K. Zeilenga, "IANA Considerations for LDAP", draft-ietf- | [LDAPIANA] K. Zeilenga, "IANA Considerations for LDAP", draft-ietf- | |||
ldapbis-xx.txt (a work in progress). | ldapbis-xx.txt (a work in progress). | |||
[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. | |||
[RFC2044] Yergeau, F., "UTF-8, a transformation format of Unicode | [RFC2279] Yergeau, F., "UTF-8, a transformation format of Unicode | |||
and ISO 10646", RFC 2044, October 1996. | and ISO 10646", RFC 2279, January 1998. | |||
[Models] K. Zeilenga, "LDAP: The Models", draft-ietf-ldapbis- | [Models] K. Zeilenga, "LDAP: The Models", draft-ietf-ldapbis- | |||
models-xx.txt (a work in progress). | models-xx.txt (a work in progress). | |||
[LDAPDN] K. Zeilenga (editor), "LDAP: String Representation of | [LDAPDN] K. Zeilenga (editor), "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] K. Dally (editor), "LDAP: Syntaxes", draft-ietf-ldapbis- | [Syntaxes] K. Dally (editor), "LDAP: Syntaxes", draft-ietf-ldapbis- | |||
syntaxes-xx.txt, (a work in progress). | syntaxes-xx.txt, (a work in progress). | |||
skipping to change at line 1890 | skipping to change at line 1894 | |||
[AuthMeth] R. Harrison (editor), "LDAP: Authentication Methods", | [AuthMeth] R. Harrison (editor), "LDAP: Authentication Methods", | |||
draft-ietf-ldapbis-authmeth-xx.txt, (a work in progress). | draft-ietf-ldapbis-authmeth-xx.txt, (a work in progress). | |||
[RFC2222] Meyers, J., "Simple Authentication and Security Layer", | [RFC2222] Meyers, J., "Simple Authentication and Security Layer", | |||
RFC 2222, October 1997. | RFC 2222, October 1997. | |||
10. Editor's Address | 10. Editor's Address | |||
Jim Sermersheim | Jim Sermersheim | |||
Novell, Inc. | Novell, Inc. | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 34 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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 May 2003 Page 34 | Sermersheim Internet-Draft - Expires Jun 2003 Page 35 | |||
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. | |||
Client implementations SHALL treat any result code which they do not | Client implementations SHALL treat any result code which they do not | |||
skipping to change at line 1945 | skipping to change at line 1953 | |||
- a problem related to an update operation, | - a problem related to an update operation, | |||
3) Attribute Errors (codes 16 - 21) | 3) Attribute Errors (codes 16 - 21) | |||
- a problem related to a supplied attribute, | - a problem related to a supplied attribute, | |||
4) Security Errors (codes 8, 13, 48 - 50) | 4) Security Errors (codes 8, 13, 48 - 50) | |||
- a security related problem, | - a security related problem, | |||
5) Service Problem (codes 3, 4, 7, 11, 12, 51 - 54, 80) | 5) Service Problem (codes 3, 4, 7, 11, 12, 51 - 54, 80) | |||
- a problem related to the provision of the service, and | - a problem related to the provision of the service, and | |||
6) Protocol Problem (codes 1, 2) | 6) Protocol Problem (codes 1, 2) | |||
- a problem related to protocol structure or semantics. | - a problem related to protocol structure or semantics. | |||
Server implementations SHALL NOT continue processing an operation | If the server detects multiple errors simultaneously, the server | |||
after it has determined that an error is to be reported. If the | SHOULD report the error with the highest precedence. | |||
server detects multiple errors simultaneously, the server SHOULD | ||||
report the error with the highest precedence. | ||||
Existing LDAP result codes are described as follows: | Existing LDAP result codes are described as follows: | |||
Sermersheim Internet-Draft - Expires May 2003 Page 35 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
success (0) | success (0) | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 36 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Indicates successful completion of an operation. | Indicates successful completion of an operation. | |||
This result code is normally not returned by the compare | This result code is normally not returned by the compare | |||
operation, see compareFalse (5) and compareTrue (6). | operation, see compareFalse (5) and compareTrue (6). It is | |||
possible that a future extension mechanism would allow this | ||||
to be returned by a compare operation. | ||||
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 [RFC2830] while there are other operations | Start TLS [RFC2830] while there are other operations | |||
outstanding or if TLS was already established. | outstanding or if TLS was already established. | |||
skipping to change at line 2002 | skipping to change at line 2010 | |||
compareFalse (5) | compareFalse (5) | |||
Indicates that the operation successfully completes and the | Indicates that the operation successfully completes and the | |||
assertion has evaluated to TRUE. | assertion has evaluated to TRUE. | |||
This result code is normally only returned by the compare | This result code is normally only returned by the compare | |||
operation. | operation. | |||
compareTrue (6) | compareTrue (6) | |||
Sermersheim Internet-Draft - Expires May 2003 Page 36 | Sermersheim Internet-Draft - Expires Jun 2003 Page 37 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Indicates that the operation successfully completes and the | Indicates that the operation successfully completes and the | |||
assertion has evaluated to FALSE. | assertion has evaluated to FALSE. | |||
This result code is normally only returned by the compare | This result code is normally only returned by the compare | |||
operation. | operation. | |||
authMethodNotSupported (7) | authMethodNotSupported (7) | |||
skipping to change at line 2029 | skipping to change at line 2037 | |||
4.4.1), this indicates that the server requires the client to | 4.4.1), this indicates that the server requires the client to | |||
authentication using a strong(er) mechanism. | authentication using a strong(er) 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 admnistrative 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 server cannot perform a critical extension | |||
(see section 4.1.12). | (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. | |||
Sermersheim Internet-Draft - Expires May 2003 Page 37 | Sermersheim Internet-Draft - Expires Jun 2003 Page 38 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
undefinedAttributeType (17) | undefinedAttributeType (17) | |||
Indicates that a request field contains an undefined | Indicates that a request field contains an undefined | |||
attribute type. | attribute type. | |||
inappropriateMatching (18) | inappropriateMatching (18) | |||
Indicates that a request cannot be completed due to an | Indicates that a request cannot be completed due to an | |||
skipping to change at line 2090 | skipping to change at line 2098 | |||
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. | Indicates that an alias problem has occurred. Typically an | |||
alias has been dereferenced which names no object. | ||||
invalidDNSyntax (34) | invalidDNSyntax (34) | |||
Indicates that a LDAPDN or RelativeLDAPDN field (e.g. search | Indicates that a 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. | |||
Sermersheim Internet-Draft - Expires May 2003 Page 38 | Sermersheim Internet-Draft - Expires Jun 2003 Page 39 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
aliasDereferencingProblem (36) | aliasDereferencingProblem (36) | |||
Indicates that a problem in dereferencing an alias. | Indicates that a problem occurred while dereferencing an | |||
alias. Typically an alias was encountered in a situation | ||||
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 credentials are invalid. | Indicates the supplied credentials are invalid. | |||
skipping to change at line 2146 | skipping to change at line 2157 | |||
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 name violates naming restrictions. | |||
objectClassViolation (65) | objectClassViolation (65) | |||
Indicates that the entry violates object class restrictions. | Sermersheim Internet-Draft - Expires Jun 2003 Page 40 | |||
Sermersheim Internet-Draft - Expires May 2003 Page 39 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Indicates that the entry violates object class restrictions. | ||||
notAllowedOnNonLeaf (66) | notAllowedOnNonLeaf (66) | |||
Indicates that operation is inappropriately acting upon a | Indicates that 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. | |||
skipping to change at line 2184 | skipping to change at line 2195 | |||
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 May 2003 Page 40 | Sermersheim Internet-Draft - Expires Jun 2003 Page 41 | |||
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 DEFINITIONS | Lightweight-Directory-Access-Protocol-V3 DEFINITIONS | |||
IMPLICIT TAGS | IMPLICIT TAGS | |||
EXTENSIBILITY IMPLIED ::= | EXTENSIBILITY IMPLIED ::= | |||
skipping to change at line 2242 | skipping to change at line 2253 | |||
LDAPDN ::= LDAPString | LDAPDN ::= LDAPString | |||
RelativeLDAPDN ::= LDAPString | RelativeLDAPDN ::= LDAPString | |||
AttributeDescription ::= LDAPString | AttributeDescription ::= LDAPString | |||
-- Constrained to attributedescription | -- Constrained to attributedescription | |||
-- [Models] | -- [Models] | |||
AttributeDescriptionList ::= SEQUENCE OF | AttributeDescriptionList ::= SEQUENCE OF | |||
Sermersheim Internet-Draft - Expires May 2003 Page 41 | Sermersheim Internet-Draft - Expires Jun 2003 Page 42 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
AttributeDescription | AttributeDescription | |||
AttributeValue ::= OCTET STRING | AttributeValue ::= OCTET STRING | |||
AttributeValueAssertion ::= SEQUENCE { | AttributeValueAssertion ::= SEQUENCE { | |||
attributeDesc AttributeDescription, | attributeDesc AttributeDescription, | |||
assertionValue AssertionValue } | assertionValue AssertionValue } | |||
skipping to change at line 2300 | skipping to change at line 2311 | |||
-- 37-47 unused -- | -- 37-47 unused -- | |||
inappropriateAuthentication (48), | inappropriateAuthentication (48), | |||
invalidCredentials (49), | invalidCredentials (49), | |||
insufficientAccessRights (50), | insufficientAccessRights (50), | |||
busy (51), | busy (51), | |||
unavailable (52), | unavailable (52), | |||
unwillingToPerform (53), | unwillingToPerform (53), | |||
loopDetect (54), | loopDetect (54), | |||
-- 55-63 unused -- | -- 55-63 unused -- | |||
Sermersheim Internet-Draft - Expires May 2003 Page 42 | Sermersheim Internet-Draft - Expires Jun 2003 Page 43 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
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 -- | |||
other (80), | other (80), | |||
... }, | ... }, | |||
-- 81-90 reserved for APIs -- | -- 81-90 reserved for APIs -- | |||
matchedDN LDAPDN, | matchedDN LDAPDN, | |||
errorMessage LDAPString, | diagnosticMessage LDAPString, | |||
referral [3] Referral OPTIONAL } | referral [3] Referral OPTIONAL } | |||
Referral ::= SEQUENCE OF LDAPURL | Referral ::= SEQUENCE OF LDAPURL | |||
LDAPURL ::= LDAPString -- limited to characters permitted in | LDAPURL ::= LDAPString -- limited to characters permitted in | |||
-- URLs | -- URLs | |||
Controls ::= SEQUENCE OF Control | Controls ::= SEQUENCE OF Control | |||
Control ::= SEQUENCE { | Control ::= SEQUENCE { | |||
skipping to change at line 2358 | skipping to change at line 2369 | |||
serverSaslCreds [7] OCTET STRING OPTIONAL } | serverSaslCreds [7] OCTET STRING OPTIONAL } | |||
UnbindRequest ::= [APPLICATION 2] NULL | UnbindRequest ::= [APPLICATION 2] NULL | |||
SearchRequest ::= [APPLICATION 3] SEQUENCE { | SearchRequest ::= [APPLICATION 3] SEQUENCE { | |||
baseObject LDAPDN, | baseObject LDAPDN, | |||
scope ENUMERATED { | scope ENUMERATED { | |||
baseObject (0), | baseObject (0), | |||
singleLevel (1), | singleLevel (1), | |||
Sermersheim Internet-Draft - Expires May 2003 Page 43 | Sermersheim Internet-Draft - Expires Jun 2003 Page 44 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
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), | |||
skipping to change at line 2416 | skipping to change at line 2427 | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
SearchResultReference ::= [APPLICATION 19] SEQUENCE OF LDAPURL | SearchResultReference ::= [APPLICATION 19] SEQUENCE OF LDAPURL | |||
SearchResultDone ::= [APPLICATION 5] LDAPResult | SearchResultDone ::= [APPLICATION 5] LDAPResult | |||
ModifyRequest ::= [APPLICATION 6] SEQUENCE { | ModifyRequest ::= [APPLICATION 6] SEQUENCE { | |||
object LDAPDN, | object LDAPDN, | |||
modification SEQUENCE OF SEQUENCE { | modification SEQUENCE OF SEQUENCE { | |||
Sermersheim Internet-Draft - Expires May 2003 Page 44 | Sermersheim Internet-Draft - Expires Jun 2003 Page 45 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
operation ENUMERATED { | operation ENUMERATED { | |||
add (0), | add (0), | |||
delete (1), | delete (1), | |||
replace (2) }, | replace (2) }, | |||
modification AttributeTypeAndValues } } | modification AttributeTypeAndValues } } | |||
AttributeTypeAndValues ::= SEQUENCE { | AttributeTypeAndValues ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
skipping to change at line 2472 | skipping to change at line 2483 | |||
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, | |||
response [11] OCTET STRING OPTIONAL } | response [11] OCTET STRING OPTIONAL } | |||
END | END | |||
Sermersheim Internet-Draft - Expires May 2003 Page 45 | Sermersheim Internet-Draft - Expires Jun 2003 Page 46 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Appendix C - Change History | Appendix C - Change History | |||
<Note to RFC editor: This section is to be removed prior to RFC | <Note to RFC editor: This section is to be removed prior to RFC | |||
publication> | publication> | |||
C.1 Changes made to RFC 2251: | C.1 Changes made to RFC 2251: | |||
C.1.1 Editorial | C.1.1 Editorial | |||
skipping to change at line 2529 | skipping to change at line 2540 | |||
the transfer encoding is present in attributeDesc, the | the transfer encoding is present in attributeDesc, the | |||
AssertionValue is encoded as specified by the option...". | AssertionValue is encoded as specified by the option...". | |||
Previously, only the ;binary option was mentioned. | Previously, only the ;binary option was mentioned. | |||
C.2.3 Sections 4.2, 4.9, 4.10 | C.2.3 Sections 4.2, 4.9, 4.10 | |||
- Added alias dereferencing specifications. In the case of modDN, | - Added alias dereferencing specifications. In the case of modDN, | |||
followed precedent set on other update operations (... alias is | followed precedent set on other update operations (... alias is | |||
not dereferenced...) In the case of bind and compare stated that | not dereferenced...) In the case of bind and compare stated that | |||
Sermersheim Internet-Draft - Expires May 2003 Page 46 | Sermersheim Internet-Draft - Expires Jun 2003 Page 47 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
servers SHOULD NOT dereference aliases. Specifications were added | servers SHOULD NOT dereference aliases. Specifications were added | |||
because they were missing from the previous version and caused | because they were missing from the previous version and caused | |||
interoperability problems. Concessions were made for bind and | interoperability problems. Concessions were made for bind and | |||
compare (neither should have ever allowed alias dereferencing) by | compare (neither should have ever allowed alias dereferencing) by | |||
using SHOULD NOT language, due to the behavior of some existing | using SHOULD NOT language, due to the behavior of some existing | |||
implementations. | implementations. | |||
C.2.4 Sections 4.5 and Appendix A | C.2.4 Sections 4.5 and Appendix A | |||
skipping to change at line 2585 | skipping to change at line 2596 | |||
by a lower layer" to "the underlying transport service cannot | by a lower layer" to "the underlying transport service cannot | |||
guarantee confidentiality" | guarantee confidentiality" | |||
C.3.6 Section 4.5.2 | C.3.6 Section 4.5.2 | |||
- Removed all mention of ExtendedResponse due to lack of | - Removed all mention of ExtendedResponse due to lack of | |||
implementation. | implementation. | |||
C.4 Changes made to draft-ietf-ldapbis-protocol-02.txt: | C.4 Changes made to draft-ietf-ldapbis-protocol-02.txt: | |||
Sermersheim Internet-Draft - Expires May 2003 Page 47 | Sermersheim Internet-Draft - Expires Jun 2003 Page 48 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
C.4.1 Section 4 | C.4.1 Section 4 | |||
- Removed "typically" from "and is typically transferred" in the | - Removed "typically" from "and is typically transferred" in the | |||
first paragraph. We know of no (and can conceive of no) case where | first paragraph. We know of no (and can conceive of no) case where | |||
this isn't true. | this isn't true. | |||
- Added "Section 5.1 specifies how the LDAP protocol is encoded." To | - Added "Section 5.1 specifies how the LDAP protocol is encoded." To | |||
the first paragraph. Added this cross reference for readability. | the first paragraph. Added this cross reference for readability. | |||
- Changed "version 3 " to "version 3 or later" in the second | - Changed "version 3 " to "version 3 or later" in the second | |||
skipping to change at line 2641 | skipping to change at line 2652 | |||
controls). | controls). | |||
C.4.6 Section 4.4 | C.4.6 Section 4.4 | |||
- Changed "One unsolicited notification is defined" to "One | - Changed "One unsolicited notification is defined" to "One | |||
unsolicited notification (Notice of Disconnection) is defined" in | unsolicited notification (Notice of Disconnection) is defined" in | |||
the third paragraph. For clarity and readability. | the third paragraph. For clarity and readability. | |||
C.4.7 Section 4.5.1 | C.4.7 Section 4.5.1 | |||
Sermersheim Internet-Draft - Expires May 2003 Page 48 | Sermersheim Internet-Draft - Expires Jun 2003 Page 49 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
- Changed "checking for the existence of the objectClass attribute" | - Changed "checking for the existence of the objectClass attribute" | |||
to "checking for the presence of the objectClass attribute" in the | to "checking for the presence of the objectClass attribute" in the | |||
last paragraph. This was done as a measure of consistency (we use | last paragraph. This was done as a measure of consistency (we use | |||
the terms present and presence rather than exists and existence in | the terms present and presence rather than exists and existence in | |||
search filters). | search filters). | |||
C.4.8 Section 4.5.3 | C.4.8 Section 4.5.3 | |||
skipping to change at line 2697 | skipping to change at line 2708 | |||
whether there can be more than one value of an attribute of that | 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 | type in an entry, the syntax to which the values must conform, the | |||
kinds of matching which can be performed on values of that | kinds of matching which can be performed on values of that | |||
attribute, and other functions." to " An attribute is a | attribute, and other functions." to " An attribute is a | |||
description (a type and zero or more options) with one or more | description (a type and zero or more options) with one or more | |||
associated values. The attribute type governs whether the | associated values. The attribute type governs whether the | |||
attribute can have multiple values, the syntax and matching rules | attribute can have multiple values, the syntax and matching rules | |||
used to construct and compare values of that attribute, and other | used to construct and compare values of that attribute, and other | |||
functions. Options indicate modes of transfer and other | functions. Options indicate modes of transfer and other | |||
Sermersheim Internet-Draft - Expires May 2003 Page 49 | Sermersheim Internet-Draft - Expires Jun 2003 Page 50 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
functions.". This points out that an attribute consists of both | functions.". This points out that an attribute consists of both | |||
the type and options. | the type and options. | |||
C.5.2 Section 4 | C.5.2 Section 4 | |||
- Changed "Section 5.1 specifies the encoding rules for the LDAP | - Changed "Section 5.1 specifies the encoding rules for the LDAP | |||
protocol" to "Section 5.1 specifies how the protocol is encoded | protocol" to "Section 5.1 specifies how the protocol is encoded | |||
and transferred." | and transferred." | |||
skipping to change at line 2754 | skipping to change at line 2765 | |||
- Changed the wording regarding 'equally capable' referrals to "If | - Changed the wording regarding 'equally capable' referrals to "If | |||
multiple URLs are present, the client assumes that any URL may be | multiple URLs are present, the client assumes that any URL may be | |||
used to progress the operation.". The previous language implied | used to progress the operation.". The previous language implied | |||
that the server MUST enforce rules that it was practically | that the server MUST enforce rules that it was practically | |||
incapable of. The new language highlights the original intent-- | incapable of. The new language highlights the original intent-- | |||
that is, that any of the referrals may be used to progress the | that is, that any of the referrals may be used to progress the | |||
operation, there is no inherent 'weighting' mechanism. | operation, there is no inherent 'weighting' mechanism. | |||
C.5.7 Section 4.5.1 and Appendix A | C.5.7 Section 4.5.1 and Appendix A | |||
Sermersheim Internet-Draft - Expires May 2003 Page 50 | Sermersheim Internet-Draft - Expires Jun 2003 Page 51 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
- Added the comment "-- initial and final can occur at most once", | - Added the comment "-- initial and final can occur at most once", | |||
to clarify this restriction. | to clarify this restriction. | |||
C.5.8 Section 5.1 | C.5.8 Section 5.1 | |||
- Changed heading from "Mapping Onto BER-based Transport Services" | - Changed heading from "Mapping Onto BER-based Transport Services" | |||
to "Protocol Encoding". | to "Protocol Encoding". | |||
skipping to change at line 2810 | skipping to change at line 2821 | |||
doc now specifies a difference between transfer and tagging | doc now specifies a difference between transfer and tagging | |||
options and describes the semantics of each, and how and when | options and describes the semantics of each, and how and when | |||
subtyping rules apply. Now allow options to be transmitted in any | subtyping rules apply. Now allow options to be transmitted in any | |||
order but disallow any ordering semantics to be implied. These | order but disallow any ordering semantics to be implied. These | |||
changes are the result of ongoing input from an engineering team | changes are the result of ongoing input from an engineering team | |||
designed to deal with ambiguity issues surrounding attribute | designed to deal with ambiguity issues surrounding attribute | |||
options. | options. | |||
C.7.3 Sections 4.1.5.1 and 4.1.6 | C.7.3 Sections 4.1.5.1 and 4.1.6 | |||
Sermersheim Internet-Draft - Expires May 2003 Page 51 | Sermersheim Internet-Draft - Expires Jun 2003 Page 52 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
- Refer to non "binary" transfer encodings as "native encoding" | - Refer to non "binary" transfer encodings as "native encoding" | |||
rather than "string" encoding to clarify and avoid confusion. | rather than "string" encoding to clarify and avoid confusion. | |||
C.8 Changes made to draft-ietf-ldapbis-protocol-06.txt: | C.8 Changes made to draft-ietf-ldapbis-protocol-06.txt: | |||
C.8.1 Title | C.8.1 Title | |||
- Changed to "LDAP: The Protocol" to be consisted with other working | - Changed to "LDAP: The Protocol" to be consisted with other working | |||
skipping to change at line 2866 | skipping to change at line 2877 | |||
C.8.7 Relationship to X.500 | C.8.7 Relationship to X.500 | |||
- Removed section. It has been moved to [Roadmap] | - Removed section. It has been moved to [Roadmap] | |||
C.8.8 Server Specific Data Requirements | C.8.8 Server Specific Data Requirements | |||
- Removed section. It has been moved to [Models] | - Removed section. It has been moved to [Models] | |||
C.8.9 Elements of Protocol | C.8.9 Elements of Protocol | |||
Sermersheim Internet-Draft - Expires May 2003 Page 52 | Sermersheim Internet-Draft - Expires Jun 2003 Page 53 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
- Added "Section 5.1 specifies how the protocol is encoded and | - Added "Section 5.1 specifies how the protocol is encoded and | |||
transferred." to the end of the first paragraph for reference. | transferred." to the end of the first paragraph for reference. | |||
- Reworded notes about extensibility, and now talk about implied | - Reworded notes about extensibility, and now talk about implied | |||
extensibility and the use of ellipses in the ASN.1 | extensibility and the use of ellipses in the ASN.1 | |||
- Removed references to LDAPv2 in third and fourth paragraphs. | - Removed references to LDAPv2 in third and fourth paragraphs. | |||
skipping to change at line 2923 | skipping to change at line 2934 | |||
- Clarified intent regarding exactly what is to be BER encoded. | - Clarified intent regarding exactly what is to be BER encoded. | |||
- Clarified that clients must not expect ;binary when not asking for | - Clarified that clients must not expect ;binary when not asking for | |||
it (;binary, as opposed to ber encoded data). | it (;binary, as opposed to ber encoded data). | |||
C.8.17 Attribute | C.8.17 Attribute | |||
- Use the term "attribute description" in lieu of "type" | - Use the term "attribute description" in lieu of "type" | |||
Sermersheim Internet-Draft - Expires May 2003 Page 53 | Sermersheim Internet-Draft - Expires Jun 2003 Page 54 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
- Clarified the fact that clients cannot rely on any apparent | - Clarified the fact that clients cannot rely on any apparent | |||
ordering of attribute values. | ordering of attribute values. | |||
C.8.18 LDAPResult | C.8.18 LDAPResult | |||
- To resultCode, added ellipses "..." to the enumeration to indicate | - To resultCode, added ellipses "..." to the enumeration to indicate | |||
extensibility. and added a note, pointing to [LDAPIANA] | extensibility. and added a note, pointing to [LDAPIANA] | |||
skipping to change at line 2980 | skipping to change at line 2991 | |||
- Added as normative appendix A | - Added as normative appendix A | |||
C.8.25 ASN.1 | C.8.25 ASN.1 | |||
- Added EXTENSIBILITY IMPLIED | - Added EXTENSIBILITY IMPLIED | |||
- Added a number of comments holding referenced to [Models] and | - Added a number of comments holding referenced to [Models] and | |||
[ISO10646]. | [ISO10646]. | |||
Sermersheim Internet-Draft - Expires May 2003 Page 54 | Sermersheim Internet-Draft - Expires Jun 2003 Page 55 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
- Removed AttributeType. It is not used. | - Removed AttributeType. It is not used. | |||
C.9 Changes made to draft-ietf-ldapbis-protocol-07.txt: | C.9 Changes made to draft-ietf-ldapbis-protocol-07.txt: | |||
- Removed all mention of transfer encodings and the binary attribute | - Removed all mention of transfer encodings and the binary attribute | |||
option | option | |||
- Further alignment with [Models]. | - Further alignment with [Models]. | |||
skipping to change at line 3005 | skipping to change at line 3016 | |||
malformed PDUs | malformed PDUs | |||
- Specified which matching rules and syntaxes are used for various | - Specified which matching rules and syntaxes are used for various | |||
filter items | filter items | |||
C.10 Changes made to draft-ietf-ldapbis-protocol-08.txt: | C.10 Changes made to draft-ietf-ldapbis-protocol-08.txt: | |||
C.10.1 Section 4.1.1.1: | C.10.1 Section 4.1.1.1: | |||
- Clarified when it is and isn't appropriate to return an already | - Clarified when it is and isn't appropriate to return an already | |||
used result code. | used message id. | |||
C.10.2 Section 4.1.11: | C.10.2 Section 4.1.11: | |||
- Clarified that a control only applies to the message it's attached | - Clarified that a control only applies to the message it's attached | |||
to. | to. | |||
- Explained that the criticality field is only applicable to certain | - Explained that the criticality field is only applicable to certain | |||
request messages. | request messages. | |||
- Added language regarding the combination of controls. | - Added language regarding the combination of controls. | |||
skipping to change at line 3033 | skipping to change at line 3044 | |||
C.11 Changes made to draft-ietf-ldapbis-protocol-09.txt: | C.11 Changes made to draft-ietf-ldapbis-protocol-09.txt: | |||
- Fixed formatting | - Fixed formatting | |||
C.12 Changes made to draft-ietf-ldapbis-protocol-10.txt: | C.12 Changes made to draft-ietf-ldapbis-protocol-10.txt: | |||
C.12.1 Section 4.1.4: | C.12.1 Section 4.1.4: | |||
- Removed second paragraph as this language exists in MODELS | - Removed second paragraph as this language exists in MODELS | |||
Sermersheim Internet-Draft - Expires May 2003 Page 55 | Sermersheim Internet-Draft - Expires Jun 2003 Page 56 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
C.12.2 Section 4.2.1: | C.12.2 Section 4.2.1: | |||
- Replaced fourth paragraph. It was accidentally removed in an | - Replaced fourth paragraph. It was accidentally removed in an | |||
earlier edit. | earlier edit. | |||
C.12.2 Section 4.13: | C.12.2 Section 4.13: | |||
- Added section describing the StartTLS operation (moved from | - Added section describing the StartTLS operation (moved from | |||
authmeth) | 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. | ||||
Appendix D - Outstanding Work Items | Appendix D - Outstanding Work Items | |||
D.0 Integrate notational consistency agreements | D.0 General | |||
- WG will discuss notation consistency. Once agreement happens, | - Integrate notational consistency agreements WG will discuss | |||
reconcile draft. | notation consistency. Once agreement happens, reconcile draft. | |||
D.1 Integrate result codes draft. | - Reconcile problems with [Models]. Section 3.2 was wholly removed. | |||
There were some protocol semantics in that section that need to be | ||||
brought back. Specifically, there was the notion of the server | ||||
implicitly adding objectclass superclasses when a value is added. | ||||
- The result codes draft should be reconciled with this draft. | D.1 Make result code usage consistent. | |||
Operation-specific instructions will reside with operations while | ||||
the error-specific sections will be added as an appendix. Note | - While there is a result code appendix, ensure it speaks of result | |||
that there is a result codes appendix now. Still need to reconcile | codes in a general sense, and only highlight specific result codes | |||
with each operation. | ||||
Sermersheim Internet-Draft - Expires Jun 2003 Page 57 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
in the context of an operation when that operation ties more | ||||
specific meanings to that result code. | ||||
D.2 Verify references. | D.2 Verify references. | |||
- Many referenced documents have changed. Ensure references and | - Many referenced documents have changed. Ensure references and | |||
section numbers are correct. | section numbers are correct. | |||
D.3 Usage of Naming Context | D.3 Usage of Naming Context | |||
- Make sure occurrences of "namingcontext" and "naming context" are | - Make sure occurrences of "namingcontext" and "naming context" are | |||
consistent with [Models]. | consistent with [Models]. Use in section 6.2 should be reworked. | |||
It's layers of indirection that matter, not number of contexts. | ||||
(That is, referrals can be returned for a number of reasons (cross | ||||
reference, superior, subordinate, busy, not master, etc.) | ||||
D.14 Section 4.1.12 | Other uses are fine. | |||
- Specify whether or not servers are to advertise the OIDs of known | D.4 Review 2119 usage | |||
response controls. | ||||
D.5 Reconcile with I-D Nits | ||||
D.18 Section 4.2.3 | D.18 Section 4.2.3 | |||
- Change "operationsError" to "other" as a bind result code. | - Change "operationsError" to "other" as a bind result code. | |||
Proposal is to remove it since it's a general error anyway. | ||||
D.21 Section 4.5.1 | ||||
- Make sure the use of "subordinates" in the derefInSearching | ||||
definition is correct. See "derefInSearching" on list. | ||||
D.23 Section 4.5.3 | D.23 Section 4.5.3 | |||
Sermersheim Internet-Draft - Expires May 2003 Page 56 | - A server MUST NOT return any SearchResultReference if it has not | |||
Lightweight Directory Access Protocol Version 3 | located the baseObject and thus has not searched any entries; in | |||
this case it would return a SearchResultDone containing a referral | ||||
resultCode. | ||||
- Add "Similarly, a server MUST NOT return a SearchResultReference | - Add "Similarly, a server MUST NOT return a SearchResultReference | |||
when the scope of the search is baseObject. If a client receives | when the scope of the search is baseObject. If a client receives | |||
such a SearchResultReference it MUST interpret is as a protocol | such a SearchResultReference it MUST interpret is as a protocol | |||
error and MUST NOT follow it." to the first paragraph. | error and MUST NOT follow it." to the first paragraph. | |||
The technical specification doesn't have to describe how a | ||||
protocol peer should react when its partner violates an absolute. | ||||
OR return noSuchObject. | ||||
- Add "If the scope part of the LDAP URL is present, the client MUST | - Add "If the scope part of the LDAP URL is present, the client MUST | |||
use the new scope in its next request to progress the search. If | use the new scope in its next request to progress the search. If | |||
the scope part is absent the client MUST use subtree scope to | the scope part is absent the client MUST use subtree scope to | |||
complete subtree searches and base scope to complete one level | complete subtree searches and base scope to complete one level | |||
searches." to the third paragraph. | searches." to the third paragraph. | |||
Sermersheim Internet-Draft - Expires Jun 2003 Page 58 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
D.25 Section 4.6 | D.25 Section 4.6 | |||
- Resolve the meaning of "and is ignored if the attribute does not | - Resolve the meaning of "and is ignored if the attribute does not | |||
exist". See "modify: "non-existent attribute"" on the list. | exist". See "modify: "non-existent attribute"" on the list. Not | |||
sure if there's really an issue here. Will look at archive | ||||
D.27 Section 4.10 | D.27 Section 4.10 | |||
- Specify what happens when the attr is missing vs. attr isn't in | - Specify what happens when the attr is missing vs. attr isn't in | |||
schema. Also what happens if there's no equality matching rule. | schema. Also what happens if there's no equality matching rule. | |||
noSuchAttribute, undefinedAttributeType, inappropriateMatching | ||||
D.30 Section 5.1 | D.30 Section 5.1 | |||
- Add "control and extended operation values" to last paragraph. See | - Add "control and extended operation values" to last paragraph. See | |||
"LBER (BER Restrictions)" on list. | "LBER (BER Restrictions)" on list. | |||
D.32 Section 6.1 | D.32 Section 6.1 | |||
- Add "that are used by those attributes" to the first paragraph. | - Add "that are used by those attributes" to the first paragraph. | |||
- Add "Servers which support update operations MUST, and other | - Add "Servers which support update operations MUST, and other | |||
servers SHOULD, support strong authentication mechanisms described | servers SHOULD, support strong authentication mechanisms described | |||
in [RFC2829]." as a second paragraph. | in [RFC2829]." as a second paragraph. Likely should just say | |||
Requirements of authentication methods, SASL mechanisms, and TLS | ||||
are described in [AUTHMETH]." (also apply to next two below) | ||||
- Add "Servers which provide access to sensitive information MUST, | - Add "Servers which provide access to sensitive information MUST, | |||
and other servers SHOULD support privacy protections such as those | and other servers SHOULD support privacy protections such as those | |||
described in [RFC2829] and [RFC2830]." as a third paragraph. | described in [RFC2829] and [RFC2830]." as a third paragraph. | |||
D.33 Section 7 | D.33 Section 7 | |||
- Add "Servers which support update operations MUST, and other | - Add "Servers which support update operations MUST, and other | |||
servers SHOULD, support strong authentication mechanisms described | servers SHOULD, support strong authentication mechanisms described | |||
in [RFC2829]." as a fourth paragraph. | in [RFC2829]." as a fourth paragraph. | |||
- Add "In order to automatically follow referrals, clients may need | - Add "In order to automatically follow referrals, clients may need | |||
to hold authentication secrets. This poses significant privacy and | to hold authentication secrets. This poses significant privacy and | |||
security concerns and SHOULD be avoided." as a sixth paragraph. | security concerns and SHOULD be avoided." as a sixth paragraph. | |||
- Add "This document provides a mechanism which clients may use to | There are concerns with "automatic" chasing regardless of which, | |||
discover operational attributes. Those relying on security by | if any, authentication method/mechanism is used. | |||
obscurity should implement appropriate access controls to | ||||
restricts access to operational attributes per local policy." as | ||||
an eighth paragraph. | ||||
- Add "This document provides a mechanism which clients may use to | ||||
discover operational attributes. Those relying on security by | ||||
obscurity should implement appropriate access controls to | ||||
restricts access to operational attributes per local policy." as | ||||
an eighth paragraph. | ||||
Sermersheim Internet-Draft - Expires May 2003 Page 57 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- Add notes regarding DoS attack found by CERT advisories. | - Add notes regarding DoS attack found by CERT advisories. | |||
Sermersheim Internet-Draft - Expires May 2003 Page 58 | D.34 Appendix C | |||
- C.9. Explain why we removed ;binary, and what clients can do to | ||||
get around potential problems (likely refer to an I-D) | ||||
Sermersheim Internet-Draft - Expires Jun 2003 Page 59 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Full Copyright Statement | Full Copyright Statement | |||
Copyright (C) The Internet Society (2002). All Rights Reserved. | Copyright (C) The Internet Society (2002). 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 | |||
skipping to change at line 3180 | skipping to change at line 3233 | |||
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 May 2003 Page 59 | Sermersheim Internet-Draft - Expires Jun 2003 Page 60 | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |