draft-ietf-ldapbis-protocol-16.txt | draft-ietf-ldapbis-protocol-17.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-16.txt Jun 2003 | Document: draft-ietf-ldapbis-protocol-17.txt Sep 2003 | |||
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 53 | skipping to change at line 53 | |||
1. Introduction....................................................3 | 1. Introduction....................................................3 | |||
2. Conventions.....................................................3 | 2. Conventions.....................................................3 | |||
3. Protocol Model..................................................3 | 3. Protocol Model..................................................3 | |||
4. Elements of Protocol............................................4 | 4. Elements of Protocol............................................4 | |||
4.1. Common Elements...............................................4 | 4.1. Common Elements...............................................4 | |||
4.1.1. Message Envelope............................................4 | 4.1.1. Message Envelope............................................4 | |||
4.1.2. String Types................................................6 | 4.1.2. String Types................................................6 | |||
4.1.3. Distinguished Name and Relative Distinguished Name..........6 | 4.1.3. Distinguished Name and Relative Distinguished Name..........6 | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 1 | Sermersheim Internet-Draft - Expires Mar 2004 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......................................7 | |||
4.1.5. Attribute Value.............................................7 | 4.1.5. Attribute Value.............................................7 | |||
4.1.6. Attribute Value Assertion...................................7 | 4.1.6. Attribute Value Assertion...................................7 | |||
4.1.7. Attribute...................................................8 | 4.1.7. Attribute...................................................8 | |||
4.1.8. Matching Rule Identifier....................................8 | 4.1.8. Matching Rule Identifier....................................8 | |||
4.1.9. Result Message..............................................8 | 4.1.9. Result Message..............................................8 | |||
4.1.10. Referral..................................................10 | 4.1.10. Referral..................................................10 | |||
4.1.11. Controls..................................................11 | 4.1.11. Controls..................................................11 | |||
4.2. Bind Operation...............................................12 | 4.2. Bind Operation...............................................12 | |||
4.3. Unbind Operation.............................................15 | 4.3. Unbind Operation.............................................15 | |||
4.4. Unsolicited Notification.....................................15 | 4.4. Unsolicited Notification.....................................15 | |||
4.5. Search Operation.............................................16 | 4.5. Search Operation.............................................16 | |||
4.6. Modify Operation.............................................23 | 4.6. Modify Operation.............................................24 | |||
4.7. Add Operation................................................25 | 4.7. Add Operation................................................25 | |||
4.8. Delete Operation.............................................25 | 4.8. Delete Operation.............................................26 | |||
4.9. Modify DN Operation..........................................26 | 4.9. Modify DN Operation..........................................27 | |||
4.10. Compare Operation...........................................27 | 4.10. Compare Operation...........................................28 | |||
4.11. Abandon Operation...........................................28 | 4.11. Abandon Operation...........................................29 | |||
4.12. Extended Operation..........................................29 | 4.12. Extended Operation..........................................30 | |||
4.13. Start TLS Operation.........................................30 | 4.13. Start TLS Operation.........................................31 | |||
5. Protocol Element Encodings and Transfer........................32 | 5. Protocol Element Encodings and Transfer........................33 | |||
5.1. Protocol Encoding............................................32 | 5.1. Protocol Encoding............................................33 | |||
5.2. Transfer Protocols...........................................32 | 5.2. Transfer Protocols...........................................33 | |||
6. Implementation Guidelines......................................33 | 6. Implementation Guidelines......................................33 | |||
6.1. Server Implementations.......................................33 | 6.1. Server Implementations.......................................34 | |||
6.2. Client Implementations.......................................33 | 6.2. Client Implementations.......................................34 | |||
7. Security Considerations........................................33 | 7. Security Considerations........................................34 | |||
8. Acknowledgements...............................................34 | 8. Acknowledgements...............................................35 | |||
9. Normative References...........................................34 | 9. Normative References...........................................35 | |||
10. Informative References........................................36 | 10. Informative References........................................37 | |||
11. Editor's Address..............................................36 | 11. IANA Considerations...........................................37 | |||
Appendix A - LDAP Result Codes....................................37 | 12. Editor's Address..............................................37 | |||
A.1 Non-Error Result Codes........................................37 | Appendix A - LDAP Result Codes....................................38 | |||
A.2 Result Codes..................................................37 | A.1 Non-Error Result Codes........................................38 | |||
Appendix C - Change History.......................................48 | A.2 Result Codes..................................................38 | |||
C.1 Changes made to RFC 2251:.....................................48 | Appendix C - Change History.......................................49 | |||
C.2 Changes made to draft-ietf-ldapbis-protocol-00.txt:...........48 | C.1 Changes made to RFC 2251:.....................................49 | |||
C.3 Changes made to draft-ietf-ldapbis-protocol-01.txt:...........49 | C.2 Changes made to draft-ietf-ldapbis-protocol-00.txt:...........49 | |||
C.4 Changes made to draft-ietf-ldapbis-protocol-02.txt:...........49 | C.3 Changes made to draft-ietf-ldapbis-protocol-01.txt:...........50 | |||
C.5 Changes made to draft-ietf-ldapbis-protocol-03.txt:...........51 | C.4 Changes made to draft-ietf-ldapbis-protocol-02.txt:...........50 | |||
C.6 Changes made to draft-ietf-ldapbis-protocol-04.txt:...........53 | C.5 Changes made to draft-ietf-ldapbis-protocol-03.txt:...........52 | |||
C.7 Changes made to draft-ietf-ldapbis-protocol-05.txt:...........53 | C.6 Changes made to draft-ietf-ldapbis-protocol-04.txt:...........54 | |||
C.8 Changes made to draft-ietf-ldapbis-protocol-06.txt:...........54 | C.7 Changes made to draft-ietf-ldapbis-protocol-05.txt:...........54 | |||
C.9 Changes made to draft-ietf-ldapbis-protocol-07.txt:...........57 | C.8 Changes made to draft-ietf-ldapbis-protocol-06.txt:...........55 | |||
C.10 Changes made to draft-ietf-ldapbis-protocol-08.txt:..........57 | C.9 Changes made to draft-ietf-ldapbis-protocol-07.txt:...........58 | |||
C.11 Changes made to draft-ietf-ldapbis-protocol-09.txt:..........57 | C.10 Changes made to draft-ietf-ldapbis-protocol-08.txt:..........58 | |||
C.12 Changes made to draft-ietf-ldapbis-protocol-10.txt:..........57 | C.11 Changes made to draft-ietf-ldapbis-protocol-09.txt:..........58 | |||
C.13 Changes made to draft-ietf-ldapbis-protocol-11.txt:..........58 | C.12 Changes made to draft-ietf-ldapbis-protocol-10.txt:..........58 | |||
C.14 Changes made to draft-ietf-ldapbis-protocol-12.txt:..........58 | C.13 Changes made to draft-ietf-ldapbis-protocol-11.txt:..........59 | |||
C.15 Changes made to draft-ietf-ldapbis-protocol-13.txt...........58 | C.14 Changes made to draft-ietf-ldapbis-protocol-12.txt:..........59 | |||
C.16 Changes made to draft-ietf-ldapbis-protocol-14.txt...........59 | C.15 Changes made to draft-ietf-ldapbis-protocol-13.txt...........59 | |||
C.17 Changes made to draft-ietf-ldapbis-protocol-15.txt...........61 | C.16 Changes made to draft-ietf-ldapbis-protocol-14.txt...........60 | |||
Appendix D - Outstanding Work Items...............................61 | C.17 Changes made to draft-ietf-ldapbis-protocol-15.txt...........62 | |||
C.18 Changes made to draft-ietf-ldapbis-protocol-16.txt...........62 | ||||
Sermersheim Internet-Draft - Expires Dec 2003 Page 2 | Sermersheim Internet-Draft - Expires Mar 2004 Page 2 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Appendix D - Outstanding Work Items...............................63 | ||||
1. Introduction | 1. Introduction | |||
The Directory is "a collection of open systems cooperating to provide | The Directory is "a collection of open systems cooperating to provide | |||
directory services" [X.500]. A Directory user, which may be a human | directory services" [X.500]. A Directory user, which may be a human | |||
or other entity, accesses the Directory through a client (or | or other entity, accesses the Directory through a client (or | |||
Directory User Agent (DUA)). The client, on behalf of the directory | Directory User Agent (DUA)). The client, on behalf of the directory | |||
user, interacts with one or more servers (or Directory System Agents | user, interacts with one or more servers (or Directory System Agents | |||
(DSA)). Clients interact with servers using a directory access | (DSA)). Clients interact with servers using a directory access | |||
protocol. | protocol. | |||
skipping to change at line 161 | skipping to change at line 164 | |||
client transmits a protocol request describing the operation to be | client transmits a protocol request describing the operation to be | |||
performed to a server. The server is then responsible for performing | performed to a server. The server is then responsible for performing | |||
the necessary operation(s) in the directory. Upon completion of the | the necessary operation(s) in the directory. Upon completion of the | |||
operation(s), the server returns a response containing an appropriate | operation(s), the server returns a response containing an appropriate | |||
result code to the requesting client. | result code to the requesting client. | |||
Although servers are required to return responses whenever such | Although servers are required to return responses whenever such | |||
responses are defined in the protocol, there is no requirement for | responses are defined in the protocol, there is no requirement for | |||
synchronous behavior on the part of either clients or servers. | synchronous behavior on the part of either clients or servers. | |||
Requests and responses for multiple operations may be exchanged | Requests and responses for multiple operations may be exchanged | |||
between a client and server in any order, provided the client | ||||
eventually receives a response for every request that requires one. | ||||
Sermersheim Internet-Draft - Expires Dec 2003 Page 3 | Sermersheim Internet-Draft - Expires Mar 2004 Page 3 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
between a client and server in any order, provided the client | ||||
eventually receives a response for every request that requires one. | ||||
The core protocol operations defined in this document can be mapped | The core protocol operations defined in this document can be mapped | |||
to a subset of the X.500(1997) directory abstract service. However | to a subset of the X.500(1997) directory abstract service. However | |||
there is not a one-to-one mapping between LDAP protocol operations | there is not a one-to-one mapping between LDAP protocol operations | |||
and DAP operations. Server implementations acting as a gateway to | and DAP operations. Server implementations acting as a gateway to | |||
X.500 directories may need to make multiple DAP requests. | 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 | The LDAP protocol is described using Abstract Syntax Notation 1 | |||
(ASN.1) [X.680], and is transferred using a subset of ASN.1 Basic | (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 (unless otherwise | |||
SEQUENCE elements whose tags they do not recognize. | specified) ignore trailing SEQUENCE elements whose tags they do not | |||
recognize. | ||||
Changes to the LDAP protocol other than through the extension | Changes to the LDAP protocol other than through the extension | |||
mechanisms described here require a different version number. A | mechanisms described here require a different version number. A | |||
client indicates the version it is using as part of the bind request, | client indicates the version it is using as part of the bind request, | |||
described in section 4.2. If a client has not sent a bind, the server | described in section 4.2. If a client has not sent a bind, the server | |||
MUST assume the client is using version 3 or later. | MUST assume the client is using version 3 or later. | |||
Clients may determine the protocol versions a server supports by | Clients may determine the protocol versions a server supports by | |||
reading the supportedLDAPVersion attribute from the root DSE | reading the supportedLDAPVersion attribute from the root DSE | |||
[Models]. Servers which implement version 3 or later MUST provide | [Models]. Servers which implement version 3 or later MUST provide | |||
skipping to change at line 214 | skipping to change at line 219 | |||
4.1.1. Message Envelope | 4.1.1. Message Envelope | |||
For the purposes of protocol exchanges, all protocol operations are | For the purposes of protocol exchanges, all protocol operations are | |||
encapsulated in a common envelope, the LDAPMessage, which is defined | encapsulated in a common envelope, the LDAPMessage, which is defined | |||
as follows: | as follows: | |||
LDAPMessage ::= SEQUENCE { | LDAPMessage ::= SEQUENCE { | |||
messageID MessageID, | messageID MessageID, | |||
protocolOp CHOICE { | protocolOp CHOICE { | |||
bindRequest BindRequest, | bindRequest BindRequest, | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 4 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
bindResponse BindResponse, | bindResponse BindResponse, | |||
unbindRequest UnbindRequest, | unbindRequest UnbindRequest, | |||
searchRequest SearchRequest, | searchRequest SearchRequest, | |||
searchResEntry SearchResultEntry, | searchResEntry SearchResultEntry, | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 4 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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, | modDNResponse ModifyDNResponse, | |||
skipping to change at line 271 | skipping to change at line 276 | |||
The ASN.1 type Controls is defined in section 4.1.11. | The ASN.1 type Controls is defined in section 4.1.11. | |||
4.1.1.1. Message ID | 4.1.1.1. Message ID | |||
All LDAPMessage envelopes encapsulating responses contain the | All LDAPMessage envelopes encapsulating responses contain the | |||
messageID value of the corresponding request LDAPMessage. | messageID value of the corresponding request LDAPMessage. | |||
The message ID of a request MUST have a non-zero value different from | The message ID of a request MUST have a non-zero value different from | |||
the values of any other requests outstanding in the LDAP association | the values of any other requests outstanding in the LDAP association | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 5 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
of which this message is a part. The zero value is reserved for the | of which this message is a part. The zero value is reserved for the | |||
unsolicited notification message. | unsolicited notification message. | |||
Typical clients increment a counter for each request. | Typical clients increment a counter for each request. | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 5 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
A client MUST NOT send a request with the same message ID as an | A client MUST NOT send a request with the same message ID as an | |||
earlier request on the same LDAP association unless it can be | earlier request on the same LDAP association unless it can be | |||
determined that the server is no longer servicing the earlier | determined that the server is no longer servicing the earlier | |||
request. Otherwise the behavior is undefined. For operations that do | request. Otherwise the behavior is undefined. For operations that do | |||
not return responses (unbind, abandon, and abandoned operations), the | not return responses (unbind, abandon, and abandoned operations), the | |||
client SHOULD assume the operation is in progress until a subsequent | client SHOULD assume the operation is in progress until a subsequent | |||
bind request completes. | bind request completes. | |||
4.1.2. String Types | 4.1.2. String Types | |||
skipping to change at line 325 | skipping to change at line 331 | |||
An LDAPDN and a RelativeLDAPDN are respectively defined to be the | An LDAPDN and a RelativeLDAPDN are respectively defined to be the | |||
representation of a distinguished-name and a relative-distinguished- | representation of a distinguished-name and a relative-distinguished- | |||
name after encoding according to the specification in [LDAPDN]. | name after encoding according to the specification in [LDAPDN]. | |||
LDAPDN ::= LDAPString | LDAPDN ::= LDAPString | |||
-- Constrained to distinguishedName [LDAPDN] | -- Constrained to distinguishedName [LDAPDN] | |||
RelativeLDAPDN ::= LDAPString | RelativeLDAPDN ::= LDAPString | |||
-- Constrained to name-component [LDAPDN] | -- Constrained to name-component [LDAPDN] | |||
4.1.4. Attribute Descriptions | Sermersheim Internet-Draft - Expires Mar 2004 Page 6 | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 6 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
4.1.4. Attribute Descriptions | ||||
The definition and encoding rules for attribute descriptions are | The definition and encoding rules for attribute descriptions are | |||
defined in Section 2.5 of [Models]. Briefly, an attribute description | defined in Section 2.5 of [Models]. Briefly, an attribute description | |||
is an attribute type and zero or more options. | is an attribute type and zero or more options. | |||
AttributeDescription ::= LDAPString | AttributeDescription ::= LDAPString | |||
-- Constrained to attributedescription | -- Constrained to attributedescription | |||
-- [Models] | -- [Models] | |||
An AttributeDescriptionList describes a list of 0 or more attribute | ||||
descriptions. (A list of zero elements has special significance in | ||||
the Search request.) | ||||
AttributeDescriptionList ::= SEQUENCE OF | ||||
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]. | |||
AttributeValue ::= OCTET STRING | AttributeValue ::= OCTET STRING | |||
skipping to change at line 382 | skipping to change at line 381 | |||
and a matching rule assertion value suitable for that type. | and a matching rule assertion value suitable for that type. | |||
AttributeValueAssertion ::= SEQUENCE { | AttributeValueAssertion ::= SEQUENCE { | |||
attributeDesc AttributeDescription, | attributeDesc AttributeDescription, | |||
assertionValue AssertionValue } | assertionValue AssertionValue } | |||
AssertionValue ::= OCTET STRING | AssertionValue ::= OCTET STRING | |||
The syntax of the AssertionValue depends on the context of the LDAP | The syntax of the AssertionValue depends on the context of the LDAP | |||
operation being performed. For example, the syntax of the EQUALITY | operation being performed. For example, the syntax of the EQUALITY | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 7 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 7 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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 | least one value when stored, due to access control restrictions the | |||
set may be empty when transferred from the server to the client. This | 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 { | |||
skipping to change at line 437 | skipping to change at line 435 | |||
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), | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 8 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
-- 9 reserved -- | -- 9 reserved -- | |||
referral (10), | referral (10), | |||
adminLimitExceeded (11), | adminLimitExceeded (11), | |||
unavailableCriticalExtension (12), | unavailableCriticalExtension (12), | |||
confidentialityRequired (13), | confidentialityRequired (13), | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 8 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
saslBindInProgress (14), | saslBindInProgress (14), | |||
noSuchAttribute (16), | noSuchAttribute (16), | |||
undefinedAttributeType (17), | undefinedAttributeType (17), | |||
inappropriateMatching (18), | inappropriateMatching (18), | |||
constraintViolation (19), | constraintViolation (19), | |||
attributeOrValueExists (20), | attributeOrValueExists (20), | |||
invalidAttributeSyntax (21), | invalidAttributeSyntax (21), | |||
-- 22-31 unused -- | -- 22-31 unused -- | |||
noSuchObject (32), | noSuchObject (32), | |||
aliasProblem (33), | aliasProblem (33), | |||
skipping to change at line 495 | skipping to change at line 493 | |||
[LDAPIANA]. The meanings of the result codes are given in Appendix A. | [LDAPIANA]. The meanings of the result codes are given in Appendix A. | |||
If a server detects multiple errors for an operation, only one result | If a server detects multiple errors for an operation, only one result | |||
code is returned. The server should return the result code that best | code is returned. The server should return the result code that best | |||
indicates the nature of the error encountered. | indicates the nature of the error encountered. | |||
The diagnosticMessage field of this construct may, at the server's | The diagnosticMessage field of this construct may, at the server's | |||
option, be used to return a string containing a textual, human- | option, be used to return a string containing a textual, human- | |||
readable (terminal control and page formatting characters should be | readable (terminal control and page formatting characters should be | |||
avoided) diagnostic message. As this diagnostic message is not | avoided) diagnostic message. As this diagnostic message is not | |||
standardized, implementations MUST NOT rely on the values returned. | standardized, implementations MUST NOT rely on the values returned. | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 9 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
If the server chooses not to return a textual diagnostic, the | If the server chooses not to return a textual diagnostic, the | |||
diagnosticMessage field of the LDAPResult type MUST contain a zero | diagnosticMessage field of the LDAPResult type MUST contain a zero | |||
length string. | length string. | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 9 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
For certain result codes (typically, but not restricted to | For certain result codes (typically, but not restricted to | |||
noSuchObject, aliasProblem, invalidDNSyntax and | noSuchObject, aliasProblem, invalidDNSyntax and | |||
aliasDereferencingProblem), the matchedDN field is set to the name of | aliasDereferencingProblem), the matchedDN field is set to the name of | |||
the lowest entry (object or alias) in the directory that was matched. | the lowest entry (object or alias) in the directory that was matched. | |||
If no aliases were dereferenced while attempting to locate the entry, | If no aliases were dereferenced while attempting to locate the entry, | |||
this will be a truncated form of the name provided, or if aliases | this will be a truncated form of the name provided, or if aliases | |||
were dereferenced, of the resulting name, as defined in section 12.5 | were dereferenced, of the resulting name, as defined in section 12.5 | |||
of [X.511]. Unless otherwise defined, the matchedDN field contains a | of [X.511]. Unless otherwise defined, the matchedDN field contains a | |||
zero length string with all other result codes. | zero length string with all other result codes. | |||
skipping to change at line 541 | skipping to change at line 538 | |||
Referral ::= SEQUENCE OF URL -- one or more | Referral ::= SEQUENCE OF URL -- one or more | |||
URL ::= LDAPString -- limited to characters permitted in | URL ::= LDAPString -- limited to characters permitted in | |||
-- URLs | -- URLs | |||
If the client wishes to progress the operation, it MUST follow the | If the client wishes to progress the operation, it MUST follow the | |||
referral by contacting one of the servers. If multiple URLs are | referral by contacting one of the servers. If multiple URLs are | |||
present, the client assumes that any URL may be used to progress the | present, the client assumes that any URL may be used to progress the | |||
operation. | operation. | |||
URLs for servers implementing LDAP and accessible via [TCP]/[IP] (v4 | A URL for a server implementing LDAP and accessible via [TCP]/[IP] | |||
or v6) are written according to [LDAPURL]. If an alias was | (v4 or v6) is written as an LDAP URL according to [LDAPURL]. | |||
dereferenced, the <dn> part of the URL MUST be present, with the new | ||||
target object name. If the <dn> part is present, the client MUST use | ||||
this name in its next request to progress the operation, and if it is | ||||
not present the client will use the same name as in the original | ||||
request. Some servers (e.g. participating in distributed indexing) | ||||
may provide a different filter in a referral for a search operation. | ||||
If the filter part of the LDAP URL is present, the client MUST use | ||||
this filter in its next request to progress this search, and if it is | ||||
not present the client MUST use the same filter as it used for that | ||||
Sermersheim Internet-Draft - Expires Dec 2003 Page 10 | When an LDAP URL is used, the following instructions are followed: | |||
Lightweight Directory Access Protocol Version 3 | - If an alias was dereferenced, the <dn> part of the URL MUST be | |||
present, with the new target object name. 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 % method in | ||||
[RFC2396]. | ||||
- If the <dn> part is present, the client MUST use this name in | ||||
its next request to progress the operation, and if it is not | ||||
present the client will use the same name as in the original | ||||
request. | ||||
search. Other aspects of the new request may be the same or different | Sermersheim Internet-Draft - Expires Mar 2004 Page 10 | |||
as the request which generated the referral. | Lightweight Directory Access Protocol Version 3 | |||
Note that UTF-8 characters appearing in a DN or search filter may not | - Some servers (e.g. participating in distributed indexing) may | |||
be legal for URLs (e.g. spaces) and MUST be escaped using the % | provide a different filter in a URL of a referral for a search | |||
method in [RFC2396]. | operation. | |||
- If the filter part of the LDAP URL is present, the client MUST | ||||
use this filter in its next request to progress this search, and | ||||
if it is not present the client 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 generated the referral. | ||||
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. The definition of such URLs and | |||
instructions on their use is left to future specifications. | ||||
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 { | |||
skipping to change at line 604 | skipping to change at line 607 | |||
server MUST NOT perform the operation, and MUST instead set the | server MUST NOT perform the operation, and MUST instead set the | |||
resultCode to unavailableCriticalExtension. | resultCode to unavailableCriticalExtension. | |||
If the control is unrecognized or inappropriate but the criticality | If the control is unrecognized or inappropriate but the criticality | |||
field is FALSE, the server MUST ignore the control. | field is FALSE, the server MUST ignore the control. | |||
The controlValue contains any information associated with the | The controlValue contains any information associated with the | |||
control. Its format is defined by the specification of the control. | control. Its format is defined by the specification of the control. | |||
Implementations MUST be prepared to handle arbitrary contents of the | Implementations MUST be prepared to handle arbitrary contents of the | |||
controlValue octet string, including zero bytes. It is absent only if | controlValue octet string, including zero bytes. It is absent only if | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 11 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
there is no value information which is associated with a control of | there is no value information which is associated with a control of | |||
its type. controlValues that are defined in terms of ASN.1 and BER | its type. controlValues that are defined in terms of ASN.1 and BER | |||
encoded according to Section 5.1, also follow the extensibility rules | encoded according to Section 5.1, also follow the extensibility rules | |||
in Section 4. | in Section 4. | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 11 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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, | |||
- 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, | |||
skipping to change at line 661 | skipping to change at line 665 | |||
version INTEGER (1 .. 127), | version INTEGER (1 .. 127), | |||
name LDAPDN, | name LDAPDN, | |||
authentication AuthenticationChoice } | authentication AuthenticationChoice } | |||
AuthenticationChoice ::= CHOICE { | AuthenticationChoice ::= CHOICE { | |||
simple [0] OCTET STRING, | simple [0] OCTET STRING, | |||
-- 1 and 2 reserved | -- 1 and 2 reserved | |||
sasl [3] SaslCredentials, | sasl [3] SaslCredentials, | |||
... } | ... } | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 12 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
SaslCredentials ::= SEQUENCE { | SaslCredentials ::= SEQUENCE { | |||
mechanism LDAPString, | mechanism LDAPString, | |||
credentials OCTET STRING OPTIONAL } | credentials OCTET STRING OPTIONAL } | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 12 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Parameters of the Bind Request are: | Parameters of the Bind Request are: | |||
- version: A version number indicating the version of the protocol | - version: A version number indicating the version of the protocol | |||
to be used in this protocol association. This document describes | to be used in this protocol association. This document describes | |||
version 3 of the LDAP protocol. Note that there is no version | version 3 of the LDAP protocol. Note that there is no version | |||
negotiation, and the client just sets this parameter to the | negotiation, and the client just sets this parameter to the | |||
version it desires. If the server does not support the specified | version it desires. If the server does not support the specified | |||
version, it MUST respond with protocolError in the resultCode | version, it MUST respond with protocolError in the resultCode | |||
field of the BindResponse. | field of the BindResponse. | |||
skipping to change at line 716 | skipping to change at line 720 | |||
Upon receipt of a BindRequest, the server MUST ensure there are no | Upon receipt of a BindRequest, the server MUST ensure there are no | |||
outstanding operations in progress on the connection (this simplifies | outstanding operations in progress on the connection (this simplifies | |||
server implementation). To do this, the server may cause them to be | server implementation). To do this, the server may cause them to be | |||
abandoned or allow them to finish. The server then proceeds to | abandoned or allow them to finish. The server then proceeds to | |||
authenticate the client in either a single-step, or multi-step bind | authenticate the client in either a single-step, or multi-step bind | |||
process. Each step requires the server to return a BindResponse to | process. Each step requires the server to return a BindResponse to | |||
indicate the status of authentication. | indicate the status of authentication. | |||
If the client did not bind before sending a request and receives an | If the client did not bind before sending a request and receives an | |||
operationsError, it may then send a Bind Request. If this also fails | operationsError, it may then send a Bind Request. If this also fails | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 13 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
or the client chooses not to bind on the existing connection, it may | 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 | close the connection, reopen it and begin again by first sending a | |||
PDU with a Bind Request. This will aid in interoperating with servers | PDU with a Bind Request. This will aid in interoperating with servers | |||
implementing other versions of LDAP. | implementing other versions of LDAP. | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 13 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Clients MAY send multiple Bind Requests on a connection to change | Clients MAY send multiple Bind Requests on a connection to change | |||
their credentials. Authentication from earlier binds is subsequently | their credentials. Authentication from earlier binds is subsequently | |||
ignored. A failed or abandoned Bind Operation has the effect of | ignored. | |||
leaving the LDAP association 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. | ||||
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. This is indicated by | client to invoke the BindRequest multiple times. This is indicated by | |||
the server sending a BindResponse with the resultCode set to | the server sending a BindResponse with the resultCode set to | |||
saslBindInProgress. This indicates that the server requires the | saslBindInProgress. This indicates that the server requires the | |||
client to send a new bind request, with the same sasl mechanism, to | client to send a new bind request, with the same sasl mechanism, to | |||
continue the authentication process. If at any stage the client | continue the authentication process. If at any stage the client | |||
wishes to abort the bind process it MAY unbind and then drop the | wishes to abort the bind process it MAY unbind and then drop the | |||
underlying connection. Clients MUST NOT invoke operations between two | underlying connection. Clients MUST NOT invoke operations between two | |||
Bind Requests made as part of a multi-stage bind. | Bind Requests made as part of a multi-stage bind. | |||
skipping to change at line 751 | skipping to change at line 753 | |||
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. | |||
A failed Bind Operation has the effect of leaving the connection in | ||||
an anonymous state. An abandoned Bind operation also has the effect | ||||
of leaving the connection in an anonymous state when (and if) the | ||||
server processes the abandonment of the bind. Client implementers | ||||
should note that the client has no way of being sure when (or if) an | ||||
abandon request succeeds, therefore, to arrive at a known | ||||
authentication state after abandoning a bind operation, clients may | ||||
either unbind (which results in the underlying connection being | ||||
closed) or by issuing a bind request and then examining the | ||||
BindResponse returned by the server. | ||||
4.2.2. Bind Response | 4.2.2. Bind Response | |||
The Bind Response is defined as follows. | The Bind Response is defined as follows. | |||
BindResponse ::= [APPLICATION 1] SEQUENCE { | BindResponse ::= [APPLICATION 1] SEQUENCE { | |||
COMPONENTS OF LDAPResult, | COMPONENTS OF LDAPResult, | |||
serverSaslCreds [7] OCTET STRING OPTIONAL } | serverSaslCreds [7] OCTET STRING OPTIONAL } | |||
BindResponse consists simply of an indication from the server of the | BindResponse consists simply of an indication from the server of the | |||
status of the client's request for authentication. | status of the client's request for authentication. | |||
A successful bind operation is indicated by a BindResponse with a | A successful bind operation is indicated by a BindResponse with a | |||
resultCode set to success. Otherwise, an appropriate result code is | resultCode set to success. Otherwise, an appropriate result code is | |||
set in the BindResponse. For bind, the protocolError result code may | set in the BindResponse. For bind, the protocolError result code may | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 14 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
be used to indicate that the version number supplied by the client is | be used to indicate that the version number supplied by the client is | |||
unsupported. | unsupported. | |||
If the client receives a BindResponse response where the resultCode | If the client receives a BindResponse response where the resultCode | |||
field is protocolError, it MUST close the connection as the server | field is protocolError, it MUST close the connection as the server | |||
will be unwilling to accept further operations. (This is for | will be unwilling to accept further operations. (This is for | |||
compatibility with earlier versions of LDAP, in which the bind was | compatibility with earlier versions of LDAP, in which the bind was | |||
always the first operation, and there was no negotiation.) | always the first operation, and there was no negotiation.) | |||
The serverSaslCreds are used as part of a SASL-defined bind mechanism | The serverSaslCreds are used as part of a SASL-defined bind mechanism | |||
to allow the client to authenticate the server to which it is | to allow the client to authenticate the server to which it is | |||
communicating, or to perform "challenge-response" authentication. If | communicating, or to perform "challenge-response" authentication. If | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 14 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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 BindResponse. | field is not to be included in the BindResponse. | |||
4.3. Unbind Operation | 4.3. Unbind Operation | |||
The function of the Unbind Operation is to terminate an LDAP | The function of the Unbind Operation is to terminate an LDAP | |||
association and connection. The Unbind Operation is defined as | association and connection. The Unbind Operation is defined as | |||
follows: | follows: | |||
skipping to change at line 820 | skipping to change at line 833 | |||
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 Mar 2004 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 Dec 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 result codes have these meanings when used in this | The following result codes have these meanings when used in this | |||
notification: | notification: | |||
- protocolError: The server has received data from the client in | - protocolError: The server has received data from the client in | |||
which the LDAPMessage structure could not be parsed. | which the LDAPMessage structure could not be parsed. | |||
- strongAuthRequired: The server has detected that an establish | - strongAuthRequired: The server has detected that an established | |||
security association between the client and server has | security association between the client and server has | |||
unexpectedly failed or been compromised, or that the server now | unexpectedly failed or been compromised, or that the server now | |||
requires the client to authenticate using a strong(er) mechanism. | requires the client to authenticate using a strong(er) mechanism. | |||
- unavailable: This server will stop accepting new connections and | - unavailable: This server will stop accepting new connections and | |||
operations on all existing connections, and be unavailable for an | operations on all existing connections, and be unavailable for an | |||
extended period of time. The client may make use of an alternative | extended period of time. The client may make use of an alternative | |||
server. | server. | |||
After sending this notice, the server MUST close the connection. | After sending this notice, the server MUST close the connection. | |||
skipping to change at line 875 | skipping to change at line 888 | |||
The Search Request is defined as follows: | The Search Request is defined as follows: | |||
SearchRequest ::= [APPLICATION 3] SEQUENCE { | SearchRequest ::= [APPLICATION 3] SEQUENCE { | |||
baseObject LDAPDN, | baseObject LDAPDN, | |||
scope ENUMERATED { | scope ENUMERATED { | |||
baseObject (0), | baseObject (0), | |||
singleLevel (1), | singleLevel (1), | |||
wholeSubtree (2) }, | wholeSubtree (2) }, | |||
derefAliases ENUMERATED { | derefAliases ENUMERATED { | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 16 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
neverDerefAliases (0), | neverDerefAliases (0), | |||
derefInSearching (1), | derefInSearching (1), | |||
derefFindingBaseObj (2), | derefFindingBaseObj (2), | |||
derefAlways (3) }, | derefAlways (3) }, | |||
sizeLimit INTEGER (0 .. maxInt), | sizeLimit INTEGER (0 .. maxInt), | |||
timeLimit INTEGER (0 .. maxInt), | timeLimit INTEGER (0 .. maxInt), | |||
typesOnly BOOLEAN, | typesOnly BOOLEAN, | |||
filter Filter, | filter Filter, | |||
attributes AttributeDescriptionList } | attributes AttributeSelection } | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 16 | AttributeSelection ::= SEQUENCE OF | |||
Lightweight Directory Access Protocol Version 3 | LDAPString | |||
-- constrained to the attributeSelection below | ||||
Filter ::= CHOICE { | Filter ::= CHOICE { | |||
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, | |||
skipping to change at line 928 | skipping to change at line 946 | |||
which the search is to be performed. | which the search is to be performed. | |||
- scope: An indicator of the scope of the search to be performed. | - scope: An indicator of the scope of the search to be performed. | |||
The semantics of the possible values of this field are identical | The semantics of the possible values of this field are identical | |||
to the semantics of the scope field in the X.511 Search Operation. | to the semantics of the scope field in the X.511 Search Operation. | |||
- derefAliases: An indicator as to how alias objects (as defined in | - derefAliases: An indicator as to how alias objects (as defined in | |||
[X.501]) are to be handled in searching. The semantics of the | [X.501]) are to be handled in searching. The semantics of the | |||
possible values of this field are: | possible values of this field are: | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 17 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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: While searching, dereference any alias | derefInSearching: While searching, dereference any alias | |||
object subordinate to the base object which is also in the | object subordinate to the base object which is also in the | |||
search scope. The filter is applied to the dereferenced | search scope. The filter is applied to the dereferenced | |||
object(s). If the search scope is wholeSubtree, the search | object(s). If the search scope is wholeSubtree, the search | |||
continues in the subtree of any dereferenced object. | continues in the subtree of any dereferenced object. | |||
Aliases in that subtree are also dereferenced. Servers | Aliases in that subtree are also dereferenced. Servers | |||
SHOULD detect looping in this process to prevent denial of | SHOULD detect looping in this process to prevent denial of | |||
service attacks and duplicate entries. | service attacks and duplicate entries. | |||
Sermersheim Internet-Draft - Expires Dec 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. | |||
- 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 | |||
skipping to change at line 985 | skipping to change at line 1003 | |||
(Implementor's note: the 'not' filter is an example of a tagged | (Implementor's note: the 'not' filter is an example of a tagged | |||
choice in an implicitly-tagged module. In BER this is treated as | choice in an implicitly-tagged module. In BER this is treated as | |||
if the tag was explicit.) | if the tag was explicit.) | |||
A server MUST evaluate filters according to the three-valued logic | A server MUST evaluate filters according to the three-valued logic | |||
of X.511 (1993) section 7.8.1. In summary, a filter is evaluated | of X.511 (1993) section 7.8.1. In summary, a filter is evaluated | |||
to either "TRUE", "FALSE" or "Undefined". If the filter evaluates | to either "TRUE", "FALSE" or "Undefined". If the filter evaluates | |||
to TRUE for a particular entry, then the attributes of that entry | to TRUE for a particular entry, then the attributes of that entry | |||
are returned as part of the search result (subject to any | are returned as part of the search result (subject to any | |||
applicable access control restrictions). If the filter evaluates | applicable access control restrictions). If the filter evaluates | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 18 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
to FALSE or Undefined, then the entry is ignored for the search. | to FALSE or Undefined, then the entry is ignored for the search. | |||
A filter of the "and" choice is TRUE if all the filters in the SET | A filter of the "and" choice is TRUE if all the filters in the SET | |||
OF evaluate to TRUE, FALSE if at least one filter is FALSE, and | OF evaluate to TRUE, FALSE if at least one filter is FALSE, and | |||
otherwise Undefined. A filter of the "or" choice is FALSE if all | otherwise Undefined. A filter of the "or" choice is FALSE if all | |||
of the filters in the SET OF evaluate to FALSE, TRUE if at least | of the filters in the SET OF evaluate to FALSE, TRUE if at least | |||
one filter is TRUE, and Undefined otherwise. A filter of the "not" | one filter is TRUE, and Undefined otherwise. A filter of the "not" | |||
choice is TRUE if the filter being negated is FALSE, FALSE if it | choice is TRUE if the filter being negated is FALSE, FALSE if it | |||
is TRUE, and Undefined if it is Undefined. | is TRUE, and Undefined if it is Undefined. | |||
The present match evaluates to TRUE where there is an attribute or | The present match evaluates to TRUE where there is an attribute or | |||
subtype of the specified attribute description present in an | subtype of the specified attribute description present in an | |||
Sermersheim Internet-Draft - Expires Dec 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 for equalityMatch filter items is defined by the | The matching rule for equalityMatch filter items is defined by the | |||
EQUALITY matching rule for the attribute type. | EQUALITY matching rule for the attribute type. | |||
The matching rule for AssertionValues in a substrings filter item | The matching rule for AssertionValues in a substrings filter item | |||
is defined by the SUBSTR matching rule for the attribute type. | is defined by the SUBSTR matching rule for the attribute type. | |||
Note that the AssertionValue in a substrings filter item MUST | ||||
conform to the assertion syntax of the EQUALITY matching rule for | ||||
the attribute type rather than the assertion syntax of the SUBSTR | ||||
matching rule for the attribute type. The entire SubstringFilter | ||||
is converted into an assertion value of the substrings matching | ||||
rule prior to applying the rule. | ||||
The matching rule for greaterOrEqual and lessOrEqual filter items | The matching rule for greaterOrEqual and lessOrEqual filter items | |||
is defined by the ORDERING matching rule for the attribute type. | is defined by the ORDERING matching rule for the attribute type. | |||
The matching semantics for approxMatch filter items is | The matching semantics for approxMatch filter items is | |||
implementation-defined. If approximate matching is not supported | implementation-defined. If approximate matching is not supported | |||
by the server, the filter item should be treated as an | by the server, the filter item should be treated as an | |||
equalityMatch. | equalityMatch. | |||
The extensibleMatch is new in this version of LDAP. If the | The extensibleMatch is new in this version of LDAP. If the | |||
skipping to change at line 1037 | skipping to change at line 1061 | |||
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 | is set to TRUE, the match is applied against all the | |||
AttributeValueAssertions in an entry's distinguished name as well, | AttributeValueAssertions in an entry's distinguished name as well, | |||
and also evaluates to TRUE if there is at least one attribute in | and also evaluates to TRUE if there is at least one attribute in | |||
the distinguished name for which the filter item evaluates to | the distinguished name for which the filter item evaluates to | |||
TRUE. (Editors note: The dnAttributes field is present so that | TRUE. (Editors note: The dnAttributes field is present so that | |||
there does not need to be multiple versions of generic matching | there does not need to be multiple versions of generic matching | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 19 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
rules such as for word matching, one to apply to entries and | rules such as for word matching, one to apply to entries and | |||
another to apply to entries 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. | |||
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 | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 19 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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]. | |||
- 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. LDAPString values of this | |||
values which may be used: an empty list with no attributes, and | field are constrained to the following ABNF: | |||
the attribute description string "*". Both of these signify that | ||||
all user attributes are to be returned. (The "*" allows the client | attributeSelection = noattrs / | |||
to request all user attributes in addition to any specified | *( attributedescription / specialattr ) | |||
operational attributes). | ||||
noattrs = %x31 %x2E %x31 ; "1.1" | ||||
attributedescription = ; attributedescription from 2.5 of [Models] | ||||
specialattr = ASTERISK | ||||
ASTERISK = %x2A ; asterisk ("*") | ||||
There are two special values which may be used: an empty list with | ||||
no attributes, and the attribute description string "*". Both of | ||||
these signify that all user attributes are to be returned. (The | ||||
"*" allows the client to request all user attributes in addition | ||||
to any specified 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 | |||
descriptions in the list which are not recognized, they are | descriptions in the list which are not recognized, they are | |||
ignored by the server. | ignored by the server. | |||
If the client does not want any attributes returned, it can | If the client does not want any attributes returned, it can | |||
specify a list containing only the attribute with OID "1.1". This | specify a list containing only the attribute with OID "1.1". This | |||
OID was chosen arbitrarily and does not correspond to any | OID was chosen arbitrarily and does not correspond to any | |||
attribute in use. | attribute in use. | |||
Client implementors should note that even if all user attributes | Client implementors should note that even if all user attributes | |||
are requested, some attributes of the entry may not be included in | are requested, some attributes of the entry may not be included in | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 20 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
search results due to access controls or other restrictions. | search results due to access controls or other restrictions. | |||
Furthermore, servers will not return operational attributes, such | Furthermore, servers will not return operational attributes, such | |||
as objectClasses or attributeTypes, unless they are listed by | as objectClasses or attributeTypes, unless they are listed by | |||
name, since there may be extremely large number of values for | name, since there may be extremely large number of values for | |||
certain operational attributes. (A list of operational attributes | certain operational attributes. (A list of operational attributes | |||
for use in LDAP is given in [Syntaxes].) | for use in LDAP is given in [Syntaxes].) | |||
Note that an X.500 "list"-like operation can be emulated by the | Note that an X.500 "list"-like operation can be emulated by the | |||
client requesting a one-level LDAP search operation with a filter | client requesting a one-level LDAP search operation with a filter | |||
checking for the presence of the objectClass attribute, and that an | checking for the presence of the objectClass attribute, and that an | |||
skipping to change at line 1112 | skipping to change at line 1153 | |||
messages containing SearchResultEntry, SearchResultReference, or | messages containing SearchResultEntry, SearchResultReference, or | |||
SearchResultDone data types. | SearchResultDone data types. | |||
SearchResultEntry ::= [APPLICATION 4] SEQUENCE { | SearchResultEntry ::= [APPLICATION 4] SEQUENCE { | |||
objectName LDAPDN, | objectName LDAPDN, | |||
attributes PartialAttributeList } | attributes PartialAttributeList } | |||
PartialAttributeList ::= SEQUENCE OF SEQUENCE { | PartialAttributeList ::= SEQUENCE OF SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 20 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
-- 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 | |||
-- 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 URL | SearchResultReference ::= [APPLICATION 19] SEQUENCE OF URL | |||
-- at least one URL element must be present | -- at least one URL element must be present | |||
SearchResultDone ::= [APPLICATION 5] LDAPResult | SearchResultDone ::= [APPLICATION 5] LDAPResult | |||
skipping to change at line 1139 | skipping to change at line 1176 | |||
The server will return to the client a sequence of responses in | The server will return to the client a sequence of responses in | |||
separate LDAP messages. There may be zero or more responses | separate LDAP messages. There may be zero or more responses | |||
containing SearchResultEntry, one for each entry found during the | containing SearchResultEntry, one for each entry found during the | |||
search. There may also be zero or more responses containing | search. There may also be zero or more responses containing | |||
SearchResultReference, one for each area not explored by this server | SearchResultReference, one for each area not explored by this server | |||
during the search. The SearchResultEntry and SearchResultReference | 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 to be returned by the | responses and all SearchResultEntry responses to be returned by the | |||
server, the server will return a response containing the | server, the server will return a response containing the | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 21 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
SearchResultDone, which contains an indication of success, or | SearchResultDone, which contains an indication of success, or | |||
detailing any errors that have occurred. | detailing any errors that have occurred. | |||
Each entry returned in a SearchResultEntry will contain all | Each entry returned in a SearchResultEntry will contain all | |||
appropriate attributes as specified in the attributes field of the | appropriate attributes as specified in the attributes field of the | |||
Search Request. Return of attributes is subject to access control and | Search Request. Return of attributes is subject to access control and | |||
other administrative policy. | other administrative policy. | |||
Some attributes may be constructed by the server and appear in a | Some attributes may be constructed by the server and appear in a | |||
SearchResultEntry attribute list, although they are not stored | SearchResultEntry attribute list, although they are not stored | |||
skipping to change at line 1169 | skipping to change at line 1210 | |||
SHOULD return the ldapOID form of the attribute type. | SHOULD return the ldapOID form of the 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 | |||
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 | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 21 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
thus has not searched any entries; in this case it would return a | thus has not searched any entries; in this case it would return a | |||
SearchResultDone containing a referral result code. | SearchResultDone containing a referral result code. | |||
If a server holds a copy or partial copy of the subordinate naming | If a server holds a copy or partial copy of the subordinate naming | |||
context, it may use the search filter to determine whether or not to | context, it may use the search filter to determine whether or not to | |||
return a SearchResultReference response. Otherwise | return a SearchResultReference response. Otherwise | |||
SearchResultReference responses are always returned when in scope. | SearchResultReference responses are always returned when in scope. | |||
The SearchResultReference is of the same data type as the Referral. | The SearchResultReference is of the same data type as the Referral. | |||
URLs for servers implementing LDAP and accessible via [TCP]/[IP] (v4 | ||||
or v6) are written according to [LDAPURL]. The <dn> part MUST be | ||||
present in the URL, with the new target object name. The client MUST | ||||
use this name in its next request. Some servers (e.g. part of a | ||||
distributed index exchange system) may provide a different filter in | ||||
the URLs of the 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 progress the search, and if the filter part is absent | ||||
the client will use again the same filter. If the originating search | ||||
scope was singleLevel, the scope part of the URL will be baseObject. | ||||
Other aspects of the new search request may be the same or different | ||||
as the search which generated the continuation references. | ||||
Other kinds of URLs may be returned so long as the operation could be | A URL for a server implementing LDAP and accessible via [TCP]/[IP] | |||
performed using that protocol. | (v4 or v6) is written as an LDAP URL according to [LDAPURL]. | |||
The name of an unexplored subtree in a SearchResultReference need not | When an LDAP URL is used, the following instructions are followed: | |||
be subordinate to the base object. | - The <dn> part of the URL MUST be present, with the new target | |||
object name. The client MUST use this name when following the | ||||
referral. Note that UTF-8 characters appearing in a DN or search | ||||
filter may not be legal for URLs (e.g. spaces) and MUST be | ||||
escaped using the % method in [RFC2396]. | ||||
- Some servers (e.g. participating in distributed indexing) may | ||||
provide a different filter in a URL of a SearchResultReference. | ||||
- If the filter part of the URL is present, the client MUST use | ||||
this filter in its next request to progress this search, and if | ||||
Sermersheim Internet-Draft - Expires Mar 2004 Page 22 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
it is not present the client MUST use the same filter as it used | ||||
for that search. | ||||
- If the originating search scope was singleLevel, the scope part | ||||
of the URL will be baseObject. | ||||
- Other aspects of the new search request may be the same or | ||||
different as the search request which generated the | ||||
SearchResultReference. | ||||
- The name of an unexplored subtree in a SearchResultReference | ||||
need not be subordinate to the base object. | ||||
Other kinds of URLs may be returned, so long as the operation could | ||||
be performed using that protocol. The definition of such URLs and | ||||
instructions on their use is left to future specifications. | ||||
In order to complete the search, the client MUST issue a new search | In order to complete the search, the client MUST issue a new search | |||
operation for each SearchResultReference that is returned. Note that | operation for each SearchResultReference that is returned. Note that | |||
the abandon operation described in section 4.11 applies only to a | the abandon operation described in section 4.11 applies only to a | |||
particular operation sent on an association between a client and | particular operation sent on an association between a client and | |||
server, and if the client has multiple outstanding search operations, | server, and if the client has multiple outstanding search operations, | |||
it MUST abandon each operation individually. | it MUST abandon each operation individually. | |||
4.5.3.1. Example | 4.5.3.1. Example | |||
skipping to change at line 1226 | skipping to change at line 1276 | |||
"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 } | |||
SearchResultReference { | SearchResultReference { | |||
ldap://hostd/OU=Roles,DC=Example,DC=NET } | ldap://hostd/OU=Roles,DC=Example,DC=NET } | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 22 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
SearchResultDone (success) | SearchResultDone (success) | |||
Client implementors should note that when following a | Client implementors should note that when following a | |||
SearchResultReference, additional SearchResultReference may be | SearchResultReference, additional SearchResultReference may be | |||
generated. Continuing the example, if the client contacted the server | generated. Continuing the example, if the client contacted the server | |||
(hostb) and issued the search for the subtree | (hostb) and issued the search for the subtree | |||
"OU=People,DC=Example,DC=NET", the server might respond as follows: | "OU=People,DC=Example,DC=NET", the server might respond as follows: | |||
SearchResultEntry for OU=People,DC=Example,DC=NET | SearchResultEntry for OU=People,DC=Example,DC=NET | |||
SearchResultReference { | SearchResultReference { | |||
ldap://hoste/OU=Managers,OU=People,DC=Example,DC=NET } | ldap://hoste/OU=Managers,OU=People,DC=Example,DC=NET } | |||
SearchResultReference { | SearchResultReference { | |||
ldap://hostf/OU=Consultants,OU=People,DC=Example,DC=NET } | ldap://hostf/OU=Consultants,OU=People,DC=Example,DC=NET } | |||
SearchResultDone (success) | SearchResultDone (success) | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 23 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
If the contacted server does not hold the base object for the search, | If the contacted server does not hold the base object for the search, | |||
then it will return a referral to the client. For example, if the | then it will return a referral to the client. For example, if the | |||
client requests a subtree search of "DC=Example,DC=ORG" to hosta, the | client requests a subtree search of "DC=Example,DC=ORG" to hosta, the | |||
server may return only a SearchResultDone containing a referral. | server may return only a SearchResultDone containing a referral. | |||
SearchResultDone (referral) { | SearchResultDone (referral) { | |||
ldap://hostg/DC=Example,DC=ORG??sub } | ldap://hostg/DC=Example,DC=ORG??sub } | |||
4.6. Modify Operation | 4.6. Modify Operation | |||
The Modify Operation allows a client to request that a modification | The Modify Operation allows a client to request that a modification | |||
of an entry be performed on its behalf by a server. The Modify | of an entry be performed on its behalf by a server. The Modify | |||
Request is defined as follows: | Request is defined as follows: | |||
ModifyRequest ::= [APPLICATION 6] SEQUENCE { | ModifyRequest ::= [APPLICATION 6] SEQUENCE { | |||
object LDAPDN, | object LDAPDN, | |||
modification SEQUENCE OF SEQUENCE { | changes SEQUENCE OF SEQUENCE { | |||
operation ENUMERATED { | operation ENUMERATED { | |||
add (0), | add (0), | |||
delete (1), | delete (1), | |||
replace (2) }, | replace (2) }, | |||
modification AttributeTypeAndValues } } | modification Attribute } } | |||
AttributeTypeAndValues ::= SEQUENCE { | ||||
type AttributeDescription, | ||||
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 | |||
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 | - changes: A list of modifications to be performed on the entry. The | |||
entry. The entire list of entry modifications MUST be performed in | entire list of modifications MUST be performed in the order they | |||
the order they are listed, as a single atomic operation. While | are listed, as a single atomic operation. While individual | |||
individual modifications may violate the directory schema, the | modifications may violate certain aspects of the directory schema | |||
(such as the object class definition and DIT content rule), the | ||||
Sermersheim Internet-Draft - Expires Dec 2003 Page 23 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
in each modification construct have the following semantics | ||||
respectively: | ||||
add: add values listed to the given attribute, creating the | - operation: Used to specify the type of modification being | |||
attribute if necessary; | performed. Each operation type acts on the following | |||
modification. The values of this field have the following | ||||
semantics respectively: | ||||
delete: delete values listed from the given attribute, | add: add values listed to the modification attribute, | |||
removing the entire attribute if no values are listed, or | creating the attribute if necessary; | |||
if all current values of the attribute are listed for | ||||
deletion; | ||||
replace: replace all existing values of the given attribute | delete: delete values listed from the modification | |||
with the new values listed, creating the attribute if it | attribute, removing the entire attribute if no values are | |||
did not already exist. A replace with no value will delete | listed, or if all current values of the attribute are | |||
the entire attribute if it exists, and is ignored if the | listed for deletion; | |||
attribute does not exist. | ||||
Sermersheim Internet-Draft - Expires Mar 2004 Page 24 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
replace: replace all existing values of the modification | ||||
attribute with the new values listed, creating the | ||||
attribute if it did not already exist. A replace with no | ||||
value will delete the entire attribute if it exists, and is | ||||
ignored if the attribute does not exist. | ||||
- modification: An Attribute (which may have an empty SET of vals) | ||||
used to hold the Attribute Type or Attribute Type and values | ||||
being modified. | ||||
The result of the modification attempted by the server upon receipt | The result of the modification attempted by the server upon receipt | |||
of a Modify Request is returned in a Modify Response, defined as | of a Modify Request is returned in a Modify Response, defined as | |||
follows: | follows: | |||
ModifyResponse ::= [APPLICATION 7] LDAPResult | ModifyResponse ::= [APPLICATION 7] LDAPResult | |||
Upon receipt of a Modify Request, a server will perform the necessary | Upon receipt of a Modify Request, a server will perform the necessary | |||
modifications to the DIT. | modifications to the DIT. | |||
skipping to change at line 1334 | skipping to change at line 1386 | |||
the Modify Operation. If the association changes or the connection | the Modify Operation. If the association changes or the connection | |||
fails, whether the modification occurred or not is indeterminate. | fails, whether the modification occurred or not is indeterminate. | |||
The Modify Operation cannot be used to remove from an entry any of | The Modify Operation cannot be used to remove from an entry any of | |||
its distinguished values, 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 notAllowedOnRDN result code. The Modify DN | server returning the notAllowedOnRDN result code. The Modify DN | |||
Operation described in section 4.9 is used to rename an entry. | Operation described in section 4.9 is used to rename an entry. | |||
Note that due to the simplifications made in LDAP, there is not a | Note that due to the simplifications made in LDAP, there is not a | |||
direct mapping of the modifications in an LDAP ModifyRequest onto the | direct mapping of the changes in an LDAP ModifyRequest onto the | |||
EntryModifications of a DAP ModifyEntry operation, and different | changes of a DAP ModifyEntry operation, and different implementations | |||
implementations of LDAP-DAP gateways may use different means of | of LDAP-DAP gateways may use different means of representing the | |||
representing the change. If successful, the final effect of the | change. If successful, the final effect of the operations on the | |||
operations on the entry MUST be identical. | entry MUST be identical. | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 24 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
4.7. Add Operation | 4.7. Add Operation | |||
The Add Operation allows a client to request the addition of an entry | The Add Operation allows a client to request the addition of an entry | |||
into the directory. The Add Request is defined as follows: | into the directory. The Add Request is defined as follows: | |||
AddRequest ::= [APPLICATION 8] SEQUENCE { | AddRequest ::= [APPLICATION 8] SEQUENCE { | |||
entry LDAPDN, | entry LDAPDN, | |||
attributes AttributeList } | attributes AttributeList } | |||
AttributeList ::= SEQUENCE OF SEQUENCE { | AttributeList ::= SEQUENCE OF SEQUENCE { | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 25 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
type AttributeDescription, | type AttributeDescription, | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
Parameters of the Add Request are: | Parameters of the Add Request are: | |||
- entry: the Distinguished Name of the entry to be added. Note that | - entry: the Distinguished Name of the entry to be added. Note that | |||
the server will not dereference any aliases in locating the entry | the server will not dereference any aliases in locating the entry | |||
to be added. | to be added. | |||
- attributes: the list of attributes that make up the content of the | - attributes: the list of attributes that make up the content of the | |||
skipping to change at line 1396 | skipping to change at line 1449 | |||
requested entry. The result of the add attempt will be returned to | requested entry. The result of the add attempt will be returned to | |||
the client in the Add Response, defined as follows: | the client in the Add Response, defined as follows: | |||
AddResponse ::= [APPLICATION 9] LDAPResult | AddResponse ::= [APPLICATION 9] LDAPResult | |||
A response of success indicates that the new entry is present in the | A response of success indicates that the new entry is present in the | |||
directory. | directory. | |||
4.8. Delete Operation | 4.8. Delete Operation | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 25 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
The Delete Operation allows a client to request the removal of an | The Delete Operation allows a client to request the removal of an | |||
entry from the directory. The Delete Request is defined as follows: | entry from the directory. The Delete Request is defined as follows: | |||
DelRequest ::= [APPLICATION 10] LDAPDN | DelRequest ::= [APPLICATION 10] LDAPDN | |||
The Delete Request consists of the Distinguished Name of the entry to | The Delete Request consists of the Distinguished Name of the entry to | |||
be deleted. Note that the server will not dereference aliases while | be deleted. Note that the server will not dereference aliases while | |||
resolving the name of the target entry to be removed, and that only | resolving the name of the target entry to be removed, and that only | |||
leaf entries (those with no subordinate entries) can be deleted with | leaf entries (those with no subordinate entries) can be deleted with | |||
this operation. | this operation. | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 26 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
The result of the delete attempted by the server upon receipt of a | The result of the delete attempted by the server upon receipt of a | |||
Delete Request is returned in the Delete Response, defined as | Delete Request is returned in the Delete Response, defined as | |||
follows: | follows: | |||
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. | |||
skipping to change at line 1451 | skipping to change at line 1504 | |||
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. | |||
- newSuperior: if present, this is the Distinguished Name of an | - newSuperior: if present, this is the Distinguished Name of an | |||
existing object entry which becomes the immediate superior | existing object entry which becomes the immediate superior | |||
(parent)of the existing entry. | (parent)of the existing entry. | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 26 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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 | |||
the name change. The result of the name change attempt will be | the name change. The result of the name change attempt will be | |||
returned to the client in the Modify DN Response. | returned to the client in the Modify DN Response. | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 27 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
For example, if the entry named in the "entry" parameter was "cn=John | For example, if the entry named in the "entry" parameter was "cn=John | |||
Smith,c=US", the newrdn parameter was "cn=John Cougar Smith", and the | Smith,c=US", the newrdn parameter was "cn=John Cougar Smith", and the | |||
newSuperior parameter was absent, then this operation would attempt | newSuperior parameter was absent, then this operation would attempt | |||
to rename the entry to be "cn=John Cougar Smith,c=US". If there was | to rename the entry to be "cn=John Cougar Smith,c=US". If there was | |||
already an entry with that name, the operation would fail with the | already an entry with that name, the operation would fail with the | |||
entryAlreadyExists result code. | entryAlreadyExists result code. | |||
The object named in newSuperior MUST exist. For example, if the | The object named in newSuperior MUST exist. For example, if the | |||
client attempted to add "CN=JS,DC=Example,DC=NET", the | client attempted to add "CN=JS,DC=Example,DC=NET", the | |||
"DC=Example,DC=NET" entry did not exist, and the "DC=NET" entry did | "DC=Example,DC=NET" entry did not exist, and the "DC=NET" entry did | |||
skipping to change at line 1508 | skipping to change at line 1561 | |||
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: | |||
- 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. | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 27 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- 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. | |||
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 | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 28 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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. In the event that the attribute or | client in the Compare Response. In the event that the attribute or | |||
subtype is not present in the entry, the resultCode field is set to | subtype is not present in the entry, the resultCode field is set to | |||
noSuchAttribute. If the attribute is unknown, the resultCode is set | noSuchAttribute. If the attribute is unknown, the resultCode is set | |||
to undefinedAttributeType. Note that errors and the result of | to undefinedAttributeType. 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 | |||
skipping to change at line 1546 | skipping to change at line 1599 | |||
that the server abandon an outstanding operation. The Abandon Request | that the server abandon an outstanding operation. The Abandon Request | |||
is defined as follows: | is defined as follows: | |||
AbandonRequest ::= [APPLICATION 16] MessageID | AbandonRequest ::= [APPLICATION 16] MessageID | |||
The MessageID MUST be that of an operation which was requested | The MessageID MUST be that of an operation which was requested | |||
earlier in this LDAP association. The abandon request itself has its | earlier in this LDAP association. The abandon request itself has its | |||
own message id. This is distinct from the id of the earlier operation | own message id. This is distinct from the id of the earlier operation | |||
being abandoned. | being abandoned. | |||
There is no response defined in the Abandon operation. Upon reciept | There is no response defined in the Abandon operation. Upon receipt | |||
of an AbandonRequest, the server MAY abandon the operation identified | of an AbandonRequest, the server MAY abandon the operation identified | |||
by the MessageID. Operation responses are not sent for successfully | by the MessageID. Operation responses are not sent for successfully | |||
abandoned operations, thus a client SHOULD NOT use the Abandon | abandoned operations, thus a client SHOULD NOT use the Abandon | |||
operation when it needs an indication of whether the operation was | operation when it needs an indication of whether the operation was | |||
abandoned. For example, if a client performs an update operation | abandoned. For example, if a client performs an update operation | |||
(Add, Modify, or ModifyDN), and it needs to know whether the | (Add, Modify, or ModifyDN), and it needs to know whether the | |||
directory has changed due to the operation, it should not use the | directory has changed due to the operation, it should not use the | |||
Abandon operation to cancel the update operation. | Abandon operation to cancel the update 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 | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 28 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
request immediately, and MUST NOT send the SearchResponseDone. Of | request immediately, and MUST NOT send the SearchResponseDone. Of | |||
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 Mar 2004 Page 29 | ||||
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 1621 | skipping to change at line 1673 | |||
protocolError result code. | protocolError result code. | |||
The requestValue and responseValue fields contain any information | The requestValue and responseValue fields contain any information | |||
associated with the operation. The format of these fields is defined | associated with the operation. The format of these fields is defined | |||
by the specification of the extended operation. Implementations MUST | by the specification of the extended operation. Implementations MUST | |||
be prepared to handle arbitrary contents of these fields, including | be prepared to handle arbitrary contents of these fields, including | |||
zero bytes. Values that are defined in terms of ASN.1 and BER encoded | zero bytes. Values that are defined in terms of ASN.1 and BER encoded | |||
according to Section 5.1, also follow the extensibility rules in | according to Section 5.1, also follow the extensibility rules in | |||
Section 4. | Section 4. | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 29 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Extended operations may be specified in other documents. The | Extended operations may be specified in other documents. The | |||
specification of an extended operation consists of: | specification of an extended operation consists of: | |||
- the OBJECT IDENTIFIER assigned to the ExtendedRequest.requestName | - the OBJECT IDENTIFIER assigned to the ExtendedRequest.requestName | |||
(and possibly ExtendedResponse.responseName), | (and possibly ExtendedResponse.responseName), | |||
- the format of the contents of the requestValue and responseValue | - the format of the contents of the requestValue and responseValue | |||
(if any), | (if any), | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 30 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- the semantics of the operation, | - the semantics of the operation, | |||
Servers list the requestName of all ExtendedRequests they recognize | Servers list the requestName of all ExtendedRequests they recognize | |||
in the supportedExtension attribute [Models] in the root DSE. | in the supportedExtension attribute [Models] in the root DSE. | |||
requestValues and responseValues that are defined in terms of ASN.1 | requestValues and responseValues that are defined in terms of ASN.1 | |||
and BER encoded according to Section 5.1, also follow the | and BER encoded according to Section 5.1, also follow the | |||
extensibility rules in Section 4. | extensibility rules in Section 4. | |||
4.13. Start TLS Operation | 4.13. Start TLS Operation | |||
skipping to change at line 1676 | skipping to change at line 1728 | |||
the other values outlined in section 4.13.2.2. | the other values outlined in section 4.13.2.2. | |||
4.13.2.1. "Success" Response | 4.13.2.1. "Success" Response | |||
If the Start TLS Response contains a result code of success, this | If the Start TLS Response contains a result code of success, this | |||
indicates that the server is willing and able to negotiate TLS. Refer | indicates that the server is willing and able to negotiate TLS. Refer | |||
to section 5.3 of [AuthMeth] for details. | to section 5.3 of [AuthMeth] for details. | |||
4.13.2.2. Response other than "success" | 4.13.2.2. Response other than "success" | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 30 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
If the ExtendedResponse contains a result code other than success, | If the ExtendedResponse contains a result code other than success, | |||
this indicates that the server is unwilling or unable to negotiate | this indicates that the server is unwilling or unable to negotiate | |||
TLS. The following result codes have these meanings for this | TLS. The following result codes have these meanings for this | |||
operation: | operation: | |||
- operationsError: operations sequencing incorrect; e.g. TLS already | - operationsError: operations sequencing incorrect; e.g. TLS already | |||
established) | established) | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 31 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- protocolError: (TLS not supported or incorrect PDU structure) | - protocolError: (TLS not supported or incorrect PDU structure) | |||
- unavailable: (e.g. some major problem with TLS, or server is | - unavailable: (e.g. some major problem with TLS, or server is | |||
shutting down) | shutting down) | |||
The server MUST return operationsError if the client violates any of | The server MUST return operationsError if the client violates any of | |||
the Start TLS extended operation sequencing requirements described in | the Start TLS extended operation sequencing requirements described in | |||
section 5.3 of [AuthMeth]. | section 5.3 of [AuthMeth]. | |||
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 | |||
skipping to change at line 1729 | skipping to change at line 1781 | |||
Before sending a TLS closure alert, the client MUST either wait for | Before sending a TLS closure alert, the client MUST either wait for | |||
any outstanding LDAP operations to complete, or explicitly abandon | any outstanding LDAP operations to complete, or explicitly abandon | |||
them. | 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. | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 31 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
After the TLS connection has been closed, the server MUST NOT send | After the TLS connection has been closed, the server MUST NOT send | |||
responses to any request message received before the TLS closure. | responses to any request message received before the TLS closure. | |||
4.13.3.2. Abrupt Closure | 4.13.3.2. Abrupt Closure | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 32 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Either the client or server MAY abruptly close the TLS connection by | Either the client or server MAY abruptly close the TLS connection by | |||
dropping the underlying transfer protocol connection. In this | dropping the underlying transfer protocol connection. In this | |||
circumstance, a server MAY send the client a Notice of Disconnection | circumstance, a server MAY send the client a Notice of Disconnection | |||
before dropping the underlying LDAP connection. | before dropping the underlying LDAP connection. | |||
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. | |||
skipping to change at line 1782 | skipping to change at line 1834 | |||
noted. | noted. | |||
5.2. Transfer Protocols | 5.2. Transfer Protocols | |||
This protocol is designed to run over connection-oriented, reliable | This protocol is designed to run over connection-oriented, reliable | |||
transports, with all 8 bits in an octet being significant in the data | transports, with all 8 bits in an octet being significant in the data | |||
stream. | stream. | |||
5.2.1. Transmission Control Protocol (TCP) | 5.2.1. Transmission Control Protocol (TCP) | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 32 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
The encoded LDAPMessage PDUs are mapped directly onto the [TCP] | The encoded LDAPMessage PDUs are mapped directly onto the [TCP] | |||
bytestream using the BER-based encoding described in section 5.1. It | bytestream using the BER-based encoding described in section 5.1. It | |||
is recommended that server implementations running over the TCP | is recommended that server implementations running over the TCP | |||
provide a protocol listener on the assigned port, 389. Servers may | provide a protocol listener on the assigned port, 389. Servers may | |||
instead provide a listener on a different port number. Clients MUST | instead provide a listener on a different port number. Clients MUST | |||
support contacting servers on any valid TCP port. | support contacting servers on any valid TCP port. | |||
6. Implementation Guidelines | 6. Implementation Guidelines | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 33 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
6.1. Server Implementations | 6.1. Server Implementations | |||
The server MUST be capable of recognizing all the mandatory attribute | The server MUST be capable of recognizing all the mandatory attribute | |||
types specified in [Models], and implement the syntaxes used by those | types specified in [Models], and implement the syntaxes used by those | |||
attributes specified in [Syntaxes]. Servers MAY also recognize | attributes specified in [Syntaxes]. Servers MAY also recognize | |||
additional attribute type names. | additional attribute type names. | |||
6.2. Client Implementations | 6.2. Client Implementations | |||
Clients that follow referrals or search continuation references MUST | Clients that follow referrals or search continuation references MUST | |||
skipping to change at line 1835 | skipping to change at line 1887 | |||
It is also permitted that the server can return its credentials to | It is also permitted that the server can return its credentials to | |||
the client, if it chooses to do so. | the client, if it chooses to do so. | |||
Use of cleartext password is strongly discouraged where the | Use of cleartext password is strongly discouraged where the | |||
underlying transport service cannot guarantee confidentiality and may | underlying transport service cannot guarantee confidentiality and may | |||
result in disclosure of the password to unauthorized parties. | result in disclosure of the password to unauthorized parties. | |||
Requirements of authentication methods, SASL mechanisms, and TLS are | Requirements of authentication methods, SASL mechanisms, and TLS are | |||
described in [AUTHMETH]. | described in [AUTHMETH]. | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 33 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
When used with SASL, it should be noted that the name field of the | When used with SASL, it should be noted that the name field of the | |||
BindRequest is not protected against modification. Thus if the | BindRequest is not protected against modification. Thus if the | |||
distinguished name of the client (an LDAPDN) is agreed through the | distinguished name of the client (an LDAPDN) is agreed through the | |||
negotiation of the credentials, it takes precedence over any value in | negotiation of the credentials, it takes precedence over any value in | |||
the unprotected name field. | the unprotected name field. | |||
Server implementors should plan for the possibility of an identity or | ||||
associated with an LDAP connection being deleted, renamed, or | ||||
modified, and take appropriate actions to prevent insecure side | ||||
Sermersheim Internet-Draft - Expires Mar 2004 Page 34 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
effects. The way in which this is dealt with is implementation | ||||
specific. Likewise, server implementors should plan for the | ||||
possibility of an associated identities credentials becoming invalid. | ||||
Implementations which cache attributes and entries obtained via LDAP | Implementations which cache attributes and entries obtained via LDAP | |||
MUST ensure that access controls are maintained if that information | MUST ensure that access controls are maintained if that information | |||
is to be provided to multiple clients, since servers may have access | is to be provided to multiple clients, since servers may have access | |||
control policies which prevent the return of entries or attributes in | control policies which prevent the return of entries or attributes in | |||
search results except to particular authenticated clients. For | search results except to particular authenticated clients. For | |||
example, caches could serve result information only to the client | example, caches could serve result information only to the client | |||
whose request caused it to be in the cache. | whose request caused it to be in the cache. | |||
Protocol servers may return referrals which redirect protocol clients | Protocol servers may return referrals which redirect protocol clients | |||
to peer servers. It is possible for a rogue application to inject | to peer servers. It is possible for a rogue application to inject | |||
skipping to change at line 1883 | skipping to change at line 1943 | |||
[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. | |||
[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. | |||
[X.680] ITU-T Recommendation X.680 (1997) | ISO/IEC 8824-1:1998 | [X.680] ITU-T Recommendation X.680 (07/2002) | ISO/IEC 8824-1:2002 | |||
Information Technology - Abstract Syntax Notation One | "Information Technology - Abstract Syntax Notation One | |||
(ASN.1): Specification of basic notation | (ASN.1): Specification of basic notation" | |||
[X.690] ITU-T Rec. X.690, "Specification of ASN.1 encoding rules: | [X.690] ITU-T Rec. X.690 (07/2002) | ISO/IEC 8825-1:2002, | |||
Basic, Canonical, and Distinguished Encoding Rules", 1994. | "Information technology - ASN.1 encoding rules: | |||
Specification of Basic Encoding Rules (BER), Canonical | ||||
Encoding Rules (CER) and Distinguished Encoding Rules | ||||
(DER)", 2002. | ||||
Sermersheim Internet-Draft - Expires Dec 2003 Page 34 | Sermersheim Internet-Draft - Expires Mar 2004 Page 35 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
[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. | |||
[RFC2279] Yergeau, F., "UTF-8, a transformation format of Unicode | [RFC2279] Yergeau, F., "UTF-8, a transformation format of Unicode | |||
skipping to change at line 1945 | skipping to change at line 2008 | |||
as amended by the "Unicode Standard Annex #27: Unicode | as amended by the "Unicode Standard Annex #27: Unicode | |||
3.1" (http://www.unicode.org/reports/tr27/) and by the | 3.1" (http://www.unicode.org/reports/tr27/) and by the | |||
"Unicode Standard Annex #28: Unicode 3.2" | "Unicode Standard Annex #28: Unicode 3.2" | |||
(http://www.unicode.org/reports/tr28/). | (http://www.unicode.org/reports/tr28/). | |||
[TCP] Postel, J., "Transmission Control Protocol", STD7, | [TCP] Postel, J., "Transmission Control Protocol", STD7, | |||
September 1981 | September 1981 | |||
[IP] Postel, J., "Internet Protocol", STD5, September 1981 | [IP] Postel, J., "Internet Protocol", STD5, September 1981 | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 35 | Sermersheim Internet-Draft - Expires Mar 2004 Page 36 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
10. Informative References | 10. Informative References | |||
[CERT] the CERT(R) Center, (http://www.cert.org) | [CERT] the CERT(R) Center, (http://www.cert.org) | |||
11. Editor's Address | 11. IANA Considerations | |||
It is requested that the Internet Assigned Numbers Authority (IANA) | ||||
update the occurrence of "RFC XXXX" Appendix B with this RFC number | ||||
at publication. | ||||
12. Editor's Address | ||||
Jim Sermersheim | Jim Sermersheim | |||
Novell, Inc. | Novell, Inc. | |||
1800 South Novell Place | 1800 South Novell Place | |||
Provo, Utah 84606, USA | Provo, Utah 84606, USA | |||
jimse@novell.com | jimse@novell.com | |||
+1 801 861-3088 | +1 801 861-3088 | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 36 | Sermersheim Internet-Draft - Expires Mar 2004 Page 37 | |||
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 2013 | skipping to change at line 2081 | |||
Indicates that the operation is not properly sequenced with | Indicates that the operation is not properly sequenced with | |||
relation to other operations (of same or different type). | relation to other operations (of same or different type). | |||
For example, this code is returned if the client attempts to | For example, this code is returned if the client attempts to | |||
Start TLS [RFC2246] while there are other operations | Start TLS [RFC2246] while there are other operations | |||
outstanding or if TLS was already established. | outstanding or if TLS was already established. | |||
protocolError (2) | protocolError (2) | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 37 | Sermersheim Internet-Draft - Expires Mar 2004 Page 38 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Indicates the server received data which has incorrect | Indicates the server received data which has incorrect | |||
structure. | structure. | |||
For bind operation only, the code may be resulted to indicate | For bind operation only, the code may be resulted to indicate | |||
the server does not support the requested protocol version. | the server does not support the requested protocol version. | |||
timeLimitExceeded (3) | timeLimitExceeded (3) | |||
skipping to change at line 2055 | skipping to change at line 2123 | |||
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) | |||
Indicates that the authentication method or mechanism is not | Indicates that the authentication method or mechanism is not | |||
supported. | supported. | |||
strongAuthRequired (8) | strongAuthRequired (8) | |||
Except when returned in a Notice of Disconnect (see section | Indicates that the server has detected that an established | |||
4.4.1), this indicates that the server requires the client to | security association between the client and server has | |||
authentication using a strong(er) mechanism. | unexpectedly failed or been compromised, or that the server | |||
now requires the client to authenticate using a strong(er) | ||||
mechanism. | ||||
referral (10) | referral (10) | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 39 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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). | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 38 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
adminLimitExceeded (11) | adminLimitExceeded (11) | |||
Indicates that an administrative limit has been exceeded. | Indicates that an administrative limit has been exceeded. | |||
unavailableCriticalExtension (12) | unavailableCriticalExtension (12) | |||
Indicates that server cannot perform a critical extension | Indicates that server cannot perform a critical extension | |||
(see section 4.1.12). | (see section 4.1.12). | |||
confidentialityRequired (13) | confidentialityRequired (13) | |||
skipping to change at line 2111 | skipping to change at line 2181 | |||
constraintViolation (19) | constraintViolation (19) | |||
Indicates that the client supplied an attribute value which | Indicates that the client supplied an attribute value which | |||
does not conform to constraints placed upon it by the data | does not conform to constraints placed upon it by the data | |||
model. | model. | |||
For example, this code is returned when the multiple values | For example, this code is returned when the multiple values | |||
are supplied to an attribute which has a SINGLE-VALUE | are supplied to an attribute which has a SINGLE-VALUE | |||
constraint. | constraint. | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 39 | Sermersheim Internet-Draft - Expires Mar 2004 Page 40 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
attributeOrValueExists (20) | attributeOrValueExists (20) | |||
Indicates that the client supplied an attribute or value to | Indicates that the client supplied an attribute or value to | |||
be added to an entry already exists. | be added to an entry already exists. | |||
invalidAttributeSyntax (21) | invalidAttributeSyntax (21) | |||
Indicates that a purported attribute value does not conform | Indicates that a purported attribute value does not conform | |||
skipping to change at line 2158 | skipping to change at line 2228 | |||
Indicates the server requires the client which had attempted | Indicates the server requires the client which had attempted | |||
to bind anonymously or without supplying credentials to | to bind anonymously or without supplying credentials to | |||
provide some form of credentials, | provide some form of credentials, | |||
invalidCredentials (49) | invalidCredentials (49) | |||
Indicates the supplied password or SASL credentials are | Indicates the supplied password or SASL credentials are | |||
invalid. | invalid. | |||
insufficientAccessRights (50) | Sermersheim Internet-Draft - Expires Mar 2004 Page 41 | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 40 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
insufficientAccessRights (50) | ||||
Indicates that the client does not have sufficient access | Indicates that the client does not have sufficient access | |||
rights to perform the operation. | rights to perform the operation. | |||
busy (51) | busy (51) | |||
Indicates that the server is busy. | Indicates that the server is busy. | |||
unavailable (52) | unavailable (52) | |||
Indicates that the server is shutting down or a subsystem | Indicates that the server is shutting down or a subsystem | |||
skipping to change at line 2208 | skipping to change at line 2278 | |||
Indicates that the operation is inappropriately attempting to | Indicates that the operation is inappropriately attempting to | |||
remove a value which forms the entry's relative distinguished | remove a value which forms the entry's relative distinguished | |||
name. | name. | |||
entryAlreadyExists (68) | entryAlreadyExists (68) | |||
Indicates that the request cannot be added fulfilled as the | Indicates that the request cannot be added fulfilled as the | |||
entry already exists. | entry already exists. | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 41 | Sermersheim Internet-Draft - Expires Mar 2004 Page 42 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
objectClassModsProhibited (69) | objectClassModsProhibited (69) | |||
Indicates that the attempt to modify the object class(es) of | Indicates that the attempt to modify the object class(es) of | |||
an entry objectClass attribute is prohibited. | an entry objectClass attribute is prohibited. | |||
For example, this code is returned when a when a client | For example, this code is returned when a when a client | |||
attempts to modify the structural object class of an entry. | attempts to modify the structural object class of an entry. | |||
affectsMultipleDSAs (71) | affectsMultipleDSAs (71) | |||
Indicates that the operation cannot be completed as it | Indicates that the operation cannot be completed as it | |||
affects multiple servers (DSAs). | affects multiple servers (DSAs). | |||
other (80) | other (80) | |||
Indicates the server has encountered an internal error. | Indicates the server has encountered an internal error. | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 42 | Sermersheim Internet-Draft - Expires Mar 2004 Page 43 | |||
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 | |||
-- Copyright (C) The Internet Society (2003). This version of | ||||
-- this ASN.1 module is part of RFC XXXX; see the RFC itself | ||||
-- for full legal notices. | ||||
DEFINITIONS | ||||
IMPLICIT TAGS | IMPLICIT TAGS | |||
EXTENSIBILITY IMPLIED ::= | EXTENSIBILITY IMPLIED ::= | |||
BEGIN | BEGIN | |||
LDAPMessage ::= SEQUENCE { | LDAPMessage ::= SEQUENCE { | |||
messageID MessageID, | messageID MessageID, | |||
protocolOp CHOICE { | protocolOp CHOICE { | |||
bindRequest BindRequest, | bindRequest BindRequest, | |||
bindResponse BindResponse, | bindResponse BindResponse, | |||
skipping to change at line 2281 | skipping to change at line 2355 | |||
LDAPString ::= OCTET STRING -- UTF-8 encoded, | LDAPString ::= OCTET STRING -- UTF-8 encoded, | |||
-- [ISO10646] characters | -- [ISO10646] characters | |||
LDAPOID ::= OCTET STRING -- Constrained to numericoid [Models] | LDAPOID ::= OCTET STRING -- Constrained to numericoid [Models] | |||
LDAPDN ::= LDAPString | LDAPDN ::= LDAPString | |||
RelativeLDAPDN ::= LDAPString | RelativeLDAPDN ::= LDAPString | |||
AttributeDescription ::= LDAPString | AttributeDescription ::= LDAPString | |||
-- Constrained to attributedescription | ||||
-- [Models] | ||||
AttributeDescriptionList ::= SEQUENCE OF | ||||
Sermersheim Internet-Draft - Expires Dec 2003 Page 43 | Sermersheim Internet-Draft - Expires Mar 2004 Page 44 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
AttributeDescription | -- Constrained to attributedescription | |||
-- [Models] | ||||
AttributeSelection ::= SEQUENCE OF | ||||
LDAPString | ||||
AttributeValue ::= OCTET STRING | AttributeValue ::= OCTET STRING | |||
AttributeValueAssertion ::= SEQUENCE { | AttributeValueAssertion ::= SEQUENCE { | |||
attributeDesc AttributeDescription, | attributeDesc AttributeDescription, | |||
assertionValue AssertionValue } | assertionValue AssertionValue } | |||
AssertionValue ::= OCTET STRING | AssertionValue ::= OCTET STRING | |||
Attribute ::= SEQUENCE { | Attribute ::= SEQUENCE { | |||
skipping to change at line 2339 | skipping to change at line 2413 | |||
noSuchObject (32), | noSuchObject (32), | |||
aliasProblem (33), | aliasProblem (33), | |||
invalidDNSyntax (34), | invalidDNSyntax (34), | |||
-- 35 reserved for undefined isLeaf -- | -- 35 reserved for undefined isLeaf -- | |||
aliasDereferencingProblem (36), | aliasDereferencingProblem (36), | |||
-- 37-47 unused -- | -- 37-47 unused -- | |||
inappropriateAuthentication (48), | inappropriateAuthentication (48), | |||
invalidCredentials (49), | invalidCredentials (49), | |||
insufficientAccessRights (50), | insufficientAccessRights (50), | |||
busy (51), | busy (51), | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 45 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
unavailable (52), | unavailable (52), | |||
unwillingToPerform (53), | unwillingToPerform (53), | |||
loopDetect (54), | loopDetect (54), | |||
-- 55-63 unused -- | -- 55-63 unused -- | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 44 | ||||
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), | |||
skipping to change at line 2397 | skipping to change at line 2471 | |||
mechanism LDAPString, | mechanism LDAPString, | |||
credentials OCTET STRING OPTIONAL } | credentials OCTET STRING OPTIONAL } | |||
BindResponse ::= [APPLICATION 1] SEQUENCE { | BindResponse ::= [APPLICATION 1] SEQUENCE { | |||
COMPONENTS OF LDAPResult, | COMPONENTS OF LDAPResult, | |||
serverSaslCreds [7] OCTET STRING OPTIONAL } | serverSaslCreds [7] OCTET STRING OPTIONAL } | |||
UnbindRequest ::= [APPLICATION 2] NULL | UnbindRequest ::= [APPLICATION 2] NULL | |||
SearchRequest ::= [APPLICATION 3] SEQUENCE { | SearchRequest ::= [APPLICATION 3] SEQUENCE { | |||
Sermersheim Internet-Draft - Expires Mar 2004 Page 46 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
baseObject LDAPDN, | baseObject LDAPDN, | |||
scope ENUMERATED { | scope ENUMERATED { | |||
baseObject (0), | baseObject (0), | |||
singleLevel (1), | singleLevel (1), | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 45 | ||||
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), | |||
typesOnly BOOLEAN, | typesOnly BOOLEAN, | |||
filter Filter, | filter Filter, | |||
attributes AttributeDescriptionList } | attributes AttributeSelection } | |||
Filter ::= CHOICE { | Filter ::= CHOICE { | |||
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, | |||
skipping to change at line 2456 | skipping to change at line 2530 | |||
attributes PartialAttributeList } | attributes PartialAttributeList } | |||
PartialAttributeList ::= SEQUENCE OF SEQUENCE { | PartialAttributeList ::= SEQUENCE OF SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
SearchResultReference ::= [APPLICATION 19] SEQUENCE OF URL | SearchResultReference ::= [APPLICATION 19] SEQUENCE OF URL | |||
SearchResultDone ::= [APPLICATION 5] LDAPResult | SearchResultDone ::= [APPLICATION 5] LDAPResult | |||
ModifyRequest ::= [APPLICATION 6] SEQUENCE { | Sermersheim Internet-Draft - Expires Mar 2004 Page 47 | |||
object LDAPDN, | ||||
modification SEQUENCE OF SEQUENCE { | ||||
Sermersheim Internet-Draft - Expires Dec 2003 Page 46 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
ModifyRequest ::= [APPLICATION 6] SEQUENCE { | ||||
object LDAPDN, | ||||
changes SEQUENCE OF SEQUENCE { | ||||
operation ENUMERATED { | operation ENUMERATED { | |||
add (0), | add (0), | |||
delete (1), | delete (1), | |||
replace (2) }, | replace (2) }, | |||
modification AttributeTypeAndValues } } | modification Attribute } } | |||
AttributeTypeAndValues ::= SEQUENCE { | ||||
type AttributeDescription, | ||||
vals SET OF AttributeValue } | ||||
ModifyResponse ::= [APPLICATION 7] LDAPResult | ModifyResponse ::= [APPLICATION 7] LDAPResult | |||
AddRequest ::= [APPLICATION 8] SEQUENCE { | AddRequest ::= [APPLICATION 8] SEQUENCE { | |||
entry LDAPDN, | entry LDAPDN, | |||
attributes AttributeList } | attributes AttributeList } | |||
AttributeList ::= SEQUENCE OF SEQUENCE { | AttributeList ::= SEQUENCE OF SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
skipping to change at line 2516 | skipping to change at line 2585 | |||
requestName [0] LDAPOID, | requestName [0] LDAPOID, | |||
requestValue [1] OCTET STRING OPTIONAL } | requestValue [1] OCTET STRING OPTIONAL } | |||
ExtendedResponse ::= [APPLICATION 24] SEQUENCE { | ExtendedResponse ::= [APPLICATION 24] SEQUENCE { | |||
COMPONENTS OF LDAPResult, | COMPONENTS OF LDAPResult, | |||
responseName [10] LDAPOID OPTIONAL, | responseName [10] LDAPOID OPTIONAL, | |||
responseValue [11] OCTET STRING OPTIONAL } | responseValue [11] OCTET STRING OPTIONAL } | |||
END | END | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 47 | Sermersheim Internet-Draft - Expires Mar 2004 Page 48 | |||
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 2573 | skipping to change at line 2642 | |||
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 Dec 2003 Page 48 | Sermersheim Internet-Draft - Expires Mar 2004 Page 49 | |||
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 2629 | skipping to change at line 2698 | |||
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 Dec 2003 Page 49 | Sermersheim Internet-Draft - Expires Mar 2004 Page 50 | |||
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 2685 | skipping to change at line 2754 | |||
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 Dec 2003 Page 50 | Sermersheim Internet-Draft - Expires Mar 2004 Page 51 | |||
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 2741 | skipping to change at line 2810 | |||
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 Dec 2003 Page 51 | Sermersheim Internet-Draft - Expires Mar 2004 Page 52 | |||
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 2798 | skipping to change at line 2867 | |||
- 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 Dec 2003 Page 52 | Sermersheim Internet-Draft - Expires Mar 2004 Page 53 | |||
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 2854 | skipping to change at line 2923 | |||
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 Dec 2003 Page 53 | Sermersheim Internet-Draft - Expires Mar 2004 Page 54 | |||
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 2910 | skipping to change at line 2979 | |||
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 Dec 2003 Page 54 | Sermersheim Internet-Draft - Expires Mar 2004 Page 55 | |||
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 2967 | skipping to change at line 3036 | |||
- 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 Dec 2003 Page 55 | Sermersheim Internet-Draft - Expires Mar 2004 Page 56 | |||
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 3024 | skipping to change at line 3093 | |||
- 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 Dec 2003 Page 56 | Sermersheim Internet-Draft - Expires Mar 2004 Page 57 | |||
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. Please refer to draft-legg-ldap-binary-00.txt and draft- | option. Please refer to draft-legg-ldap-binary-00.txt and draft- | |||
legg-ldap-transfer-00.txt | legg-ldap-transfer-00.txt | |||
skipping to change at line 3078 | skipping to change at line 3147 | |||
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 Dec 2003 Page 57 | Sermersheim Internet-Draft - Expires Mar 2004 Page 58 | |||
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 | |||
skipping to change at line 3133 | skipping to change at line 3202 | |||
C.15 Changes made to draft-ietf-ldapbis-protocol-13.txt | C.15 Changes made to draft-ietf-ldapbis-protocol-13.txt | |||
C.15.1 Section 2 & various | C.15.1 Section 2 & various | |||
- Added definitions for LDAP connection, TLS connection, and LDAP | - Added definitions for LDAP connection, TLS connection, and LDAP | |||
association, and updated appropriate fields to use proper terms. | association, and updated appropriate fields to use proper terms. | |||
C.15.2 Section 4.2 | C.15.2 Section 4.2 | |||
- Added text to authentication, specifying the way in which textual | - Added text to authentication, specifying the way in which textual | |||
strings used as passwords are to be prepared. | strings used as passwords are to be prepared. | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 58 | Sermersheim Internet-Draft - Expires Mar 2004 Page 59 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
C.15.3 Section 4.5.1 | C.15.3 Section 4.5.1 | |||
- Clarified derefInSearching. Specifically how it works in terms of | - Clarified derefInSearching. Specifically how it works in terms of | |||
subtree and one level searches | subtree and one level searches | |||
C.15.4 Section 4.5.2 | C.15.4 Section 4.5.2 | |||
- Changed MUST to SHOULD for returning textual attribute name, The | - Changed MUST to SHOULD for returning textual attribute name, The | |||
MUST is unreasonable. There are likely cases (such as when the | MUST is unreasonable. There are likely cases (such as when the | |||
server knows multiple attributes in separate entries of a search | server knows multiple attributes in separate entries of a search | |||
result set share the same short name) where returning a numericoid | result set share the same short name) where returning a numericoid | |||
is better than returning a short name. That is, the MUST may | is better than returning a short name. That is, the MUST may | |||
actually disallow servers from preventing misinterpretation of | actually disallow servers from preventing misinterpretation of | |||
short names. This is not only an interop issue, but likely a | short names. This is not only an interop issue, but likely a | |||
security consideration. | security consideration. | |||
C.15.4 Section 4.9 | C.15.4 Section 4.9 | |||
- Made modify consistent with add in regards to teh need of parent | - Made modify consistent with add in regards to the need of parent | |||
entries already existing. | entries already existing. | |||
C.15.6 Section 4.13.2.2 | C.15.6 Section 4.13.2.2 | |||
- Removed wording indicating that referrals can be returned from | - Removed wording indicating that referrals can be returned from | |||
StartTLS | StartTLS | |||
C.16 Changes made to draft-ietf-ldapbis-protocol-14.txt | C.16 Changes made to draft-ietf-ldapbis-protocol-14.txt | |||
C.16.1 Section 4.1.9 | C.16.1 Section 4.1.9 | |||
skipping to change at line 3190 | skipping to change at line 3259 | |||
negotiations of a particular mechanism, the mechanism technical | negotiations of a particular mechanism, the mechanism technical | |||
specification should detail how applications are to deal with | specification should detail how applications are to deal with | |||
them. LDAP should not require any special handling. And if an LDAP | them. LDAP should not require any special handling. And if an LDAP | |||
client had used such a mechanism, it would have the option of | client had used such a mechanism, it would have the option of | |||
using another mechanism. | using another mechanism. | |||
C.16.3 Section 4.5.2 and Section 7 | C.16.3 Section 4.5.2 and Section 7 | |||
- Removed: "If the LDAP association is operating over a connection- | - Removed: "If the LDAP association is operating over a connection- | |||
oriented transport such as TCP" | oriented transport such as TCP" | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 59 | Sermersheim Internet-Draft - Expires Mar 2004 Page 60 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
This is always true. | This is always true. | |||
C.16.4 Section 4.11 | C.16.4 Section 4.11 | |||
- Added: thus a client SHOULD NOT use the Abandon operation when it | - Added: thus a client SHOULD NOT use the Abandon operation when it | |||
needs an indication of whether the operation was abandoned. For | needs an indication of whether the operation was abandoned. For | |||
example, if a client performs an update operation (Add, Modify, or | example, if a client performs an update operation (Add, Modify, or | |||
ModifyDN), and it needs to know whether the directory has changed | ModifyDN), and it needs to know whether the directory has changed | |||
due to the operation, it should not use the Abandon operation to | due to the operation, it should not use the Abandon operation to | |||
skipping to change at line 3247 | skipping to change at line 3316 | |||
C.16.6 Section 4.13.3.1 | C.16.6 Section 4.13.3.1 | |||
- Added: After the TLS connection has been closed, the server MUST | - Added: After the TLS connection has been closed, the server MUST | |||
NOT send responses to any request message received before the TLS | NOT send responses to any request message received before the TLS | |||
closure. | closure. | |||
C.16.7 Section A2 | C.16.7 Section A2 | |||
- Removed precedence rules | - Removed precedence rules | |||
Sermersheim Internet-Draft - Expires Dec 2003 Page 60 | Sermersheim Internet-Draft - Expires Mar 2004 Page 61 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
C.17 Changes made to draft-ietf-ldapbis-protocol-15.txt | C.17 Changes made to draft-ietf-ldapbis-protocol-15.txt | |||
C.17.1 Section 4.1.8 | C.17.1 Section 4.1.8 | |||
- Removed: "Servers which support matching rules for use in the | - Removed: "Servers which support matching rules for use in the | |||
extensibleMatch search filter MUST list the matching rules they | extensibleMatch search filter MUST list the matching rules they | |||
implement in subschema entries, using the matchingRules | implement in subschema entries, using the matchingRules | |||
attributes. The server SHOULD also list there, using the | attributes. The server SHOULD also list there, using the | |||
matchingRuleUse attribute, the attribute types with which each | matchingRuleUse attribute, the attribute types with which each | |||
skipping to change at line 3284 | skipping to change at line 3353 | |||
arbitrary length protocol encodings. A number of LDAP security | arbitrary length protocol encodings. A number of LDAP security | |||
advisories are available through [CERT]. | advisories are available through [CERT]. | |||
C.17.4 Section 10 | C.17.4 Section 10 | |||
- Added as Informative References | - Added as Informative References | |||
C.17.5 Various | C.17.5 Various | |||
- Clarified that the [LDAPURL] form or URLs in referrals specifies | - Clarified that the [LDAPURL] form or URLs in referrals specifies | |||
LDAP servers implementing TCP/IP. | LDAP servers implementing TCP/IP. | |||
C.18 Changes made to draft-ietf-ldapbis-protocol-16.txt | ||||
C.18.1 Section 4.1.4 and others | ||||
- Renamed AttributeDescriptionList to AttributeSelection and moved | ||||
its definition to 4.5.1 (the only place it is referenced). | ||||
C.18.2 Sections 4.1.10, 4.5.3 | ||||
- Made obvious the fact that instructions regarding LDAP URLS used | ||||
as referrals and search result references only apply to LDAP URLs, | ||||
and that other URLs need to define their own instructions. | ||||
C.18.3 Section 4.2.1 | ||||
- Further clarified the authentication state of an abandoned bind | ||||
C.18.4 Section 4.5.1 | ||||
- Added: "Note that the AssertionValue in a substrings filter item | ||||
MUST conform to the assertion syntax of the EQUALITY matching rule | ||||
for the attribute type rather than the assertion syntax of the | ||||
SUBSTR matching rule for the attribute type. The entire | ||||
Sermersheim Internet-Draft - Expires Mar 2004 Page 62 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
SubstringFilter is converted into an assertion value of the | ||||
substrings matching rule prior to applying the rule." | ||||
C.18.5 Section 4.6 | ||||
- Replaced AttributeTypeAndValues with Attribute as they are | ||||
equivalent. | ||||
- Reformatted documentation of the various fields. | ||||
- Clarified what type of modification changes might temporarily | ||||
violate schema. | ||||
C.18.6 Section 7 | ||||
- Added: "Server implementors should plan for the possibility of an | ||||
identity or associated with an LDAP connection being deleted, | ||||
renamed, or modified, and take appropriate actions to prevent | ||||
insecure side effects. The way in which this is dealt with is | ||||
implementation specific. Likewise, server implementors should plan | ||||
for the possibility of an associated identities credentials | ||||
becoming invalid." | ||||
C.18.7 Section 9 | ||||
- Updated references to X.680 and X.690 | ||||
C.18.8 Section 11 | ||||
- Added IANA considerations | ||||
C.18.9 Section A.2 | ||||
- Clarified that strongAuthRequired could be sent any time | ||||
(including when credentials have been weakened or compromised. | ||||
C.18.10 Appendix B | ||||
- Added copyright to ASN.1 definition | ||||
Appendix D - Outstanding Work Items | Appendix D - Outstanding Work Items | |||
D.1 General | D.1 General | |||
- Reconcile problems with [Models]. Section 3.2 was wholly removed. | - Reconcile problems with [Models]. Section 3.2 was wholly removed. | |||
There were some protocol semantics in that section that need to be | There were some protocol semantics in that section that need to be | |||
brought back. Specifically, there was the notion of the server | brought back. Specifically, there was the notion of the server | |||
implicitly adding objectclass superclasses when a value is added. | implicitly adding objectClass superclasses when a value is added. | |||
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 Review 2119 usage | D.3 Review 2119 usage | |||
D.4 Reconcile with I-D Nits | D.4 Reconcile with I-D Nits | |||
D.5 Various issues on ldapbis mailing list (some may already be | Sermersheim Internet-Draft - Expires Mar 2004 Page 63 | |||
resolved) | ||||
Sermersheim Internet-Draft - Expires Dec 2003 Page 61 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- "Attribute Name Length Bounds" thread. | ||||
- "Extensibility of SearchRequest.attributes" thread | ||||
Sermersheim Internet-Draft - Expires Dec 2003 Page 62 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Full Copyright Statement | Full Copyright Statement | |||
Copyright (C) The Internet Society (2003). All Rights Reserved. | Copyright (C) The Internet Society (2003). All Rights Reserved. | |||
This document and translations of it may be copied and furnished to | This document and translations of it may be copied and furnished to | |||
others, and derivative works that comment on or otherwise explain it | others, and derivative works that comment on or otherwise explain it | |||
or assist in its implementation may be prepared, copied, published | or assist in its implementation may be prepared, copied, published | |||
and distributed, in whole or in part, without restriction of any | and distributed, in whole or in part, without restriction of any | |||
skipping to change at line 3341 | skipping to change at line 3457 | |||
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 Mar 2004 Page 64 | ||||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |