draft-ietf-ldapbis-protocol-03.txt | draft-ietf-ldapbis-protocol-04.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-03.txt October 2001 | Document: draft-ietf-ldapbis-protocol-04.txt October 2001 | |||
Obsoletes: RFC 2251 | Obsoletes: RFC 2251 | |||
Lightweight Directory Access Protocol (v3) | Lightweight Directory Access Protocol (v3) | |||
1. Status of this Memo | 1. 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 36 | skipping to change at line 36 | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
Distribution of this memo is unlimited. Technical discussion of this | Distribution of this memo is unlimited. Technical discussion of this | |||
document will take place on the IETF LDAP Revision Working Group | document will take place on the IETF LDAP Revision Working Group | |||
(LDAPbis) mailing list <ietf-ldapbis@openldap.org>. Please send | (LDAPbis) mailing list <ietf-ldapbis@openldap.org>. Please send | |||
editorial comments directly to the editor <jimse@novell.com>. | editorial comments directly to the editor <jimse@novell.com>. | |||
Table of Contents | Table of Contents | |||
1. Status of this Memo..............................................1 | 1. Status of this Memo..............................................1 | |||
2. Abstract.........................................................3 | 2. Abstract.........................................................2 | |||
3. Models...........................................................4 | 3. Models...........................................................3 | |||
3.1. Protocol Model.................................................4 | 3.1. Protocol Model.................................................3 | |||
3.2. Data Model.....................................................5 | 3.2. Data Model.....................................................4 | |||
3.2.1. Attributes of Entries........................................5 | 3.2.1. Attributes of Entries........................................4 | |||
3.2.2. Subschema Entries and Subentries.............................7 | 3.2.2. Subschema Entries and Subentries.............................6 | |||
3.3. Relationship to X.500..........................................7 | 3.3. Relationship to X.500..........................................7 | |||
3.4. Server-specific Data Requirements..............................8 | 3.4. Server-specific Data Requirements..............................7 | |||
4. Elements of Protocol.............................................8 | 4. Elements of Protocol.............................................7 | |||
4.1. Common Elements................................................9 | 4.1. Common Elements................................................8 | |||
4.1.1. Message Envelope.............................................9 | 4.1.1. Message Envelope.............................................8 | |||
4.1.1.1. Message ID................................................10 | 4.1.1.1. Message ID.................................................9 | |||
4.1.2. String Types................................................10 | 4.1.2. String Types.................................................9 | |||
4.1.3. Distinguished Name and Relative Distinguished Name..........11 | 4.1.3. Distinguished Name and Relative Distinguished Name..........10 | |||
4.1.4. Attribute Type..............................................11 | 4.1.4. Attribute Type..............................................10 | |||
4.1.5. Attribute Description.......................................12 | 4.1.5. Attribute Description.......................................11 | |||
4.1.5.1. Binary Option.............................................13 | 4.1.5.1. Binary Option.............................................12 | |||
4.1.6. Attribute Value.............................................13 | 4.1.6. Attribute Value.............................................13 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
4.1.7. Attribute Value Assertion...................................14 | 4.1.7. Attribute Value Assertion...................................13 | |||
4.1.8. Attribute...................................................14 | 4.1.8. Attribute...................................................14 | |||
4.1.9. Matching Rule Identifier....................................14 | 4.1.9. Matching Rule Identifier....................................14 | |||
4.1.10. Result Message.............................................15 | 4.1.10. Result Message.............................................14 | |||
4.1.11. Referral...................................................17 | 4.1.11. Referral...................................................16 | |||
4.1.12. Controls...................................................18 | 4.1.12. Controls...................................................17 | |||
4.2. Bind Operation................................................19 | 4.2. Bind Operation................................................18 | |||
4.2.1. Sequencing of the Bind Request..............................20 | 4.2.1. Sequencing of the Bind Request..............................19 | |||
4.2.2. Authentication and Other Security Services..................20 | 4.2.2. Authentication and Other Security Services..................20 | |||
4.2.3. Bind Response...............................................21 | 4.2.3. Bind Response...............................................20 | |||
4.3. Unbind Operation..............................................22 | 4.3. Unbind Operation..............................................21 | |||
4.4. Unsolicited Notification......................................22 | 4.4. Unsolicited Notification......................................22 | |||
4.4.1. Notice of Disconnection.....................................23 | 4.4.1. Notice of Disconnection.....................................22 | |||
4.5. Search Operation..............................................23 | 4.5. Search Operation..............................................23 | |||
4.5.1. Search Request..............................................23 | 4.5.1. Search Request..............................................23 | |||
4.5.2. Search Result...............................................27 | 4.5.2. Search Result...............................................27 | |||
4.5.3. Continuation References in the Search Result................28 | 4.5.3. Continuation References in the Search Result................28 | |||
4.6. Modify Operation..............................................30 | 4.6. Modify Operation..............................................29 | |||
4.7. Add Operation.................................................31 | 4.7. Add Operation.................................................31 | |||
4.8. Delete Operation..............................................32 | 4.8. Delete Operation..............................................32 | |||
4.9. Modify DN Operation...........................................33 | 4.9. Modify DN Operation...........................................32 | |||
4.10. Compare Operation............................................34 | 4.10. Compare Operation............................................33 | |||
4.11. Abandon Operation............................................34 | 4.11. Abandon Operation............................................34 | |||
4.12. Extended Operation...........................................35 | 4.12. Extended Operation...........................................35 | |||
5. Protocol Element Encodings and Transfer.........................36 | 5. Protocol Element Encodings and Transfer.........................35 | |||
5.1. Mapping Onto BER-based Transport Services.....................36 | 5.1. Protocol Encoding.............................................35 | |||
5.2. Transfer Protocols............................................36 | 5.2. Transfer Protocols............................................36 | |||
5.2.1. Transmission Control Protocol (TCP).........................36 | 5.2.1. Transmission Control Protocol (TCP).........................36 | |||
6. Implementation Guidelines.......................................36 | 6. Implementation Guidelines.......................................36 | |||
6.1. Server Implementations........................................36 | 6.1. Server Implementations........................................36 | |||
6.2. Client Implementations........................................37 | 6.2. Client Implementations........................................36 | |||
7. Security Considerations.........................................37 | 7. Security Considerations.........................................36 | |||
8. Acknowledgements................................................37 | 8. Acknowledgements................................................37 | |||
9. Bibliography....................................................38 | 9. Bibliography....................................................37 | |||
10. Editor's Address...............................................39 | 10. Editor's Address...............................................38 | |||
Appendix A - Complete ASN.1 Definition.............................40 | Appendix A - Complete ASN.1 Definition.............................39 | |||
Appendix B - Change History........................................45 | Appendix B - Change History........................................44 | |||
B.1 Editorial......................................................45 | B.1 Changes made to RFC 2251:......................................44 | |||
B.2 Section 1......................................................45 | B.2 Changes made to draft-ietf-ldapbis-protocol-00.txt:............44 | |||
B.3 Section 9......................................................45 | B.3 Changes made to draft-ietf-ldapbis-protocol-01.txt:............45 | |||
B.4 Section 4.1.6..................................................45 | B.4 Changes made to draft-ietf-ldapbis-protocol-02.txt:............45 | |||
B.5 Section 4.1.7..................................................45 | B.5 Changes made to draft-ietf-ldapbis-protocol-03.txt:............47 | |||
B.6 Sections 4.2, 4.9, 4.10........................................45 | Appendix C - Outstanding Work Items................................49 | |||
B.7 Sections 4.5 and Appendix A....................................46 | ||||
B.8 Section 3.4....................................................46 | ||||
B.9 Section 4.1.12.................................................46 | ||||
B.10 Section 4.2...................................................46 | ||||
B.11 Section 4.2.(various).........................................46 | ||||
B.12 Section 4.2.2.................................................46 | ||||
B.13 Section 4.5.2.................................................46 | ||||
B.14 Section 4.....................................................46 | ||||
B.15 Section 4.1.8.................................................47 | ||||
B.17 Section 4.1.11................................................47 | ||||
B.18 Section 4.1.12................................................47 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
B.19 Section 4.4...................................................47 | ||||
B.20 Section 4.5.1.................................................47 | ||||
B.21 Section 4.5.3.................................................48 | ||||
B.22 Section 4.6...................................................48 | ||||
B.23 Section 4.7...................................................48 | ||||
B.24 Section 4.11..................................................48 | ||||
Appendix C - Outstanding Work Items................................48 | ||||
C.1 Integrate result codes draft...................................48 | ||||
C.2 Section 3.1....................................................48 | ||||
C.3 Section 4......................................................48 | ||||
C.4 Section 4.1.1..................................................49 | ||||
C.5 Section 4.1.1.1................................................49 | ||||
C.6 Section 4.1.2..................................................49 | ||||
C.7 Section 4.1.4..................................................49 | ||||
C.8 Section 4.1.5..................................................49 | ||||
C.9 Section 4.1.5.1................................................49 | ||||
C.11 Section 4.1.7.................................................50 | ||||
C.13 Section 4.1.11................................................50 | ||||
C.14 Section 4.1.12................................................50 | ||||
C.15 Section 4.2...................................................50 | ||||
C.17 Section 4.2.2.................................................50 | ||||
C.18 Section 4.2.3.................................................50 | ||||
C.19 Section 4.3...................................................51 | ||||
C.20 Section 4.4...................................................51 | ||||
C.21 Section 4.5.1.................................................51 | ||||
C.22 Section 4.5.2.................................................51 | ||||
C.23 Section 4.5.3.................................................51 | ||||
C.24 Section 4.5.3.1...............................................51 | ||||
C.25 Section 4.6...................................................51 | ||||
C.26 Section 4.7...................................................52 | ||||
C.27 Section 4.10..................................................52 | ||||
C.28 Section 4.11..................................................52 | ||||
C.29 Section 4.12..................................................52 | ||||
C.30 Section 5.1...................................................52 | ||||
C.31 Section 5.2.1.................................................52 | ||||
C.32 Section 6.1...................................................52 | ||||
C.33 Section 7.....................................................52 | ||||
2. Abstract | 2. Abstract | |||
The protocol described in this document is designed to provide access | The protocol described in this document is designed to provide access | |||
to directories supporting the [X.500] models, while not incurring the | to directories supporting the [X.500] models, while not incurring the | |||
resource requirements of the X.500 Directory Access Protocol (DAP). | resource requirements of the X.500 Directory Access Protocol (DAP). | |||
This protocol is specifically targeted at management applications and | This protocol is specifically targeted at management applications and | |||
browser applications that provide read/write interactive access to | browser applications that provide read/write interactive access to | |||
directories. When used with a directory supporting the X.500 | directories. When used with a directory supporting the X.500 | |||
protocols, it is intended to be a complement to the X.500 DAP. | protocols, it is intended to be a complement to the X.500 DAP. | |||
Lightweight Directory Access Protocol Version 3 | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", and "MAY" in this document are | "SHOULD", "SHOULD NOT", "RECOMMENDED", and "MAY" in this document are | |||
to be interpreted as described in [RFC2119]. | to be interpreted as described in [RFC2119]. | |||
Key aspects of this version of LDAP are: | Key aspects of this version of LDAP are: | |||
Lightweight Directory Access Protocol Version 3 | ||||
- All protocol elements of LDAPv2 [RFC1777] are supported. The | - All protocol elements of LDAPv2 [RFC1777] are supported. The | |||
protocol is carried directly over TCP or other transport, | protocol is carried directly over TCP or other transport, | |||
bypassing much of the session/presentation overhead of X.500 DAP. | bypassing much of the session/presentation overhead of X.500 DAP. | |||
- Most protocol data elements can be encoded as ordinary strings | - Most protocol data elements can be encoded as ordinary strings | |||
(e.g., Distinguished Names). | (e.g., Distinguished Names). | |||
- Referrals to other servers may be returned. | - Referrals to other servers may be returned. | |||
- SASL mechanisms may be used with LDAP to provide association | - SASL mechanisms may be used with LDAP to provide association | |||
skipping to change at line 219 | skipping to change at line 168 | |||
complexity of clients so as to facilitate widespread deployment of | complexity of clients so as to facilitate widespread deployment of | |||
applications capable of using the directory. | applications capable of using the directory. | |||
Note that although servers are required to return responses whenever | Note that although servers are required to return responses whenever | |||
such responses are defined in the protocol, there is no requirement | such responses are defined in the protocol, there is no requirement | |||
for synchronous behavior on the part of either clients or servers. | for synchronous behavior on the part of either clients or servers. | |||
Requests and responses for multiple operations may be exchanged | Requests and responses for multiple operations may be exchanged | |||
between a client and server in any order, provided the client | between a client and server in any order, provided the client | |||
eventually receives a response for every request that requires one. | eventually receives a response for every request that requires one. | |||
Lightweight Directory Access Protocol Version 3 | ||||
In LDAP versions 1 and 2, no provision was made for protocol servers | In LDAP versions 1 and 2, no provision was made for protocol servers | |||
returning referrals to clients. However, for improved performance and | returning referrals to clients. However, for improved performance and | |||
distribution, this version of the protocol permits servers to return | distribution, this version of the protocol permits servers to return | |||
to clients, referrals to other servers. This allows servers to | to clients, referrals to other servers. This allows servers to | |||
offload the work of contacting other servers to progress operations. | offload the work of contacting other servers to progress operations. | |||
Lightweight Directory Access Protocol Version 3 | ||||
Note that the core protocol operations defined in this document can | Note that the core protocol operations defined in this document can | |||
be mapped to a strict subset of the X.500(1997) directory abstract | be mapped to a strict subset of the X.500(1997) directory abstract | |||
service, so it can be cleanly provided by the DAP. However there is | service, so it can be cleanly provided by the DAP. However there is | |||
not a one-to-one mapping between LDAP protocol operations and DAP | not a one-to-one mapping between LDAP protocol operations and DAP | |||
operations: server implementations acting as a gateway to X.500 | operations: server implementations acting as a gateway to X.500 | |||
directories may need to make multiple DAP requests. | directories may need to make multiple DAP requests. | |||
3.2. Data Model | 3.2. Data Model | |||
This section provides a brief introduction to the X.500 data model, | This section provides a brief introduction to the X.500 data model, | |||
skipping to change at line 270 | skipping to change at line 219 | |||
The largest collection of entries, starting at an entry that is | The largest collection of entries, starting at an entry that is | |||
mastered by a particular server, and including all its subordinates | mastered by a particular server, and including all its subordinates | |||
and their subordinates, down to the entries which are mastered by | and their subordinates, down to the entries which are mastered by | |||
different servers, is termed a naming context. The root of the DIT is | different servers, is termed a naming context. The root of the DIT is | |||
a DSA-specific Entry (DSE) and not part of any naming context: each | a DSA-specific Entry (DSE) and not part of any naming context: each | |||
server has different attribute values in the root DSE. (DSA is an | server has different attribute values in the root DSE. (DSA is an | |||
X.500 term for the directory server). | X.500 term for the directory server). | |||
3.2.1. Attributes of Entries | 3.2.1. Attributes of Entries | |||
Entries consist of a set of attributes. An attribute is a type with | Entries consist of a set of attributes. An attribute is a description | |||
one or more associated values. The attribute type is identified by a | (a type and zero or more options) with one or more associated values. | |||
short descriptive name and an OID (object identifier). The attribute | The attribute type governs whether the attribute can have multiple | |||
type governs whether there can be more than one value of an attribute | values, the syntax and matching rules used to construct and compare | |||
of that type in an entry, the syntax to which the values must | ||||
conform, the kinds of matching which can be performed on values of | ||||
that attribute, and other functions. | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
values of that attribute, and other functions. Options indicate modes | ||||
of transfer and other functions. | ||||
An example of an attribute is "mail". There may be one or more values | An example of an attribute is "mail". There may be one or more values | |||
of this attribute, they must be IA5 (ASCII) strings, and they are | of this attribute, they must be IA5 (ASCII) strings, and they are | |||
case insensitive (e.g. "foo@bar.com" will match "FOO@BAR.COM"). | case insensitive (e.g. "foo@bar.com" will match "FOO@BAR.COM"). | |||
Schema is the collection of attribute type definitions, object class | Schema is the collection of attribute type definitions, object class | |||
definitions and other information which a server uses to determine | definitions and other information which a server uses to determine | |||
how to match a filter or attribute value assertion (in a compare | how to match a filter or attribute value assertion (in a compare | |||
operation) against the attributes of an entry, and whether to permit | operation) against the attributes of an entry, and whether to permit | |||
add and modify operations. The definition of schema for use with LDAP | add and modify operations. The definition of schema for use with LDAP | |||
is given in [RFC2252] and [X.501]. Additional schema elements may be | is given in [RFC2252] and [X.501]. Additional schema elements may be | |||
skipping to change at line 331 | skipping to change at line 280 | |||
automatically by the server and are not modifiable by clients: | automatically by the server and are not modifiable by clients: | |||
- creatorsName: the Distinguished Name of the user who added this | - creatorsName: the Distinguished Name of the user who added this | |||
entry to the directory. | entry to the directory. | |||
- createTimestamp: the time this entry was added to the directory. | - createTimestamp: the time this entry was added to the directory. | |||
- modifiersName: the Distinguished Name of the user who last | - modifiersName: the Distinguished Name of the user who last | |||
modified this entry. | modified this entry. | |||
- modifyTimestamp: the time this entry was last modified. | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
- modifyTimestamp: the time this entry was last modified. | ||||
- subschemaSubentry: the Distinguished Name of the subschema entry | - subschemaSubentry: the Distinguished Name of the subschema entry | |||
(or subentry) which controls the schema for this entry. | (or subentry) which controls the schema for this entry. | |||
3.2.2. Subschema Entries and Subentries | 3.2.2. Subschema Entries and Subentries | |||
Subschema entries are used for administering information about the | Subschema entries are used for administering information about the | |||
directory schema, in particular the object classes and attribute | directory schema, in particular the object classes and attribute | |||
types supported by directory servers. A single subschema entry | types supported by directory servers. A single subschema entry | |||
contains all schema definitions used by entries in a particular part | contains all schema definitions used by entries in a particular part | |||
of the directory tree. | of the directory tree. | |||
skipping to change at line 387 | skipping to change at line 336 | |||
Servers SHOULD provide the attributes createTimestamp and | Servers SHOULD provide the attributes createTimestamp and | |||
modifyTimestamp in subschema entries, in order to allow clients to | modifyTimestamp in subschema entries, in order to allow clients to | |||
maintain their caches of schema information. | maintain their caches of schema information. | |||
Clients MUST only retrieve attributes from a subschema entry by | Clients MUST only retrieve attributes from a subschema entry by | |||
requesting a base object search of the entry, where the search filter | requesting a base object search of the entry, where the search filter | |||
is "(objectClass=subschema)". This will allow LDAPv3 servers which | is "(objectClass=subschema)". This will allow LDAPv3 servers which | |||
gateway to X.500(93) to detect that subentry information is being | gateway to X.500(93) to detect that subentry information is being | |||
requested. | requested. | |||
3.3. Relationship to X.500 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
3.3. Relationship to X.500 | ||||
This document defines LDAP in terms of X.500 as an X.500 access | This document defines LDAP in terms of X.500 as an X.500 access | |||
mechanism. An LDAP server MUST act in accordance with the X.500(1993) | mechanism. An LDAP server MUST act in accordance with the X.500(1993) | |||
series of ITU recommendations when providing the service. However, it | series of ITU recommendations when providing the service. However, it | |||
is not required that an LDAP server make use of any X.500 protocols | is not required that an LDAP server make use of any X.500 protocols | |||
in providing this service, e.g. LDAP can be mapped onto any other | in providing this service, e.g. LDAP can be mapped onto any other | |||
directory system so long as the X.500 data and service model as used | directory system so long as the X.500 data and service model as used | |||
in LDAP is not violated in the LDAP interface. | in LDAP is not violated in the LDAP interface. | |||
3.4. Server-specific Data Requirements | 3.4. Server-specific Data Requirements | |||
skipping to change at line 442 | skipping to change at line 391 | |||
If the server does not master entries and does not know the locations | If the server does not master entries and does not know the locations | |||
of schema information, the subschemaSubentry attribute is not present | of schema information, the subschemaSubentry attribute is not present | |||
in the root DSE. If the server masters directory entries under one or | in the root DSE. If the server masters directory entries under one or | |||
more schema rules, the schema for each entry is found by reading the | more schema rules, the schema for each entry is found by reading the | |||
subschemaSubentry attribute for that entry. | subschemaSubentry attribute for that entry. | |||
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] In order to support future extensions to this | Encoding Rules [X.690]. In order to support future extensions to this | |||
protocol, clients and servers MUST ignore elements of SEQUENCE | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
encodings whose tags they do not recognize. Section 5.1 specifies the | protocol, clients and servers MUST ignore elements of SEQUENCE | |||
encoding rules for the LDAP protocol. | encodings whose tags they do not recognize. Section 5.1 specifies how | |||
the protocol is encoded and transferred. | ||||
Note that unlike X.500, each change to the LDAP protocol other than | Note that unlike X.500, each change to the LDAP protocol other than | |||
through the extension mechanisms will have a different version | through the extension mechanisms will have a different version | |||
number. A client will indicate the version it supports as part of the | number. A client will indicate the version it supports as part of the | |||
bind request, described in section 4.2. If a client has not sent a | bind request, described in section 4.2. If a client has not sent a | |||
bind, the server MUST assume that version 3 or later is supported in | bind, the server MUST assume that version 3 or later is supported in | |||
the client (since version 2 required that the client bind first). | the client (since version 2 required that the client bind first). | |||
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. Servers | reading the supportedLDAPVersion attribute from the root DSE. Servers | |||
skipping to change at line 500 | skipping to change at line 449 | |||
delResponse DelResponse, | delResponse DelResponse, | |||
modDNRequest ModifyDNRequest, | modDNRequest ModifyDNRequest, | |||
modDNResponse ModifyDNResponse, | modDNResponse ModifyDNResponse, | |||
compareRequest CompareRequest, | compareRequest CompareRequest, | |||
compareResponse CompareResponse, | compareResponse CompareResponse, | |||
abandonRequest AbandonRequest, | abandonRequest AbandonRequest, | |||
extendedReq ExtendedRequest, | extendedReq ExtendedRequest, | |||
extendedResp ExtendedResponse }, | extendedResp ExtendedResponse }, | |||
controls [0] Controls OPTIONAL } | controls [0] Controls OPTIONAL } | |||
MessageID ::= INTEGER (0 .. maxInt) | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
MessageID ::= INTEGER (0 .. maxInt) | ||||
maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) -- | maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) -- | |||
The function of the LDAPMessage is to provide an envelope containing | The function of the LDAPMessage is to provide an envelope containing | |||
common fields required in all protocol exchanges. At this time the | common fields required in all protocol exchanges. At this time the | |||
only common fields are the message ID and the controls. | only common fields are the message ID and the controls. | |||
If the server receives a PDU from the client in which the LDAPMessage | If the server receives a PDU from the client in which the LDAPMessage | |||
SEQUENCE tag cannot be recognized, the messageID cannot be parsed, | SEQUENCE tag cannot be recognized, the messageID cannot be parsed, | |||
the tag of the protocolOp is not recognized as a request, or the | the tag of the protocolOp is not recognized as a request, or the | |||
encoding structures or lengths of data fields are found to be | encoding structures or lengths of data fields are found to be | |||
skipping to change at line 567 | skipping to change at line 516 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
LDAPString ::= OCTET STRING | LDAPString ::= OCTET STRING | |||
The LDAPOID is a notational convenience to indicate that the | The LDAPOID is a notational convenience to indicate that the | |||
permitted value of this string is a (UTF-8 encoded) dotted-decimal | permitted value of this string is a (UTF-8 encoded) dotted-decimal | |||
representation of an OBJECT IDENTIFIER. | representation of an OBJECT IDENTIFIER. | |||
LDAPOID ::= OCTET STRING | LDAPOID ::= OCTET STRING | |||
A value of LDAPOID is defined by the following ABNF [RFC2234]: | ||||
ldapOID = number *( DOT number ) | ||||
number = ( LDIGIT *DIGIT ) / DIGIT | ||||
DOT = %x2E ; "." | ||||
LDIGIT = %x31-39 ; 1-9 | ||||
DIGIT = %x30 / LDIGIT ; 0-9 | ||||
For example, | For example, | |||
1.3.6.1.4.1.1466.1.2.3 | 1.3.6.1.4.1.1466.1.2.3 | |||
4.1.3. Distinguished Name and Relative Distinguished Name | 4.1.3. Distinguished Name and Relative Distinguished Name | |||
An LDAPDN 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 [RFC2253], such | Name after encoding according to the specification in [RFC2253], such | |||
that: | that: | |||
skipping to change at line 599 | skipping to change at line 560 | |||
component--the options of Attribute Descriptions (next section) MUST | component--the options of Attribute Descriptions (next section) MUST | |||
NOT be used in specifying distinguished names. | NOT be used in specifying distinguished names. | |||
4.1.4. Attribute Type | 4.1.4. Attribute Type | |||
An AttributeType takes on as its value the textual string associated | An AttributeType takes on as its value the textual string associated | |||
with that AttributeType in its specification. | with that AttributeType in its specification. | |||
AttributeType ::= LDAPString | AttributeType ::= LDAPString | |||
Lightweight Directory Access Protocol Version 3 | ||||
Each attribute type has a unique OBJECT IDENTIFIER which has been | Each attribute type has a unique OBJECT IDENTIFIER which has been | |||
assigned to it. This identifier may be written as decimal digits with | assigned to it. This identifier may be written as defined by ldapOID | |||
components separated by periods, e.g. "2.5.4.10". | in section 4.1.2. | |||
A specification may also assign one or more textual names for an | A specification may also assign one or more textual names for an | |||
attribute type. These names MUST begin with a letter, and only | attribute type. These names MUST begin with a letter, and only | |||
contain ASCII letters, digit characters and hyphens. They are case | contain ASCII letters, digit characters and hyphens. They are case | |||
insensitive. These ASCII characters are identical to ISO 10646 | insensitive. These ASCII characters are identical to ISO 10646 | |||
characters whose UTF-8 encoding is a single byte between 0x00 and | characters whose UTF-8 encoding is a single byte between 0x00 and | |||
0x7F. | 0x7F. | |||
If the server has a textual name for an attribute type, it MUST use a | If the server has a textual name for an attribute type, it MUST use a | |||
textual name for attributes returned in search results. The dotted- | textual name for attributes returned in search results. The dotted- | |||
Lightweight Directory Access Protocol Version 3 | ||||
decimal OBJECT IDENTIFIER is only used if there is no textual name | decimal OBJECT IDENTIFIER is only used if there is no textual name | |||
for an attribute type. | for an attribute type. | |||
Attribute type textual names are non-unique, as two different | Attribute type textual names are non-unique, as two different | |||
specifications (neither in standards track RFCs) may choose the same | specifications (neither in standards track RFCs) may choose the same | |||
name. | name. | |||
A server which masters or shadows entries SHOULD list all the | A server which masters or shadows entries SHOULD list all the | |||
attribute types it supports in the subschema entries, using the | attribute types it supports in the subschema entries, using the | |||
attributeTypes attribute. Servers which support an open-ended set of | attributeTypes attribute. Servers which support an open-ended set of | |||
skipping to change at line 642 | skipping to change at line 602 | |||
types. | types. | |||
4.1.5. Attribute Description | 4.1.5. Attribute Description | |||
An AttributeDescription is a superset of the definition of the | An AttributeDescription is a superset of the definition of the | |||
AttributeType. It has the same ASN.1 definition, but allows | AttributeType. It has the same ASN.1 definition, but allows | |||
additional options to be specified. They are also case insensitive. | additional options to be specified. They are also case insensitive. | |||
AttributeDescription ::= LDAPString | AttributeDescription ::= LDAPString | |||
A value of AttributeDescription is based on the following BNF: | A value of AttributeDescription is based on the following ABNF: | |||
<AttributeDescription> ::= <AttributeType> [ ";" <options> ] | attributeDescription = attributeType options | |||
<options> ::= <option> | <option> ";" <options> | attributeType = AttributeType | |||
; as described in Section 4.1.4 | ||||
<option> ::= <opt-char> <opt-char>* | options = *( SEMICOLON options ) | |||
<opt-char> ::= ASCII-equivalent letters, numbers and hyphen | option = 1*opt-char | |||
opt-char = ALPHA / DIGIT / HYPHEN | ||||
SEMICOLON = %x3B ; ";" | ||||
Lightweight Directory Access Protocol Version 3 | ||||
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z | ||||
HYPHEN = %x2D ; "-" | ||||
Examples of valid AttributeDescription: | Examples of valid AttributeDescription: | |||
cn | cn | |||
userCertificate;binary | userCertificate;binary | |||
One option, "binary", is defined in this document. Additional options | One option, "binary", is defined in this document. Additional options | |||
may be defined in IETF standards-track and experimental RFCs. Options | may be defined in IETF standards-track and experimental RFCs. Options | |||
beginning with "x-" are reserved for private experiments. Any option | beginning with "x-" are reserved for private experiments. Though any | |||
could be associated with any AttributeType, although not all | option or set of options could be associated with any AttributeType, | |||
combinations may be supported by a server. | the server support for certain combinations may be restricted by | |||
attribute type, syntaxes, or other factors. | ||||
An AttributeDescription with one or more options is treated as a | An AttributeDescription with one or more options is treated as a | |||
subtype of the attribute type without any options. Options present in | subtype of the attribute type without any options. Options MAY be | |||
an AttributeDescription are never mutually exclusive. Implementations | mutually exclusive. An AttributeDescription with mutually exclusive | |||
options is treated as an undefined attribute type. Implementations | ||||
MUST generate the <options> list sorted in ascending order, and | MUST generate the <options> list sorted in ascending order, and | |||
servers MUST treat any two AttributeDescription with the same | servers MUST treat any two AttributeDescription with the same | |||
AttributeType and options as equivalent. A server will treat an | AttributeType and options as equivalent. A server will treat an | |||
Lightweight Directory Access Protocol Version 3 | ||||
AttributeDescription with any options it does not implement as an | AttributeDescription with any options it does not implement as an | |||
unrecognized attribute type. | unrecognized attribute type. | |||
The data type "AttributeDescriptionList" describes a list of 0 or | The data type "AttributeDescriptionList" describes a list of 0 or | |||
more attribute types. (A list of zero elements has special | more attribute types. (A list of zero elements has special | |||
significance in the Search request.) | significance in the Search request.) | |||
AttributeDescriptionList ::= SEQUENCE OF | AttributeDescriptionList ::= SEQUENCE OF | |||
AttributeDescription | AttributeDescription | |||
skipping to change at line 702 | skipping to change at line 672 | |||
transfer of attribute values in protocol; servers store any | transfer of attribute values in protocol; servers store any | |||
particular attribute in a single format. If a client requests that a | particular attribute in a single format. If a client requests that a | |||
server return an attribute in the binary format, but the server | server return an attribute in the binary format, but the server | |||
cannot generate that format, the server MUST treat this attribute | cannot generate that format, the server MUST treat this attribute | |||
type as an unrecognized attribute type. Similarly, clients MUST NOT | type as an unrecognized attribute type. Similarly, clients MUST NOT | |||
expect servers to return an attribute in binary format if the client | expect servers to return an attribute in binary format if the client | |||
requested that attribute by name without the "binary" option. | requested that attribute by name without the "binary" option. | |||
This option is intended to be used with attributes whose syntax is a | This option is intended to be used with attributes whose syntax is a | |||
complex ASN.1 data type, and the structure of values of that type is | complex ASN.1 data type, and the structure of values of that type is | |||
Lightweight Directory Access Protocol Version 3 | ||||
needed by clients. Examples of this kind of syntax are "Certificate" | needed by clients. Examples of this kind of syntax are "Certificate" | |||
and "CertificateList". | and "CertificateList". | |||
4.1.6. Attribute Value | 4.1.6. 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 value of an AttributeValue data type. The value is string | encoded value of an AttributeValue data type. The value is string | |||
encoded unless an option specifying the transfer encoding is present | encoded unless an option specifying the transfer encoding is present | |||
in the companion AttributeDescription to this AttributeValue (e.g. | in the companion AttributeDescription to this AttributeValue (e.g. | |||
"binary"). Multiple options specifying transfer encoding MUST NOT be | "binary"). Multiple options specifying transfer encoding MUST NOT be | |||
skipping to change at line 727 | skipping to change at line 700 | |||
At the time of this writing, there is only one AttributeDescription | At the time of this writing, there is only one AttributeDescription | |||
option used to specify transfer encoding--"binary", described in | option used to specify transfer encoding--"binary", described in | |||
section 4.1.5.1. | section 4.1.5.1. | |||
AttributeValue ::= OCTET STRING | AttributeValue ::= OCTET STRING | |||
Note that there is no defined limit on the size of this encoding; | Note that there is no defined limit on the size of this encoding; | |||
thus protocol values may include multi-megabyte attributes (e.g. | thus protocol values may include multi-megabyte attributes (e.g. | |||
photographs). | photographs). | |||
Lightweight Directory Access Protocol Version 3 | ||||
Attributes may be defined which have arbitrary and non-printable | Attributes may be defined which have arbitrary and non-printable | |||
syntax. Implementations MUST NEITHER simply display nor attempt to | syntax. Implementations MUST NEITHER simply display nor attempt to | |||
decode as ASN.1 a value if its syntax is not known. The | decode as ASN.1 a value if its syntax is not known. The | |||
implementation may attempt to discover the subschema of the source | implementation may attempt to discover the subschema of the source | |||
entry, and retrieve the values of attributeTypes from it. | entry, and retrieve the values of attributeTypes from it. | |||
Clients MUST NOT send attribute values in a request which are not | Clients MUST NOT send attribute values in a request which are not | |||
valid according to the syntax defined for the attributes. | valid according to the syntax defined for the attributes. | |||
4.1.7. Attribute Value Assertion | 4.1.7. Attribute Value Assertion | |||
skipping to change at line 757 | skipping to change at line 728 | |||
AssertionValue ::= OCTET STRING | AssertionValue ::= OCTET STRING | |||
If an option specifying the transfer encoding is present in | If an option specifying the transfer encoding is present in | |||
attributeDesc, the assertionValue is encoded as specified by the | attributeDesc, the assertionValue is encoded as specified by the | |||
option. For example, if the "binary" option is present in the | option. For example, if the "binary" option is present in the | |||
attributeDesc, the AssertionValue is BER encoded. | attributeDesc, the AssertionValue is BER encoded. | |||
For all the string-valued user attributes described in [5], the | For all the string-valued user attributes described in [5], the | |||
assertion value syntax is the same as the value syntax. Clients may | assertion value syntax is the same as the value syntax. Clients may | |||
Lightweight Directory Access Protocol Version 3 | ||||
use attribute values as assertion values in compare requests and | use attribute values as assertion values in compare requests and | |||
search filters. | search filters. | |||
Note however that the assertion syntax may be different from the | Note however that the assertion syntax may be different from the | |||
value syntax for other attributes or for non-equality matching rules. | value syntax for other attributes or for non-equality matching rules. | |||
These may have an assertion syntax which contains only part of the | These may have an assertion syntax which contains only part of the | |||
value. See section 20.2.1.8 of [X.501] for examples. | value. See section 20.2.1.8 of [X.501] for examples. | |||
4.1.8. Attribute | 4.1.8. Attribute | |||
skipping to change at line 783 | skipping to change at line 757 | |||
Attribute ::= SEQUENCE { | Attribute ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
Each attribute value is distinct in the set (no duplicates). The | Each attribute value is distinct in the set (no duplicates). The | |||
order of attribute values within the vals set is undefined and | order of attribute values within the vals set is undefined and | |||
implementation-dependent, and MUST NOT be relied upon. | implementation-dependent, and MUST NOT be relied upon. | |||
4.1.9. Matching Rule Identifier | 4.1.9. Matching Rule Identifier | |||
Lightweight Directory Access Protocol Version 3 | ||||
A matching rule is a means of expressing how a server should compare | A matching rule is a means of expressing how a server should compare | |||
an AssertionValue received in a search filter with an abstract data | an AssertionValue received in a search filter with an abstract data | |||
value. The matching rule defines the syntax of the assertion value | value. The matching rule defines the syntax of the assertion value | |||
and the process to be performed in the server. | and the process to be performed in the server. | |||
An X.501 (1993) Matching Rule is identified in the LDAP protocol by | An X.501 (1993) Matching Rule is identified in the LDAP protocol by | |||
the printable representation of its OBJECT IDENTIFIER, either as one | the printable representation of its OBJECT IDENTIFIER, either as one | |||
of the strings given in [RFC2252], or as decimal digits with | of the strings given in [RFC2252], or as decimal digits with | |||
components separated by periods, e.g. "caseIgnoreIA5Match" or | components separated by periods, e.g. "caseIgnoreIA5Match" or | |||
"1.3.6.1.4.1.453.33.33". | "1.3.6.1.4.1.453.33.33". | |||
skipping to change at line 813 | skipping to change at line 785 | |||
information is given in section 4.4 of [RFC2252]. | information is given in section 4.4 of [RFC2252]. | |||
4.1.10. Result Message | 4.1.10. Result Message | |||
The LDAPResult is the construct used in this protocol to return | The LDAPResult is the construct used in this protocol to return | |||
success or failure indications from servers to clients. To various | success or failure indications from servers to clients. To various | |||
requests, servers will return responses of LDAPResult or responses | requests, servers will return responses of LDAPResult or responses | |||
containing the components of LDAPResponse to indicate the final | containing the components of LDAPResponse to indicate the final | |||
status of a protocol operation request. | status of a protocol operation request. | |||
Lightweight Directory Access Protocol Version 3 | ||||
LDAPResult ::= SEQUENCE { | LDAPResult ::= SEQUENCE { | |||
resultCode ENUMERATED { | resultCode ENUMERATED { | |||
success (0), | success (0), | |||
operationsError (1), | operationsError (1), | |||
protocolError (2), | protocolError (2), | |||
timeLimitExceeded (3), | timeLimitExceeded (3), | |||
sizeLimitExceeded (4), | sizeLimitExceeded (4), | |||
compareFalse (5), | compareFalse (5), | |||
compareTrue (6), | compareTrue (6), | |||
authMethodNotSupported (7), | authMethodNotSupported (7), | |||
skipping to change at line 838 | skipping to change at line 812 | |||
confidentialityRequired (13), | confidentialityRequired (13), | |||
saslBindInProgress (14), | saslBindInProgress (14), | |||
noSuchAttribute (16), | noSuchAttribute (16), | |||
undefinedAttributeType (17), | undefinedAttributeType (17), | |||
inappropriateMatching (18), | inappropriateMatching (18), | |||
constraintViolation (19), | constraintViolation (19), | |||
attributeOrValueExists (20), | attributeOrValueExists (20), | |||
invalidAttributeSyntax (21), | invalidAttributeSyntax (21), | |||
-- 22-31 unused -- | -- 22-31 unused -- | |||
noSuchObject (32), | noSuchObject (32), | |||
Lightweight Directory Access Protocol Version 3 | ||||
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), | |||
unavailable (52), | unavailable (52), | |||
skipping to change at line 869 | skipping to change at line 840 | |||
objectClassModsProhibited (69), | objectClassModsProhibited (69), | |||
-- 70 reserved for CLDAP -- | -- 70 reserved for CLDAP -- | |||
affectsMultipleDSAs (71), | affectsMultipleDSAs (71), | |||
-- 72-79 unused -- | -- 72-79 unused -- | |||
other (80) }, | other (80) }, | |||
-- 81-90 reserved for APIs -- | -- 81-90 reserved for APIs -- | |||
matchedDN LDAPDN, | matchedDN LDAPDN, | |||
errorMessage LDAPString, | errorMessage LDAPString, | |||
referral [3] Referral OPTIONAL } | referral [3] Referral OPTIONAL } | |||
Lightweight Directory Access Protocol Version 3 | ||||
All the result codes with the exception of success, compareFalse and | All the result codes with the exception of success, compareFalse and | |||
compareTrue are to be treated as meaning the operation could not be | compareTrue are to be treated as meaning the operation could not be | |||
completed in its entirety. | completed in its entirety. | |||
Most of the result codes are based on problem indications from X.511 | Most of the result codes are based on problem indications from X.511 | |||
error data types. Result codes from 16 to 21 indicate an | error data types. Result codes from 16 to 21 indicate an | |||
AttributeProblem, codes 32, 33, 34 and 36 indicate a NameProblem, | AttributeProblem, codes 32, 33, 34 and 36 indicate a NameProblem, | |||
codes 48, 49 and 50 indicate a SecurityProblem, codes 51 to 54 | codes 48, 49 and 50 indicate a SecurityProblem, codes 51 to 54 | |||
indicate a ServiceProblem, and codes 64 to 69 and 71 indicates an | indicate a ServiceProblem, and codes 64 to 69 and 71 indicates an | |||
UpdateProblem. | UpdateProblem. | |||
skipping to change at line 895 | skipping to change at line 868 | |||
(terminal control and page formatting characters should be avoided) | (terminal control and page formatting characters should be avoided) | |||
error diagnostic. As this error diagnostic is not standardized, | error diagnostic. As this error diagnostic is not standardized, | |||
implementations MUST NOT rely on the values returned. If the server | implementations MUST NOT rely on the values returned. If the server | |||
chooses not to return a textual diagnostic, the errorMessage field of | chooses not to return a textual diagnostic, the errorMessage field of | |||
the LDAPResult type MUST contain a zero length string. | the LDAPResult type MUST contain a zero length string. | |||
For result codes of noSuchObject, aliasProblem, invalidDNSyntax and | For result codes of 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, | |||
Lightweight Directory Access Protocol Version 3 | ||||
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]. The matchedDN field is to be set to a zero length string | of [X.511]. The matchedDN field is to be set to a zero length string | |||
with all other result codes. | with all other result codes. | |||
4.1.11. Referral | 4.1.11. Referral | |||
The referral result code indicates that the contacted server does not | The referral result code indicates that the contacted server does not | |||
hold the target entry of the request. The referral field is present | hold the target entry of the request. The referral field is present | |||
in an LDAPResult if the LDAPResult.resultCode field value is | in an LDAPResult if the LDAPResult.resultCode field value is | |||
skipping to change at line 926 | skipping to change at line 896 | |||
in which the search scope spans multiple naming contexts, and several | in which the search scope spans multiple naming contexts, and several | |||
different servers would need to be contacted to complete the | different servers would need to be contacted to complete the | |||
operation. Instead, continuation references, described in section | operation. Instead, continuation references, described in section | |||
4.5.3, are returned. | 4.5.3, are returned. | |||
Referral ::= SEQUENCE OF LDAPURL -- one or more | Referral ::= SEQUENCE OF LDAPURL -- one or more | |||
LDAPURL ::= LDAPString -- limited to characters permitted in | LDAPURL ::= LDAPString -- limited to characters permitted in | |||
-- URLs | -- URLs | |||
Lightweight Directory Access Protocol Version 3 | ||||
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 any one of servers. All the URLs MUST be | referral by contacting one of the servers. If multiple URLs are | |||
equally capable of being used to progress the operation. (The | present, the client assumes that any URL may be used to progress the | |||
mechanisms for how this is achieved by multiple servers are outside | operation. | |||
the scope of this document.) | ||||
URLs for servers implementing the LDAP protocol are written according | URLs for servers implementing the LDAP protocol are written according | |||
to [RFC2255]. If an alias was dereferenced, the <dn> part of the URL | to [RFC2255]. If an alias was dereferenced, the <dn> part of the URL | |||
MUST be present, with the new target object name. If the <dn> part is | 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 | 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 | progress the operation, and if it is not present the client will use | |||
the same name as in the original request. Some servers (e.g. | the same name as in the original request. Some servers (e.g. | |||
participating in distributed indexing) may provide a different filter | participating in distributed indexing) may provide a different filter | |||
in a referral for a search operation. If the filter part of the URL | in a referral for a search operation. If the filter part of the URL | |||
is present in an LDAPURL, the client MUST use this filter in its next | is present in an LDAPURL, the client MUST use this filter in its next | |||
skipping to change at line 953 | skipping to change at line 924 | |||
the new request may be the same or different as the request which | the new request may be the same or different as the request which | |||
generated the referral. | generated the referral. | |||
Note that UTF-8 characters appearing in a DN or search filter may not | Note that UTF-8 characters appearing in a DN or search filter may not | |||
be legal for URLs (e.g. spaces) and MUST be escaped using the % | be legal for URLs (e.g. spaces) and MUST be escaped using the % | |||
method in [RFC2396]. | method in [RFC2396]. | |||
Other kinds of URLs may be returned, so long as the operation could | Other kinds of URLs may be returned, so long as the operation could | |||
be performed using that protocol. | be performed using that protocol. | |||
Lightweight Directory Access Protocol Version 3 | ||||
4.1.12. Controls | 4.1.12. Controls | |||
A control is a way to specify extension information. Controls which | A control is a way to specify extension information. Controls which | |||
are sent as part of a request apply only to that request and are not | are sent as part of a request apply only to that request and are not | |||
saved. | saved. | |||
Controls ::= SEQUENCE OF Control | Controls ::= SEQUENCE OF Control | |||
Control ::= SEQUENCE { | Control ::= SEQUENCE { | |||
controlType LDAPOID, | controlType LDAPOID, | |||
skipping to change at line 983 | skipping to change at line 952 | |||
control accompanies one of the following requests: bindRequest, | control accompanies one of the following requests: bindRequest, | |||
searchRequest, modifyRequest, addRequest, delRequest, modDNRequest, | searchRequest, modifyRequest, addRequest, delRequest, modDNRequest, | |||
compareRequest, or extendedReq. The use of the criticality field for | compareRequest, or extendedReq. The use of the criticality field for | |||
a control that is part of any other operation is ignored and treated | a control that is part of any other operation is ignored and treated | |||
as FALSE. | as FALSE. | |||
If the server recognizes the control type and it is appropriate for | If the server recognizes the control type and it is appropriate for | |||
the operation, the server will make use of the control when | the operation, the server will make use of the control when | |||
performing the operation. | performing the operation. | |||
Lightweight Directory Access Protocol Version 3 | ||||
If the server does not recognize the control type or it is not | If the server does not recognize the control type or it is not | |||
appropriate for the operation, and the criticality field is TRUE, the | appropriate for the operation, and the criticality field is TRUE, the | |||
server MUST NOT perform the operation, and MUST instead return the | server MUST NOT perform the operation, and MUST instead return the | |||
resultCode unavailableCriticalExtension. | resultCode 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, and its format is defined for the control. Implementations | control, and its format is defined for the control. Implementations | |||
skipping to change at line 1007 | skipping to change at line 978 | |||
This document does not define any controls. Controls may be defined | This document does not define any controls. Controls may be defined | |||
in other documents. The definition of a control consists of: | in other documents. The definition of a control consists 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. | |||
Lightweight Directory Access Protocol Version 3 | ||||
Servers list the controls which they recognize in the | Servers list the controls which they recognize in the | |||
supportedControl attribute in the root DSE. | supportedControl attribute in the root DSE. | |||
4.2. Bind Operation | 4.2. Bind Operation | |||
The function of the Bind Operation is to allow authentication | The function of the Bind Operation is to allow authentication | |||
information to be exchanged between the client and server. | information to be exchanged between the client and server. | |||
The Bind Request is defined as follows: | The Bind Request is defined as follows: | |||
skipping to change at line 1039 | skipping to change at line 1008 | |||
SaslCredentials ::= SEQUENCE { | SaslCredentials ::= SEQUENCE { | |||
mechanism LDAPString, | mechanism LDAPString, | |||
credentials OCTET STRING OPTIONAL } | credentials OCTET STRING OPTIONAL } | |||
Parameters of the Bind Request are: | Parameters of the Bind Request are: | |||
- version: A version number indicating the version of the protocol | - version: A version number indicating the version of the protocol | |||
to be used in this protocol session. This document describes | to be used in this protocol session. This document describes | |||
version 3 of the LDAP protocol. Note that there is no version | version 3 of the LDAP protocol. Note that there is no version | |||
negotiation, and the client just sets this parameter to the | negotiation, and the client just sets this parameter to the | |||
Lightweight Directory Access Protocol Version 3 | ||||
version it desires. If the client requests protocol version 2, a | version it desires. If the client requests protocol version 2, a | |||
server that supports the version 2 protocol as described in | server that supports the version 2 protocol as described in | |||
[RFC1777] will not return any v3-specific protocol fields. (Note | [RFC1777] will not return any v3-specific protocol fields. (Note | |||
that not all LDAP servers will support protocol version 2, since | that not all LDAP servers will support protocol version 2, since | |||
they may be unable to generate the attribute syntaxes associated | they may be unable to generate the attribute syntaxes associated | |||
with version 2.) | with version 2.) | |||
- name: The name of the directory object that the client wishes to | - name: The name of the directory object that the client wishes to | |||
bind as. This field may take on a null value (a zero length | bind as. This field may take on a null value (a zero length | |||
string) for the purposes of anonymous binds, when authentication | string) for the purposes of anonymous binds, when authentication | |||
skipping to change at line 1064 | skipping to change at line 1036 | |||
determining the object to bind as. | determining the object to bind as. | |||
- authentication: information used to authenticate the name, if any, | - authentication: information used to authenticate the name, if any, | |||
provided in the Bind Request. | provided in the Bind Request. | |||
Upon receipt of a Bind Request, a protocol server will authenticate | Upon receipt of a Bind Request, a protocol server will authenticate | |||
the requesting client, if necessary. The server will then return a | the requesting client, if necessary. The server will then return a | |||
Bind Response to the client indicating the status of the | Bind Response to the client indicating the status of the | |||
authentication. | authentication. | |||
Lightweight Directory Access Protocol Version 3 | ||||
Authorization is the use of this authentication information when | Authorization is the use of this authentication information when | |||
performing operations. Authorization MAY be affected by factors | performing operations. Authorization MAY be affected by factors | |||
outside of the LDAP Bind request, such as lower layer security | outside of the LDAP Bind request, such as lower layer security | |||
services. | services. | |||
4.2.1. Sequencing of the Bind Request | 4.2.1. Sequencing of the Bind Request | |||
For some SASL authentication mechanisms, it may be necessary for the | For some SASL authentication mechanisms, it may be necessary for the | |||
client to invoke the BindRequest multiple times. If at any stage the | client to invoke the BindRequest multiple times. If at any stage the | |||
client wishes to abort the bind process it MAY unbind and then drop | client wishes to abort the bind process it MAY unbind and then drop | |||
skipping to change at line 1096 | skipping to change at line 1066 | |||
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. | |||
Unlike LDAP v2, the client need not send a Bind Request in the first | Unlike LDAP v2, the client need not send a Bind Request in the first | |||
PDU of the connection. The client may request any operations and the | PDU of the connection. The client may request any operations and the | |||
server MUST treat these as anonymous. If the server requires that the | server MUST treat these as anonymous. If the server requires that the | |||
client bind before browsing or modifying the directory, the server | client bind before browsing or modifying the directory, the server | |||
MAY reject a request other than binding, unbinding or an extended | MAY reject a request other than binding, unbinding or an extended | |||
request with the "operationsError" result. | request with the "operationsError" result. | |||
Lightweight Directory Access Protocol Version 3 | ||||
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 | |||
or the client chooses not to bind on the existing connection, it will | or the client chooses not to bind on the existing connection, it will | |||
close the connection, reopen it and begin again by first sending a | 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. | |||
Clients MAY send multiple bind requests on a connection to change | Clients MAY send multiple bind requests on a connection to change | |||
their credentials. A subsequent bind process has the effect of | their credentials. A subsequent bind process has the effect of | |||
abandoning all operations outstanding on the connection. (This | abandoning all operations outstanding on the connection. (This | |||
skipping to change at line 1119 | skipping to change at line 1091 | |||
integrity mechanism has been negotiated, and that mechanism does not | integrity mechanism has been negotiated, and that mechanism does not | |||
support the changing of credentials from one identity to another, | support the changing of credentials from one identity to another, | |||
then the client MUST instead establish a new connection. | then the client MUST instead establish a new connection. | |||
4.2.2. Authentication and Other Security Services | 4.2.2. Authentication and Other Security Services | |||
The simple authentication option provides minimal authentication | The simple authentication option provides minimal authentication | |||
facilities, with the contents of the authentication field consisting | facilities, with the contents of the authentication field consisting | |||
only of a cleartext password. Note that the use of cleartext | only of a cleartext password. Note that the use of cleartext | |||
passwords is not recommended over open networks when the underlying | passwords is not recommended over open networks when the underlying | |||
Lightweight Directory Access Protocol Version 3 | ||||
transport service cannot guarantee confidentiality; see the "Security | transport service cannot guarantee confidentiality; see the "Security | |||
Considerations" section. | Considerations" section. | |||
If anonymous authentication is to be performed, then the simple | If anonymous authentication is to be performed, then the simple | |||
authentication option MUST be chosen, and the password be of zero | authentication option MUST be chosen, and the password be of zero | |||
length. (This is often done by LDAPv2 clients.) Typically the name is | length. (This is often done by LDAPv2 clients.) Typically the name is | |||
also of zero length. | also of zero length. | |||
The sasl choice allows for any mechanism defined for use with SASL | The sasl choice allows for any mechanism defined for use with SASL | |||
[RFC2222]. The mechanism field contains the name of the mechanism. | [RFC2222]. The mechanism field contains the name of the mechanism. | |||
skipping to change at line 1152 | skipping to change at line 1121 | |||
The client can request that the server use authentication information | The client can request that the server use authentication information | |||
from a lower layer protocol by using the SASL EXTERNAL mechanism. | from a lower layer protocol by using the SASL EXTERNAL mechanism. | |||
4.2.3. Bind Response | 4.2.3. 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, | |||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
If the bind was successful, the resultCode will be success, otherwise | If the bind was successful, the resultCode will be success, otherwise | |||
it will be one of: | it will be one of: | |||
- operationsError: server encountered an internal error. | - operationsError: server encountered an internal error. | |||
skipping to change at line 1177 | skipping to change at line 1149 | |||
- strongAuthRequired: the server requires authentication be | - strongAuthRequired: the server requires authentication be | |||
performed with a SASL mechanism. | performed with a SASL mechanism. | |||
- referral: this server cannot accept this bind and the client | - referral: this server cannot accept this bind and the client | |||
should try another. | should try another. | |||
- saslBindInProgress: the server requires the client to send a new | - saslBindInProgress: the server requires the client to send a new | |||
bind request, with the same sasl mechanism, to continue the | bind request, with the same sasl mechanism, to continue the | |||
authentication process. | authentication process. | |||
Lightweight Directory Access Protocol Version 3 | ||||
- inappropriateAuthentication: the server requires the client which | - inappropriateAuthentication: the server requires the client which | |||
had attempted to bind anonymously or without supplying credentials | had attempted to bind anonymously or without supplying credentials | |||
to provide some form of credentials. | to provide some form of credentials. | |||
- invalidCredentials: the wrong password was supplied or the SASL | - invalidCredentials: the wrong password was supplied or the SASL | |||
credentials could not be processed. | credentials could not be processed. | |||
- unavailable: the server is shutting down. | - unavailable: the server is shutting down. | |||
If the server does not support the client's requested protocol | If the server does not support the client's requested protocol | |||
skipping to change at line 1209 | skipping to change at line 1179 | |||
communicating, or to perform "challenge-response" authentication. If | communicating, or to perform "challenge-response" authentication. If | |||
the client bound with the password choice, or the SASL mechanism does | the client bound with the password choice, or the SASL mechanism does | |||
not require the server to return information to the client, then this | not require the server to return information to the client, then this | |||
field is not to be included in the result. | field is not to be included in the result. | |||
4.3. Unbind Operation | 4.3. Unbind Operation | |||
The function of the Unbind Operation is to terminate a protocol | The function of the Unbind Operation is to terminate a protocol | |||
session. The Unbind Operation is defined as follows: | session. The Unbind Operation is defined as follows: | |||
Lightweight Directory Access Protocol Version 3 | ||||
UnbindRequest ::= [APPLICATION 2] NULL | UnbindRequest ::= [APPLICATION 2] NULL | |||
The Unbind Operation has no response defined. Upon transmission of an | The Unbind Operation has no response defined. Upon transmission of an | |||
UnbindRequest, a protocol client may assume that the protocol session | UnbindRequest, a protocol client may assume that the protocol session | |||
is terminated. Upon receipt of an UnbindRequest, a protocol server | is terminated. Upon receipt of an UnbindRequest, a protocol server | |||
may assume that the requesting client has terminated the session and | may assume that the requesting client has terminated the session and | |||
that all outstanding requests may be discarded, and may close the | that all outstanding requests may be discarded, and may close the | |||
connection. | connection. | |||
4.4. Unsolicited Notification | 4.4. Unsolicited Notification | |||
skipping to change at line 1233 | skipping to change at line 1205 | |||
server or in the connection between the client and the server. The | server or in the connection between the client and the server. The | |||
notification is of an advisory nature, and the server will not expect | notification is of an advisory nature, and the server will not expect | |||
any response to be returned from the client. | any response to be returned from the client. | |||
The unsolicited notification is structured as an LDAPMessage in which | The unsolicited notification is structured as an LDAPMessage in which | |||
the messageID is 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. | |||
Lightweight Directory Access Protocol Version 3 | ||||
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 | |||
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 | |||
skipping to change at line 1263 | skipping to change at line 1233 | |||
The following resultCode values are to be used in this notification: | The following resultCode values are to be used in this notification: | |||
- protocolError: The server has received data from the client in | - protocolError: The server has received data from the client in | |||
which the LDAPMessage structure could not be parsed. | which the LDAPMessage structure could not be parsed. | |||
- strongAuthRequired: The server has detected that an established | - strongAuthRequired: The server has detected that an established | |||
underlying security association protecting communication between | underlying security association protecting communication between | |||
the client and server has unexpectedly failed or been compromised. | the client and server has unexpectedly failed or been compromised. | |||
Lightweight Directory Access Protocol Version 3 | ||||
- 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. | |||
After receiving this notice, the client MUST NOT transmit any further | After receiving this notice, the client MUST NOT transmit any further | |||
on the connection, and may abruptly close the connection. | on the connection, and may abruptly close the connection. | |||
4.5. Search Operation | 4.5. Search Operation | |||
skipping to change at line 1288 | skipping to change at line 1260 | |||
4.5.1. Search Request | 4.5.1. Search Request | |||
The Search Request is defined as follows: | The Search Request is defined as follows: | |||
SearchRequest ::= [APPLICATION 3] SEQUENCE { | SearchRequest ::= [APPLICATION 3] SEQUENCE { | |||
baseObject LDAPDN, | baseObject LDAPDN, | |||
scope ENUMERATED { | scope ENUMERATED { | |||
baseObject (0), | baseObject (0), | |||
singleLevel (1), | singleLevel (1), | |||
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, | |||
skipping to change at line 1317 | skipping to change at line 1286 | |||
equalityMatch [3] AttributeValueAssertion, | equalityMatch [3] AttributeValueAssertion, | |||
substrings [4] SubstringFilter, | substrings [4] SubstringFilter, | |||
greaterOrEqual [5] AttributeValueAssertion, | greaterOrEqual [5] AttributeValueAssertion, | |||
lessOrEqual [6] AttributeValueAssertion, | lessOrEqual [6] AttributeValueAssertion, | |||
present [7] AttributeDescription, | present [7] AttributeDescription, | |||
approxMatch [8] AttributeValueAssertion, | approxMatch [8] AttributeValueAssertion, | |||
extensibleMatch [9] MatchingRuleAssertion } | extensibleMatch [9] MatchingRuleAssertion } | |||
SubstringFilter ::= SEQUENCE { | SubstringFilter ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
-- at least one must be present | -- at least one must be present, | |||
-- initial and final can occur at most once | ||||
substrings SEQUENCE OF CHOICE { | substrings SEQUENCE OF CHOICE { | |||
Lightweight Directory Access Protocol Version 3 | ||||
initial [0] AssertionValue, | initial [0] AssertionValue, | |||
any [1] AssertionValue, | any [1] AssertionValue, | |||
final [2] AssertionValue } } | final [2] AssertionValue } } | |||
MatchingRuleAssertion ::= SEQUENCE { | MatchingRuleAssertion ::= SEQUENCE { | |||
matchingRule [1] MatchingRuleId OPTIONAL, | matchingRule [1] MatchingRuleId OPTIONAL, | |||
type [2] AttributeDescription OPTIONAL, | type [2] AttributeDescription OPTIONAL, | |||
matchValue [3] AssertionValue, | matchValue [3] AssertionValue, | |||
dnAttributes [4] BOOLEAN DEFAULT FALSE } | dnAttributes [4] BOOLEAN DEFAULT FALSE } | |||
skipping to change at line 1345 | skipping to change at line 1318 | |||
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: | |||
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; | |||
Lightweight Directory Access Protocol Version 3 | ||||
derefInSearching: dereference aliases in subordinates of | derefInSearching: dereference aliases in subordinates of | |||
the base object in searching, but not in locating the base | the base object in searching, but not in locating the base | |||
object of the search; | object of the search; | |||
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. | |||
skipping to change at line 1375 | skipping to change at line 1346 | |||
seconds) allowed for a search. A value of 0 in this field | seconds) allowed for a search. A value of 0 in this field | |||
indicates that no client-requested time limit restrictions are in | indicates that no client-requested time limit restrictions are in | |||
effect for the search. | effect for the search. | |||
- typesOnly: An indicator as to whether search results will contain | - typesOnly: An indicator as to whether search results will contain | |||
both attribute types and values, or just attribute types. Setting | both attribute types and values, or just attribute types. Setting | |||
this field to TRUE causes only attribute types (no values) to be | this field to TRUE causes only attribute types (no values) to be | |||
returned. Setting this field to FALSE causes both attribute types | returned. Setting this field to FALSE causes both attribute types | |||
and values to be returned. | and values to be returned. | |||
Lightweight Directory Access Protocol Version 3 | ||||
- filter: A filter that defines the conditions that must be | - filter: A filter that defines the conditions that must be | |||
fulfilled in order for the search to match a given entry. | fulfilled in order for the search to match a given entry. | |||
The 'and', 'or' and 'not' choices can be used to form combinations | The 'and', 'or' and 'not' choices can be used to form combinations | |||
of filters. At least one filter element MUST be present in an | of filters. At least one filter element MUST be present in an | |||
'and' or 'or' choice. The others match against individual | 'and' or 'or' choice. The others match against individual | |||
attribute values of entries in the scope of the search. | attribute values of entries in the scope of the search. | |||
(Implementor's note: the 'not' filter is an example of a tagged | (Implementor's note: the 'not' filter is an example of a tagged | |||
choice in an implicitly-tagged module. In BER this is treated as | choice in an implicitly-tagged module. In BER this is treated as | |||
if the tag was explicit.) | if the tag was explicit.) | |||
skipping to change at line 1402 | skipping to change at line 1375 | |||
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. | |||
Lightweight Directory Access Protocol Version 3 | ||||
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 | |||
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 extensibleMatch is new in this version of LDAP. If the | The extensibleMatch is new in this version of LDAP. If the | |||
matchingRule field is absent, the type field MUST be present, and | matchingRule field is absent, the type field MUST be present, and | |||
the equality match is performed for that type. If the type field | the equality match is performed for that type. If the type field | |||
is absent and matchingRule is present, the matchValue is compared | is absent and matchingRule is present, the matchValue is compared | |||
against all attributes in an entry which support that | against all attributes in an entry which support that | |||
skipping to change at line 1431 | skipping to change at line 1402 | |||
otherwise the filter item is undefined. If the dnAttributes field | otherwise the filter item is undefined. If the dnAttributes field | |||
is set to TRUE, the match is applied against all the attributes in | is set to TRUE, the match is applied against all the attributes in | |||
an entry's distinguished name as well, and also evaluates to TRUE | an entry's distinguished name as well, and also evaluates to TRUE | |||
if there is at least one attribute in the distinguished name for | if there is at least one attribute in the distinguished name for | |||
which the filter item evaluates to TRUE. (Editors note: The | which the filter item evaluates to TRUE. (Editors note: The | |||
dnAttributes field is present so that there does not need to be | dnAttributes field is present so that there does not need to be | |||
multiple versions of generic matching rules such as for word | multiple versions of generic matching rules such as for word | |||
matching, one to apply to entries and another to apply to entries | matching, one to apply to entries and another to apply to entries | |||
and dn attributes as well). | and dn attributes as well). | |||
Lightweight Directory Access Protocol Version 3 | ||||
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 | |||
skipping to change at line 1457 | skipping to change at line 1430 | |||
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. There are two special | |||
values which may be used: an empty list with no attributes, and | values which may be used: an empty list with no attributes, and | |||
the attribute description string "*". Both of these signify that | the attribute description string "*". Both of these signify that | |||
all user attributes are to be returned. (The "*" allows the | all user attributes are to be returned. (The "*" allows the | |||
client to request all user attributes in addition to specific | client to request all user attributes in addition to specific | |||
operational attributes). | operational attributes). | |||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
skipping to change at line 1487 | skipping to change at line 1458 | |||
Note that an X.500 "list"-like operation can be emulated by the | Note that an X.500 "list"-like operation can be emulated by the | |||
client requesting a one-level LDAP search operation with a filter | client requesting a one-level LDAP search operation with a filter | |||
checking for the presence of the objectClass attribute, and that an | checking for the presence of the objectClass attribute, and that an | |||
X.500 "read"-like operation can be emulated by a base object LDAP | X.500 "read"-like operation can be emulated by a base object LDAP | |||
search operation with the same filter. A server which provides a | search operation with the same filter. A server which provides a | |||
gateway to X.500 is not required to use the Read or List operations, | gateway to X.500 is not required to use the Read or List operations, | |||
although it may choose to do so, and if it does must provide the same | although it may choose to do so, and if it does must provide the same | |||
semantics as the X.500 search operation. | semantics as the X.500 search operation. | |||
Lightweight Directory Access Protocol Version 3 | ||||
4.5.2. Search Result | 4.5.2. Search Result | |||
The results of the search attempted by the server upon receipt of a | The results of the search attempted by the server upon receipt of a | |||
Search Request are returned in Search Responses, which are LDAP | Search Request are returned in Search Responses, which are LDAP | |||
messages containing either SearchResultEntry, SearchResultReference, | messages containing either SearchResultEntry, SearchResultReference, | |||
or SearchResultDone data types. | or SearchResultDone data types. | |||
SearchResultEntry ::= [APPLICATION 4] SEQUENCE { | SearchResultEntry ::= [APPLICATION 4] SEQUENCE { | |||
objectName LDAPDN, | objectName LDAPDN, | |||
attributes PartialAttributeList } | attributes PartialAttributeList } | |||
skipping to change at line 1512 | skipping to change at line 1485 | |||
-- 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 LDAPURL | SearchResultReference ::= [APPLICATION 19] SEQUENCE OF LDAPURL | |||
-- at least one LDAPURL element must be present | -- at least one LDAPURL element must be present | |||
SearchResultDone ::= [APPLICATION 5] LDAPResult | SearchResultDone ::= [APPLICATION 5] LDAPResult | |||
Lightweight Directory Access Protocol Version 3 | ||||
Upon receipt of a Search Request, a server will perform the necessary | Upon receipt of a Search Request, a server will perform the necessary | |||
search of the DIT. | search of the DIT. | |||
If the LDAP session is operating over a connection-oriented transport | If the LDAP session is operating over a connection-oriented transport | |||
such as TCP, the server will return to the client a sequence of | such as TCP, the server will return to the client a sequence of | |||
responses in separate LDAP messages. There may be zero or more | responses in separate LDAP messages. There may be zero or more | |||
responses containing SearchResultEntry, one for each entry found | responses containing SearchResultEntry, one for each entry found | |||
during the search. There may also be zero or more responses | during the search. There may also be zero or more responses | |||
containing SearchResultReference, one for each area not explored by | containing SearchResultReference, one for each area not explored by | |||
this server during the search. The SearchResultEntry and | this server during the search. The SearchResultEntry and | |||
skipping to change at line 1543 | skipping to change at line 1514 | |||
attributes is subject to access control and other administrative | attributes is subject to access control and other administrative | |||
policy. Some attributes may be returned in binary format (indicated | policy. Some attributes may be returned in binary format (indicated | |||
by the AttributeDescription in the response having the "binary" | by the AttributeDescription in the response having the "binary" | |||
option present). | option present). | |||
Some attributes may be constructed by the server and appear in a | Some attributes may be constructed by the server and appear in a | |||
SearchResultEntry attribute list, although they are not stored | SearchResultEntry attribute list, although they are not stored | |||
attributes of an entry. Clients MUST NOT assume that all attributes | attributes of an entry. Clients MUST NOT assume that all attributes | |||
can be modified, even if permitted by access control. | can be modified, even if permitted by access control. | |||
Lightweight Directory Access Protocol Version 3 | ||||
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 | |||
thus has not searched any entries; in this case it would return a | thus has not searched any entries; in this case it would return a | |||
SearchResultDone containing a referral resultCode. | SearchResultDone containing a referral resultCode. | |||
skipping to change at line 1568 | skipping to change at line 1541 | |||
The SearchResultReference is of the same data type as the Referral. | The SearchResultReference is of the same data type as the Referral. | |||
URLs for servers implementing the LDAP protocol are written according | URLs for servers implementing the LDAP protocol are written according | |||
to [RFC2255]. The <dn> part MUST be present in the URL, with the new | to [RFC2255]. The <dn> part MUST be present in the URL, with the new | |||
target object name. The client MUST use this name in its next | target object name. The client MUST use this name in its next | |||
request. Some servers (e.g. part of a distributed index exchange | request. Some servers (e.g. part of a distributed index exchange | |||
system) may provide a different filter in the URLs of the | system) may provide a different filter in the URLs of the | |||
SearchResultReference. If the filter part of the URL is present in an | SearchResultReference. If the filter part of the URL is present in an | |||
LDAP URL, the client MUST use the new filter in its next request to | LDAP URL, the client MUST use the new filter in its next request to | |||
progress the search, and if the filter part is absent the client will | progress the search, and if the filter part is absent the client will | |||
Lightweight Directory Access Protocol Version 3 | ||||
use again the same filter. Other aspects of the new search request | use again the same filter. Other aspects of the new search request | |||
may be the same or different as the search which generated the | may be the same or different as the search which generated the | |||
continuation references. | continuation references. | |||
Other kinds of URLs may be returned so long as the operation could be | Other kinds of URLs may be returned so long as the operation could be | |||
performed using that protocol. | performed using that protocol. | |||
The name of an unexplored subtree in a SearchResultReference need not | The name of an unexplored subtree in a SearchResultReference need not | |||
be subordinate to the base object. | be subordinate to the base object. | |||
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 | |||
skipping to change at line 1600 | skipping to change at line 1570 | |||
"O=MNN,C=WW" and the entry "CN=Manager,O=MNN,C=WW". It knows that | "O=MNN,C=WW" and the entry "CN=Manager,O=MNN,C=WW". It knows that | |||
either LDAP-capable servers (hostb) or (hostc) hold | either LDAP-capable servers (hostb) or (hostc) hold | |||
"OU=People,O=MNN,C=WW" (one is the master and the other server a | "OU=People,O=MNN,C=WW" (one is the master and the other server a | |||
shadow), and that LDAP-capable server (hostd) holds the subtree | shadow), and that LDAP-capable server (hostd) holds the subtree | |||
"OU=Roles,O=MNN,C=WW". If a subtree search of "O=MNN,C=WW" is | "OU=Roles,O=MNN,C=WW". If a subtree search of "O=MNN,C=WW" is | |||
requested to the contacted server, it may return the following: | requested to the contacted server, it may return the following: | |||
SearchResultEntry for O=MNN,C=WW | SearchResultEntry for O=MNN,C=WW | |||
SearchResultEntry for CN=Manager,O=MNN,C=WW | SearchResultEntry for CN=Manager,O=MNN,C=WW | |||
SearchResultReference { | SearchResultReference { | |||
Lightweight Directory Access Protocol Version 3 | ||||
ldap://hostb/OU=People,O=MNN,C=WW | ldap://hostb/OU=People,O=MNN,C=WW | |||
ldap://hostc/OU=People,O=MNN,C=WW | ldap://hostc/OU=People,O=MNN,C=WW | |||
} | } | |||
SearchResultReference { | SearchResultReference { | |||
ldap://hostd/OU=Roles,O=MNN,C=WW | ldap://hostd/OU=Roles,O=MNN,C=WW | |||
} | } | |||
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 | |||
skipping to change at line 1625 | skipping to change at line 1598 | |||
SearchResultReference { | SearchResultReference { | |||
ldap://hoste/OU=Managers,OU=People,O=MNN,C=WW | ldap://hoste/OU=Managers,OU=People,O=MNN,C=WW | |||
} | } | |||
SearchResultReference { | SearchResultReference { | |||
ldap://hostf/OU=Consultants,OU=People,O=MNN,C=WW | ldap://hostf/OU=Consultants,OU=People,O=MNN,C=WW | |||
} | } | |||
SearchResultDone (success) | SearchResultDone (success) | |||
If the contacted server does not hold the base object for the search, | If the contacted server does not hold the base object for the search, | |||
then it will return a referral to the client. For example, if the | then it will return a referral to the client. For example, if the | |||
Lightweight Directory Access Protocol Version 3 | ||||
client requests a subtree search of "O=XYZ,C=US" to hosta, the server | client requests a subtree search of "O=XYZ,C=US" to hosta, the server | |||
may return only a SearchResultDone containing a referral. | may return only a SearchResultDone containing a referral. | |||
SearchResultDone (referral) { | SearchResultDone (referral) { | |||
ldap://hostg/ | ldap://hostg/ | |||
} | } | |||
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 | |||
skipping to change at line 1656 | skipping to change at line 1626 | |||
delete (1), | delete (1), | |||
replace (2) }, | replace (2) }, | |||
modification AttributeTypeAndValues } } | modification AttributeTypeAndValues } } | |||
AttributeTypeAndValues ::= SEQUENCE { | AttributeTypeAndValues ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
Parameters of the Modify Request are: | Parameters of the Modify Request are: | |||
Lightweight Directory Access Protocol Version 3 | ||||
- 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 | - modification: A list of modifications to be performed on the | |||
entry. The entire list of entry modifications MUST be performed in | entry. The entire list of entry modifications MUST be performed in | |||
the order they are listed, as a single atomic operation. While | the order they are listed, as a single atomic operation. While | |||
individual modifications may violate the directory schema, the | individual modifications may violate the directory schema, the | |||
resulting entry after the entire list of modifications is | resulting entry after the entire list of modifications is | |||
skipping to change at line 1682 | skipping to change at line 1654 | |||
attribute if necessary; | attribute if necessary; | |||
delete: delete values listed from the given attribute, | delete: delete values listed from the given attribute, | |||
removing the entire attribute if no values are listed, or | removing the entire attribute if no values are listed, or | |||
if all current values of the attribute are listed for | if all current values of the attribute are listed for | |||
deletion; | deletion; | |||
replace: replace all existing values of the given attribute | replace: replace all existing values of the given attribute | |||
with the new values listed, creating the attribute if it | with the new values listed, creating the attribute if it | |||
did not already exist. A replace with no value will delete | did not already exist. A replace with no value will delete | |||
Lightweight Directory Access Protocol Version 3 | ||||
the entire attribute if it exists, and is ignored if the | the entire attribute if it exists, and is ignored if the | |||
attribute does not exist. | attribute does not exist. | |||
The result of the modify attempted by the server upon receipt of a | The result of the modify attempted by the server upon receipt of a | |||
Modify Request is returned in a Modify Response, defined as follows: | Modify Request is returned in a Modify Response, defined as 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 1713 | skipping to change at line 1682 | |||
performed if the Modify Response indicates successful completion of | performed if the Modify Response indicates successful completion of | |||
the Modify Operation. If the connection fails, whether the | the Modify Operation. If the connection fails, whether the | |||
modification occurred or not is indeterminate. | modification occurred or not is indeterminate. | |||
The Modify Operation cannot be used to remove from an entry any of | The Modify Operation cannot be used to remove from an entry any of | |||
its distinguished values, those values which form the entry's | its distinguished values, those values which form the entry's | |||
relative distinguished name. An attempt to do so will result in the | relative distinguished name. An attempt to do so will result in the | |||
server returning the error notAllowedOnRDN. The Modify DN Operation | server returning the error notAllowedOnRDN. The Modify DN Operation | |||
described in section 4.9 is used to rename an entry. | described in section 4.9 is used to rename an entry. | |||
Lightweight Directory Access Protocol Version 3 | ||||
If an equality match filter has not been defined for an attribute | If an equality match filter has not been defined for an attribute | |||
type, clients MUST NOT attempt to add or delete individual values of | type, clients MUST NOT attempt to add or delete individual values of | |||
that attribute from an entry using the "add" or "delete" form of a | that attribute from an entry using the "add" or "delete" form of a | |||
modification, and MUST instead use the "replace" form. | modification, and MUST instead use the "replace" form. | |||
Note that due to the simplifications made in LDAP, there is not a | Note that due to the simplifications made in LDAP, there is not a | |||
direct mapping of the modifications in an LDAP ModifyRequest onto the | direct mapping of the modifications in an LDAP ModifyRequest onto the | |||
EntryModifications of a DAP ModifyEntry operation, and different | EntryModifications of a DAP ModifyEntry operation, and different | |||
implementations of LDAP-DAP gateways may use different means of | implementations of LDAP-DAP gateways may use different means of | |||
representing the change. If successful, the final effect of the | representing the change. If successful, the final effect of the | |||
skipping to change at line 1740 | skipping to change at line 1711 | |||
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 } | |||
Parameters of the Add Request are: | Parameters of the Add Request are: | |||
Lightweight Directory Access Protocol Version 3 | ||||
- 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 | |||
entry being added. Clients MUST include distinguished values | entry being added. Clients MUST include distinguished values | |||
(those forming the entry's own RDN) in this list, the objectClass | (those forming the entry's own RDN) in this list, the objectClass | |||
attribute, and values of any mandatory attributes of the listed | attribute, and values of any mandatory attributes of the listed | |||
object classes. Clients MUST NOT supply NO-USER-MODIFICATION | object classes. Clients MUST NOT supply NO-USER-MODIFICATION | |||
attributes such as the createTimestamp or creatorsName attributes, | attributes such as the createTimestamp or creatorsName attributes, | |||
since these will be generated automatically by the server. | since the server maintains these automatically. | |||
The entry named in the entry field of the AddRequest MUST NOT exist | The entry named in the entry field of the AddRequest MUST NOT exist | |||
for the AddRequest to succeed. The parent of the entry to be added | for the AddRequest to succeed. The parent of the entry to be added | |||
MUST exist. For example, if the client attempted to add | MUST exist. For example, if the client attempted to add | |||
"CN=JS,O=Foo,C=US", the "O=Foo,C=US" entry did not exist, and the | "CN=JS,O=Foo,C=US", the "O=Foo,C=US" entry did not exist, and the | |||
"C=US" entry did exist, then the server would return the error | "C=US" entry did exist, then the server would return the error | |||
noSuchObject with the matchedDN field containing "C=US". If the | noSuchObject with the matchedDN field containing "C=US". If the | |||
parent entry exists but is not in a naming context held by the | parent entry exists but is not in a naming context held by the | |||
server, the server SHOULD return a referral to the server holding the | server, the server SHOULD return a referral to the server holding the | |||
parent entry. | parent entry. | |||
Servers implementations SHOULD NOT restrict where entries can be | Servers implementations SHOULD NOT restrict where entries can be | |||
located in the directory. Some servers MAY allow the administrator to | located in the directory. Some servers MAY allow the administrator to | |||
restrict the classes of entries which can be added to the directory. | restrict the classes of entries which can be added to the directory. | |||
Lightweight Directory Access Protocol Version 3 | ||||
Upon receipt of an Add Request, a server will attempt to perform the | Upon receipt of an Add Request, a server will attempt to perform the | |||
add requested. The result of the add attempt will be returned to the | add requested. The result of the add attempt will be returned to the | |||
client in the Add Response, defined as follows: | client in the Add Response, defined as follows: | |||
AddResponse ::= [APPLICATION 9] LDAPResult | AddResponse ::= [APPLICATION 9] LDAPResult | |||
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 | |||
skipping to change at line 1796 | skipping to change at line 1767 | |||
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. | |||
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 | |||
Lightweight Directory Access Protocol Version 3 | ||||
Upon receipt of a Delete Request, a server will attempt to perform | Upon receipt of a Delete Request, a server will attempt to perform | |||
the entry removal requested. The result of the delete attempt will be | the entry removal requested. The result of the delete attempt will be | |||
returned to the client in the Delete Response. | returned to the client in the Delete Response. | |||
4.9. Modify DN Operation | 4.9. Modify DN Operation | |||
The Modify DN Operation allows a client to change the leftmost (least | The Modify DN Operation allows a client to change the leftmost (least | |||
significant) component of the name of an entry in the directory, or | significant) component of the name of an entry in the directory, or | |||
to move a subtree of entries to a new location in the directory. The | to move a subtree of entries to a new location in the directory. The | |||
Modify DN Request is defined as follows: | Modify DN Request is defined as follows: | |||
skipping to change at line 1825 | skipping to change at line 1794 | |||
Parameters of the Modify DN Request are: | Parameters of the Modify DN Request are: | |||
- entry: the Distinguished Name of the entry to be changed. This | - entry: the Distinguished Name of the entry to be changed. This | |||
entry may or may not have subordinate entries. Note that the | entry may or may not have subordinate entries. Note that the | |||
server will not dereference any aliases in locating the entry to | server will not dereference any aliases in locating the entry to | |||
be changed. | be changed. | |||
- newrdn: the RDN that will form the leftmost component of the new | - newrdn: the RDN that will form the leftmost component of the new | |||
name of the entry. | name of the entry. | |||
Lightweight Directory Access Protocol Version 3 | ||||
- 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 the | - newSuperior: if present, this is the Distinguished Name of the | |||
entry which becomes the immediate superior of the existing entry. | entry which becomes the immediate superior of the existing entry. | |||
The result of the name change attempted by the server upon receipt of | The result of the name change attempted by the server upon receipt of | |||
a Modify DN Request is returned in the Modify DN Response, defined as | a Modify DN Request is returned in the Modify DN Response, defined as | |||
follows: | follows: | |||
skipping to change at line 1851 | skipping to change at line 1822 | |||
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 error | already an entry with that name, the operation would fail with error | |||
code entryAlreadyExists. | code entryAlreadyExists. | |||
If the deleteoldrdn parameter is TRUE, the values forming the old RDN | If the deleteoldrdn parameter is TRUE, the values forming the old RDN | |||
are deleted from the entry. If the deleteoldrdn parameter is FALSE, | are deleted from the entry. If the deleteoldrdn parameter is FALSE, | |||
Lightweight Directory Access Protocol Version 3 | ||||
the values forming the old RDN will be retained as non-distinguished | the values forming the old RDN will be retained as non-distinguished | |||
attribute values of the entry. The server may not perform the | attribute values of the entry. The server may not perform the | |||
operation and return an error code if the setting of the deleteoldrdn | operation and return an error code if the setting of the deleteoldrdn | |||
parameter would cause a schema inconsistency in the entry. | parameter would cause a schema inconsistency in the entry. | |||
Note that X.500 restricts the ModifyDN operation to only affect | Note that X.500 restricts the ModifyDN operation to only affect | |||
entries that are contained within a single server. If the LDAP server | entries that are contained within a single server. If the LDAP server | |||
is mapped onto DAP, then this restriction will apply, and the | is mapped onto DAP, then this restriction will apply, and the | |||
resultCode affectsMultipleDSAs will be returned if this error | resultCode affectsMultipleDSAs will be returned if this error | |||
occurred. In general clients MUST NOT expect to be able to perform | occurred. In general clients MUST NOT expect to be able to perform | |||
skipping to change at line 1882 | skipping to change at line 1850 | |||
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. | |||
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 | |||
Upon receipt of a Compare Request, a server will attempt to perform | Upon receipt of a Compare Request, a server will attempt to perform | |||
skipping to change at line 1908 | skipping to change at line 1878 | |||
compared but not read. In a search result, it may be that an | compared but not read. In a search result, it may be that an | |||
attribute of that type would be returned, but with an empty set of | attribute of that type would be returned, but with an empty set of | |||
values. | values. | |||
4.11. Abandon Operation | 4.11. Abandon Operation | |||
The function of the Abandon Operation is to allow a client to request | The function of the Abandon Operation is to allow a client to request | |||
that the server abandon an outstanding operation. The Abandon Request | that the server abandon an outstanding operation. The Abandon Request | |||
is defined as follows: | is defined as follows: | |||
Lightweight Directory Access Protocol Version 3 | ||||
AbandonRequest ::= [APPLICATION 16] MessageID | AbandonRequest ::= [APPLICATION 16] MessageID | |||
The MessageID MUST be that of a an operation which was requested | The MessageID MUST be that of a an operation which was requested | |||
earlier in this connection. | earlier in this connection. | |||
(The abandon request itself has its own message id. This is distinct | (The abandon request itself has its own message id. This is distinct | |||
from the id of the earlier operation being abandoned.) | from the id of the earlier operation being abandoned.) | |||
There is no response defined in the Abandon Operation. Upon | There is no response defined in the Abandon Operation. Upon | |||
transmission of an Abandon Operation, a client may expect that the | transmission of an Abandon Operation, a client may expect that the | |||
skipping to change at line 1937 | skipping to change at line 1905 | |||
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). | when the abandon was requested). | |||
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. | |||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
The extended operation allows clients to make requests and receive | The extended operation allows clients to make requests and receive | |||
responses with predefined syntaxes and semantics. These may be | responses with predefined syntaxes and semantics. These may be | |||
defined in RFCs or be private to particular implementations. Each | defined in RFCs or be private to particular implementations. Each | |||
skipping to change at line 1964 | skipping to change at line 1934 | |||
IDENTIFIER corresponding to the request. The requestValue is | IDENTIFIER corresponding to the request. The requestValue is | |||
information in a form defined by that request, encapsulated inside an | information in a form defined by that request, encapsulated inside an | |||
OCTET STRING. | OCTET STRING. | |||
The server will respond to this with an LDAPMessage containing the | The server will respond to this with an LDAPMessage containing the | |||
ExtendedResponse. | ExtendedResponse. | |||
ExtendedResponse ::= [APPLICATION 24] SEQUENCE { | ExtendedResponse ::= [APPLICATION 24] SEQUENCE { | |||
COMPONENTS OF LDAPResult, | COMPONENTS OF LDAPResult, | |||
responseName [10] LDAPOID OPTIONAL, | responseName [10] LDAPOID OPTIONAL, | |||
Lightweight Directory Access Protocol Version 3 | ||||
response [11] OCTET STRING OPTIONAL } | response [11] OCTET STRING OPTIONAL } | |||
If the server does not recognize the request name, it MUST return | If the server does not recognize the request name, it MUST return | |||
only the response fields from LDAPResult, containing the | only the response fields from LDAPResult, containing the | |||
protocolError result code. | protocolError result code. | |||
5. Protocol Element Encodings and Transfer | 5. Protocol Element Encodings and Transfer | |||
One underlying service is defined here. Clients and servers SHOULD | One underlying service is defined here. Clients and servers SHOULD | |||
implement the mapping of LDAP over TCP described in 5.2.1. | implement the mapping of LDAP over TCP described in 5.2.1. | |||
5.1. Mapping Onto BER-based Transport Services | 5.1. Protocol Encoding | |||
The protocol elements of LDAP are encoded for exchange using the | The protocol elements of LDAP are encoded for exchange using the | |||
Basic Encoding Rules (BER) [X.690] of ASN.1 [X.680]. However, due to | Basic Encoding Rules (BER) [X.690] of ASN.1 [X.680]. However, due to | |||
the high overhead involved in using certain elements of the BER, the | the high overhead involved in using certain elements of the BER, the | |||
following additional restrictions are placed on BER-encodings of LDAP | following additional restrictions are placed on BER-encodings of LDAP | |||
protocol elements: | protocol elements: | |||
(1) Only the definite form of length encoding will be used. | (1) Only the definite form of length encoding will be used. | |||
(2) OCTET STRING values will be encoded in the primitive form only. | (2) OCTET STRING values will be encoded in the primitive form only. | |||
(3) If the value of a BOOLEAN type is true, the encoding MUST have | (3) If the value of a BOOLEAN type is true, the encoding MUST have | |||
its contents octets set to hex "FF". | its contents octets set to hex "FF". | |||
Lightweight Directory Access Protocol Version 3 | ||||
(4) If a value of a type is its default value, it MUST be absent. | (4) If a value of a type is its default value, it MUST be absent. | |||
Only some BOOLEAN and INTEGER types have default values in this | Only some BOOLEAN and INTEGER types have default values in this | |||
protocol definition. | protocol definition. | |||
These restrictions do not apply to ASN.1 types encapsulated inside of | These restrictions do not apply to ASN.1 types encapsulated inside of | |||
OCTET STRING values, such as attribute values, unless otherwise | OCTET STRING values, such as attribute values, unless otherwise | |||
noted. | noted. | |||
5.2. Transfer Protocols | 5.2. Transfer Protocols | |||
This protocol is designed to run over connection-oriented, reliable | This protocol is designed to run over connection-oriented, reliable | |||
transports, with all 8 bits in an octet being significant in the data | transports, with all 8 bits in an octet being significant in the data | |||
stream. | stream. | |||
5.2.1. Transmission Control Protocol (TCP) | 5.2.1. Transmission Control Protocol (TCP) | |||
The LDAPMessage PDUs are mapped directly onto the TCP bytestream. It | The encoded LDAPMessage PDUs are mapped directly onto the TCP | |||
is recommended that server implementations running over the TCP MAY | bytestream. It is recommended that server implementations running | |||
provide a protocol listener on the assigned port, 389. Servers may | over the TCP MAY provide a protocol listener on the assigned port, | |||
instead provide a listener on a different port number. Clients MUST | 389. Servers may instead provide a listener on a different port | |||
support contacting servers on any valid TCP port. | number. Clients MUST support contacting servers on any valid TCP | |||
port. | ||||
6. Implementation Guidelines | 6. Implementation Guidelines | |||
This document describes an Internet protocol. | This document describes an Internet protocol. | |||
6.1. Server Implementations | 6.1. Server Implementations | |||
Lightweight Directory Access Protocol Version 3 | ||||
The server MUST be capable of recognizing all the mandatory attribute | The server MUST be capable of recognizing all the mandatory attribute | |||
type names and implement the syntaxes specified in [RFC2252]. Servers | type names and implement the syntaxes specified in [RFC2252]. Servers | |||
MAY also recognize additional attribute type names. | MAY also recognize additional attribute type names. | |||
6.2. Client Implementations | 6.2. Client Implementations | |||
Clients which request referrals MUST ensure that they do not loop | Clients which request referrals MUST ensure that they do not loop | |||
between servers. They MUST NOT repeatedly contact the same server for | between servers. They MUST NOT repeatedly contact the same server for | |||
the same request with the same target entry name, scope and filter. | the same request with the same target entry name, scope and filter. | |||
Some clients may be using a counter that is incremented each time | Some clients may be using a counter that is incremented each time | |||
skipping to change at line 2048 | skipping to change at line 2016 | |||
assume that servers support any particular schemas beyond those | assume that servers support any particular schemas beyond those | |||
referenced in section 6.1. Different schemas can have different | referenced in section 6.1. Different schemas can have different | |||
attribute types with the same names. The client can retrieve the | attribute types with the same names. The client can retrieve the | |||
subschema entries referenced by the subschemaSubentry attribute in | subschema entries referenced by the subschemaSubentry attribute in | |||
the server's root DSE or in entries held by the server. | the server's root DSE or in entries held by the server. | |||
7. Security Considerations | 7. Security Considerations | |||
When used with a connection-oriented transport, this version of the | When used with a connection-oriented transport, this version of the | |||
protocol provides facilities for the LDAP v2 authentication | protocol provides facilities for the LDAP v2 authentication | |||
Lightweight Directory Access Protocol Version 3 | ||||
mechanism, simple authentication using a cleartext password, as well | mechanism, simple authentication using a cleartext password, as well | |||
as any SASL mechanism [RFC2222]. SASL allows for integrity and | as any SASL mechanism [RFC2222]. SASL allows for integrity and | |||
privacy services to be negotiated. | privacy services to be negotiated. | |||
It is also permitted that the server can return its credentials to | It is also permitted that the server can return its credentials to | |||
the client, if it chooses to do so. | the client, if it chooses to do so. | |||
Use of cleartext password is strongly discouraged where the | Use of cleartext password is strongly discouraged where the | |||
underlying transport service cannot guarantee confidentiality and may | underlying transport service cannot guarantee confidentiality and may | |||
result in disclosure of the password to unauthorized parties. | result in disclosure of the password to unauthorized parties. | |||
skipping to change at line 2077 | skipping to change at line 2048 | |||
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 cache. | whose request caused it to be cache. | |||
8. Acknowledgements | 8. Acknowledgements | |||
This document is an update to RFC 2251, by Mark Wahl, Tim Howes, and | This document is an update to RFC 2251, by Mark Wahl, Tim Howes, and | |||
Steve Kille. Their work along with the input of individuals of the | Steve Kille. Their work along with the input of individuals of the | |||
Lightweight Directory Access Protocol Version 3 | ||||
IETF LDAPEXT, LDUP, LDAPBIS, and other Working Groups is gratefully | IETF LDAPEXT, LDUP, LDAPBIS, and other Working Groups is gratefully | |||
acknowledged. | acknowledged. | |||
9. Bibliography | 9. Bibliography | |||
[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. | |||
[X.500] ITU-T Rec. X.500, "The Directory: Overview of Concepts, | [X.500] ITU-T Rec. X.500, "The Directory: Overview of Concepts, | |||
skipping to change at line 2106 | skipping to change at line 2074 | |||
[X.680] ITU-T Rec. X.680, "Abstract Syntax Notation One (ASN.1) - | [X.680] ITU-T Rec. X.680, "Abstract Syntax Notation One (ASN.1) - | |||
Specification of Basic Notation", 1994. | Specification of Basic Notation", 1994. | |||
[X.690] ITU-T Rec. X.690, "Specification of ASN.1 encoding rules: | [X.690] ITU-T Rec. X.690, "Specification of ASN.1 encoding rules: | |||
Basic, Canonical, and Distinguished Encoding Rules", 1994. | Basic, Canonical, and Distinguished Encoding Rules", 1994. | |||
[RFC1777] Yeong, W., Howes, T., and S. Kille, "Lightweight Directory | [RFC1777] Yeong, W., Howes, T., and S. Kille, "Lightweight Directory | |||
Access Protocol", RFC 1777, March 1995. | Access Protocol", RFC 1777, March 1995. | |||
Lightweight Directory Access Protocol Version 3 | ||||
[RFC1823] Howes, T., and M. Smith, "The LDAP Application Program | [RFC1823] Howes, T., and M. Smith, "The LDAP Application Program | |||
Interface", RFC 1823, August 1995. | Interface", RFC 1823, August 1995. | |||
[RFC2044] Yergeau, F., "UTF-8, a transformation format of Unicode | [RFC2044] Yergeau, F., "UTF-8, a transformation format of Unicode | |||
and ISO 10646", RFC 2044, October 1996. | and ISO 10646", RFC 2044, October 1996. | |||
[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. | |||
[RFC2222] Meyers, J., "Simple Authentication and Security Layer", | [RFC2222] Meyers, J., "Simple Authentication and Security Layer", | |||
skipping to change at line 2132 | skipping to change at line 2102 | |||
"Lightweight Directory Access Protocol (v3): Attribute | "Lightweight Directory Access Protocol (v3): Attribute | |||
Syntax Definitions", RFC 2252, December 1997. | Syntax Definitions", RFC 2252, December 1997. | |||
[RFC2253] Kille, S., Wahl, M., and T. Howes, "Lightweight Directory | [RFC2253] Kille, S., Wahl, M., and T. Howes, "Lightweight Directory | |||
Access Protocol (v3): UTF-8 String Representation of | Access Protocol (v3): UTF-8 String Representation of | |||
Distinguished Names", RFC 2253, December 1997. | Distinguished Names", RFC 2253, December 1997. | |||
[RFC2255] Howes, T., and M. Smith, "The LDAP URL Format", RFC 2255, | [RFC2255] Howes, T., and M. Smith, "The LDAP URL Format", RFC 2255, | |||
December 1997. | December 1997. | |||
Lightweight Directory Access Protocol Version 3 | ||||
[RFC2396] Berners-Lee, T., Fielding, R., and L. Masinter Uniform | [RFC2396] Berners-Lee, T., Fielding, R., and L. Masinter Uniform | |||
Resource Identifiers (URI): Generic Syntax", RFC 2396, | Resource Identifiers (URI): Generic Syntax", RFC 2396, | |||
August 1998. | August 1998. | |||
[RFC2829] Wahl, M., Alvestrand, H., Hodges, J., and R. Morgan, | [RFC2829] Wahl, M., Alvestrand, H., Hodges, J., and R. Morgan, | |||
"Authentication Methods for LDAP", RFC 2829, May 2000 | "Authentication Methods for LDAP", RFC 2829, May 2000 | |||
[RFC2830] Hodges, J., Morgan, R., and M. Wahl "Lightweight Directory | [RFC2830] Hodges, J., Morgan, R., and M. Wahl "Lightweight Directory | |||
Access Protocol (v3): Extension for Transport Layer | Access Protocol (v3): Extension for Transport Layer | |||
Security", RFC 2830, May 2000 | Security", RFC 2830, May 2000 | |||
skipping to change at line 2346 | skipping to change at line 2314 | |||
equalityMatch [3] AttributeValueAssertion, | equalityMatch [3] AttributeValueAssertion, | |||
substrings [4] SubstringFilter, | substrings [4] SubstringFilter, | |||
greaterOrEqual [5] AttributeValueAssertion, | greaterOrEqual [5] AttributeValueAssertion, | |||
lessOrEqual [6] AttributeValueAssertion, | lessOrEqual [6] AttributeValueAssertion, | |||
present [7] AttributeDescription, | present [7] AttributeDescription, | |||
approxMatch [8] AttributeValueAssertion, | approxMatch [8] AttributeValueAssertion, | |||
extensibleMatch [9] MatchingRuleAssertion } | extensibleMatch [9] MatchingRuleAssertion } | |||
SubstringFilter ::= SEQUENCE { | SubstringFilter ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
-- at least one must be present | -- at least one must be present, | |||
-- initial and final can occur at most once | ||||
substrings SEQUENCE OF CHOICE { | substrings SEQUENCE OF CHOICE { | |||
initial [0] AssertionValue, | initial [0] AssertionValue, | |||
any [1] AssertionValue, | any [1] AssertionValue, | |||
final [2] AssertionValue } } | final [2] AssertionValue } } | |||
MatchingRuleAssertion ::= SEQUENCE { | MatchingRuleAssertion ::= SEQUENCE { | |||
matchingRule [1] MatchingRuleId OPTIONAL, | matchingRule [1] MatchingRuleId OPTIONAL, | |||
type [2] AttributeDescription OPTIONAL, | type [2] AttributeDescription OPTIONAL, | |||
matchValue [3] AssertionValue, | matchValue [3] AssertionValue, | |||
dnAttributes [4] BOOLEAN DEFAULT FALSE } | dnAttributes [4] BOOLEAN DEFAULT FALSE } | |||
skipping to change at line 2380 | skipping to change at line 2349 | |||
ModifyRequest ::= [APPLICATION 6] SEQUENCE { | ModifyRequest ::= [APPLICATION 6] SEQUENCE { | |||
object LDAPDN, | object LDAPDN, | |||
modification SEQUENCE OF SEQUENCE { | modification SEQUENCE OF SEQUENCE { | |||
operation ENUMERATED { | operation ENUMERATED { | |||
add (0), | add (0), | |||
delete (1), | delete (1), | |||
replace (2) }, | replace (2) }, | |||
modification AttributeTypeAndValues } } | modification AttributeTypeAndValues } } | |||
AttributeTypeAndValues ::= SEQUENCE { | AttributeTypeAndValues ::= SEQUENCE { | |||
type AttributeDescription, | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
type AttributeDescription, | ||||
vals SET OF AttributeValue } | 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, | |||
skipping to change at line 2433 | skipping to change at line 2402 | |||
COMPONENTS OF LDAPResult, | COMPONENTS OF LDAPResult, | |||
responseName [10] LDAPOID OPTIONAL, | responseName [10] LDAPOID OPTIONAL, | |||
response [11] OCTET STRING OPTIONAL } | response [11] OCTET STRING OPTIONAL } | |||
END | END | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Appendix B - Change History | Appendix B - Change History | |||
Changes made to RFC 2251: | B.1 Changes made to RFC 2251: | |||
B.1 Editorial | B.1.1 Editorial | |||
- Bibliography References: Changed all bibliography references to | - Bibliography References: Changed all bibliography references to | |||
use a long name form for readability. | use a long name form for readability. | |||
- Changed occurrences of "unsupportedCriticalExtension" | - Changed occurrences of "unsupportedCriticalExtension" | |||
"unavailableCriticalExtension" | "unavailableCriticalExtension" | |||
- Fixed a small number of misspellings (mostly dropped letters). | - Fixed a small number of misspellings (mostly dropped letters). | |||
B.2 Section 1 | B.1.2 Section 1 | |||
- Removed IESG note. | - Removed IESG note. | |||
B.3 Section 9 | B.1.3 Section 9 | |||
- Added references to RFCs 1823, 2234, 2829 and 2830. | - Added references to RFCs 1823, 2234, 2829 and 2830. | |||
Changes made to draft-ietf-ldapbis-protocol-00.txt: | B.2 Changes made to draft-ietf-ldapbis-protocol-00.txt: | |||
B.4 Section 4.1.6 | B.2.1 Section 4.1.6 | |||
- In the first paragraph, clarified what the contents of an | - In the first paragraph, clarified what the contents of an | |||
AttributeValue are. There was confusion regarding whether or not | AttributeValue are. There was confusion regarding whether or not | |||
an AttributeValue that is BER encoded (due to the "binary" option) | an AttributeValue that is BER encoded (due to the "binary" option) | |||
is to be wrapped in an extra OCTET STRING. | is to be wrapped in an extra OCTET STRING. | |||
- To the first paragraph, added wording that doesn't restrict other | - To the first paragraph, added wording that doesn't restrict other | |||
transfer encoding specifiers from being used. The previous wording | transfer encoding specifiers from being used. The previous wording | |||
only allowed for the string encoding and the ;binary encoding. | only allowed for the string encoding and the ;binary encoding. | |||
- To the first paragraph, added a statement restricting multiple | - To the first paragraph, added a statement restricting multiple | |||
options that specify transfer encoding from being present. This | options that specify transfer encoding from being present. This | |||
was never specified in the previous version and was seen as a | was never specified in the previous version and was seen as a | |||
potential interoperability problem. | potential interoperability problem. | |||
- Added a third paragraph stating that the ;binary option is | - Added a third paragraph stating that the ;binary option is | |||
currently the only option defined that specifies the transfer | currently the only option defined that specifies the transfer | |||
encoding. This is for completeness. | encoding. This is for completeness. | |||
B.5 Section 4.1.7 | B.2.2 Section 4.1.7 | |||
- Generalized the second paragraph to read "If an option specifying | - Generalized the second paragraph to read "If an option specifying | |||
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. | |||
B.6 Sections 4.2, 4.9, 4.10 | B.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 | |||
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 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
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. | |||
B.7 Sections 4.5 and Appendix A | B.2.4 Sections 4.5 and Appendix A | |||
- Changed SubstringFilter.substrings.initial, any, and all from | - Changed SubstringFilter.substrings.initial, any, and all from | |||
LDAPString to AssertionValue. This was causing an incompatibility | LDAPString to AssertionValue. This was causing an incompatibility | |||
with X.500 and confusion among other TS RFCs. | with X.500 and confusion among other TS RFCs. | |||
Changes made to draft-ietf-ldapbis-protocol-01.txt: | B.3 Changes made to draft-ietf-ldapbis-protocol-01.txt: | |||
B.8 Section 3.4 | B.3.1 Section 3.4 | |||
- Reworded text surrounding subschemaSubentry to reflect that it is | - Reworded text surrounding subschemaSubentry to reflect that it is | |||
a single-valued attribute that holds the schema for the root DSE. | a single-valued attribute that holds the schema for the root DSE. | |||
Also noted that if the server masters entries that use differing | Also noted that if the server masters entries that use differing | |||
schema, each entry's subschemaSubentry attribute must be | schema, each entry's subschemaSubentry attribute must be | |||
interrogated. This may change as further fine-tuning is done to | interrogated. This may change as further fine-tuning is done to | |||
the data model. | the data model. | |||
B.9 Section 4.1.12 | B.3.2 Section 4.1.12 | |||
- Specified that the criticality field is only used for requests and | - Specified that the criticality field is only used for requests and | |||
not for unbind or abandon. Noted that it is ignored for all other | not for unbind or abandon. Noted that it is ignored for all other | |||
operations. | operations. | |||
B.10 Section 4.2 | B.3.3 Section 4.2 | |||
- Noted that Server behavior is undefined when the name is a null | - Noted that Server behavior is undefined when the name is a null | |||
value, simple authentication is used, and a password is specified. | value, simple authentication is used, and a password is specified. | |||
B.11 Section 4.2.(various) | B.3.4 Section 4.2.(various) | |||
- Changed "unauthenticated" to "anonymous" and "DN" and "LDAPDN" to | - Changed "unauthenticated" to "anonymous" and "DN" and "LDAPDN" to | |||
"name" | "name" | |||
B.12 Section 4.2.2 | B.3.5 Section 4.2.2 | |||
- Changed "there is no authentication or encryption being performed | - Changed "there is no authentication or encryption being performed | |||
by a lower layer" to "the underlying transport service cannot | by a lower layer" to "the underlying transport service cannot | |||
guarantee confidentiality" | guarantee confidentiality" | |||
B.13 Section 4.5.2 | B.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. | |||
Changes made to draft-ietf-ldapbis-protocol-02.txt: | B.4 Changes made to draft-ietf-ldapbis-protocol-02.txt: | |||
B.14 Section 4 | B.4.1 Section 4 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
- 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 | |||
paragraph. This was added to clarify the original intent. | paragraph. This was added to clarify the original intent. | |||
- Changed "protocol version" to "protocol versions" in the third | - Changed "protocol version" to "protocol versions" in the third | |||
paragraph. This attribute is multi-valued with the intent of | paragraph. This attribute is multi-valued with the intent of | |||
holding all supported versions, not just one. | holding all supported versions, not just one. | |||
B.15 Section 4.1.8 | B.4.2 Section 4.1.8 | |||
- Changed "when transferred in protocol" to "when transferred from | - Changed "when transferred in protocol" to "when transferred from | |||
the server to the client" in the first paragraph. This is to | the server to the client" in the first paragraph. This is to | |||
clarify that this behavior only happens when attributes are being | clarify that this behavior only happens when attributes are being | |||
sent from the server. | sent from the server. | |||
B.16 Section 4.1.10 | B.4.3 Section 4.1.10 | |||
- Changed "servers will return responses containing fields of type | - Changed "servers will return responses containing fields of type | |||
LDAPResult" to "servers will return responses of LDAPResult or | LDAPResult" to "servers will return responses of LDAPResult or | |||
responses containing the components of LDAPResponse". This | responses containing the components of LDAPResponse". This | |||
statement was incorrect and at odds with the ASN.1. The fix here | statement was incorrect and at odds with the ASN.1. The fix here | |||
reflects the original intent. | reflects the original intent. | |||
- Dropped '--new' from result codes ASN.1. This simplification in | - Dropped '--new' from result codes ASN.1. This simplification in | |||
comments just reduces unneeded verbiage. | comments just reduces unneeded verbiage. | |||
B.17 Section 4.1.11 | B.4.4 Section 4.1.11 | |||
- Changed "It contains a reference to another server (or set of | - Changed "It contains a reference to another server (or set of | |||
servers)" to "It contains one or more references to one or more | servers)" to "It contains one or more references to one or more | |||
servers or services" in the first paragraph. This reflects the | servers or services" in the first paragraph. This reflects the | |||
original intent and clarifies that the URL may point to non-LDAP | original intent and clarifies that the URL may point to non-LDAP | |||
services. | services. | |||
B.18 Section 4.1.12 | B.4.5 Section 4.1.12 | |||
- Changed "The server MUST be prepared" to "Implementations MUST be | - Changed "The server MUST be prepared" to "Implementations MUST be | |||
prepared" in the eighth paragraph to reflect that both client and | prepared" in the eighth paragraph to reflect that both client and | |||
server implementations must be able to handle this (as both parse | server implementations must be able to handle this (as both parse | |||
controls). | controls). | |||
B.19 Section 4.4 | B.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. | |||
B.20 Section 4.5.1 | B.4.7 Section 4.5.1 | |||
- 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 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
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). | |||
B.21 Section 4.5.3 | B.4.8 Section 4.5.3 | |||
- Changed "outstanding search operations to different servers," to | - Changed "outstanding search operations to different servers," to | |||
"outstanding search operations" in the fifth paragraph as they may | "outstanding search operations" in the fifth paragraph as they may | |||
be to the same server. This is a point of clarification. | be to the same server. This is a point of clarification. | |||
B.22 Section 4.6 | B.4.9 Section 4.6 | |||
- Changed "clients MUST NOT attempt to delete" to "clients MUST NOT | - Changed "clients MUST NOT attempt to delete" to "clients MUST NOT | |||
attempt to add or delete" in the second to last paragraph. | attempt to add or delete" in the second to last paragraph. | |||
- Change "using the "delete" form" to "using the "add" or "delete" | - Change "using the "delete" form" to "using the "add" or "delete" | |||
form" in the second to last paragraph. | form" in the second to last paragraph. | |||
B.23 Section 4.7 | B.4.10 Section 4.7 | |||
- Changed "Clients MUST NOT supply the createTimestamp or | - Changed "Clients MUST NOT supply the createTimestamp or | |||
creatorsName attributes, since these will be generated | creatorsName attributes, since these will be generated | |||
automatically by the server." to "Clients MUST NOT supply NO-USER- | automatically by the server." to "Clients MUST NOT supply NO-USER- | |||
MODIFICATION attributes such as createTimestamp or creatorsName | MODIFICATION attributes such as createTimestamp or creatorsName | |||
attributes, since these are provided by the server." in the | attributes, since these are provided by the server." in the | |||
definition of the attributes field. This tightens the language to | definition of the attributes field. This tightens the language to | |||
reflect the original intent and to not leave a hole in which one | reflect the original intent and to not leave a hole in which one | |||
could interpret the two attributes mentioned as the only non- | could interpret the two attributes mentioned as the only non- | |||
writable attributes. | writable attributes. | |||
B.24 Section 4.11 | B.4.11 Section 4.11 | |||
- Changed "has been" to "will be" in the fourth paragraph. This | - Changed "has been" to "will be" in the fourth paragraph. This | |||
clarifies that the server will (not has) abandon the operation. | clarifies that the server will (not has) abandon the operation. | |||
B.5 Changes made to draft-ietf-ldapbis-protocol-03.txt: | ||||
B.5.1 Section 3.2.1 | ||||
- Changed "An attribute is a type with one or more associated | ||||
values. The attribute type is identified by a short descriptive | ||||
name and an OID (object identifier). The attribute type governs | ||||
whether there can be more than one value of an attribute of that | ||||
type in an entry, the syntax to which the values must conform, the | ||||
kinds of matching which can be performed on values of that | ||||
attribute, and other functions." to " An attribute is a | ||||
description (a type and zero or more options) with one or more | ||||
associated values. The attribute type governs whether the | ||||
attribute can have multiple values, the syntax and matching rules | ||||
used to construct and compare values of that attribute, and other | ||||
functions. Options indicate modes of transfer and other | ||||
functions.". This points out that an attribute consists of both | ||||
the type and options. | ||||
B.5.2 Section 4 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- Changed "Section 5.1 specifies the encoding rules for the LDAP | ||||
protocol" to "Section 5.1 specifies how the protocol is encoded | ||||
and transferred." | ||||
B.5.3 Section 4.1.2 | ||||
- Added ABNF for the textual representation of LDAPOID. Previously, | ||||
there was no formal BNF for this construct. | ||||
B.5.4 Section 4.1.4 | ||||
- Changed "This identifier may be written as decimal digits with | ||||
components separated by periods, e.g. "2.5.4.10"" to "may be | ||||
written as defined by ldapOID in section 4.1.2" in the second | ||||
paragraph. This was done because we now have a formal BNF | ||||
definition of an oid. | ||||
B.5.5 Section 4.1.5 | ||||
- Changed the BNF for AttributeDescription to ABNF. This was done | ||||
for readability and consistency (no functional changes involved). | ||||
- Changed "Options present in an AttributeDescription are never | ||||
mutually exclusive." to "Options MAY be mutually exclusive. An | ||||
AttributeDescription with mutually exclusive options is treated as | ||||
an undefined attribute type." for clarity. It is generally | ||||
understood that this is the original intent, but the wording could | ||||
be easily misinterpreted. | ||||
- Changed "Any option could be associated with any AttributeType, | ||||
although not all combinations may be supported by a server." to | ||||
"Though any option or set of options could be associated with any | ||||
AttributeType, the server support for certain combinations may be | ||||
restricted by attribute type, syntaxes, or other factors.". This | ||||
is to clarify the meaning of 'combination' (it applies both to | ||||
combination of attribute type and options, and combination of | ||||
options). It also gives examples of *why* they might be | ||||
unsupported. | ||||
B.5.6 Section 4.1.11 | ||||
- Changed the wording regarding 'equally capable' referrals to "If | ||||
multiple URLs are present, the client assumes that any URL may be | ||||
used to progress the operation.". The previous language implied | ||||
that the server MUST enforce rules that it was practically | ||||
incapable of. The new language highlights the original intent-- | ||||
that is, that any of the referrals may be used to progress the | ||||
operation, there is no inherent 'weighting' mechanism. | ||||
B.5.7 Section 4.5.1 and Appendix A | ||||
- Added the comment "-- initial and final can occur at most once", | ||||
to clarify this restriction. | ||||
B.5.8 Section 5.1 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- Changed heading from "Mapping Onto BER-based Transport Services" | ||||
to "Protocol Encoding". | ||||
B.5.9 Section 5.2.1 | ||||
- Changed "The LDAPMessage PDUs" to "The encoded LDAPMessage PDUs" | ||||
to point out that the PDUs are encoded before being streamed to | ||||
TCP. | ||||
Appendix C - Outstanding Work Items | Appendix C - Outstanding Work Items | |||
C.1 Integrate result codes draft. | C.1 Integrate result codes draft. | |||
- The result codes draft should be reconciled with this draft. | - The result codes draft should be reconciled with this draft. | |||
Operation-specific instructions will reside with operations while | Operation-specific instructions will reside with operations while | |||
the error-specific sections will be added as an appendix. | the error-specific sections will be added as an appendix. | |||
C.2 Section 3.1 | C.2 Section 3.1 | |||
skipping to change at line 2654 | skipping to change at line 2711 | |||
C.3 Section 4 | C.3 Section 4 | |||
- Change "MUST ignore elements of SEQUENCE encodings whose tags they | - Change "MUST ignore elements of SEQUENCE encodings whose tags they | |||
do not recognize" to "MUST ignore tagged elements of SEQUENCE | do not recognize" to "MUST ignore tagged elements of SEQUENCE | |||
encodings that they do not recognize" in the first paragraph. | encodings that they do not recognize" in the first paragraph. | |||
- Change "version 2 may not provide this attribute." to "version 2 | - Change "version 2 may not provide this attribute." to "version 2 | |||
MAY NOT provide this attribute, or a root DSE." in the third | MAY NOT provide this attribute, or a root DSE." in the third | |||
paragraph. | paragraph. | |||
Lightweight Directory Access Protocol Version 3 | ||||
C.4 Section 4.1.1 | C.4 Section 4.1.1 | |||
- Change "the client may discard the PDU, or may abruptly close the | - Change "the client may discard the PDU, or may abruptly close the | |||
connection." to "the client MAY discard the PDU, or MAY abruptly | connection." to "the client MAY discard the PDU, or MAY abruptly | |||
close the connection." in the fourth paragraph. | close the connection." in the fourth paragraph. | |||
C.5 Section 4.1.1.1 | C.5 Section 4.1.1.1 | |||
- Add "If an unsolicited notification as described in section 4.4 is | - Add "If an unsolicited notification as described in section 4.4 is | |||
sent from a server, the messageID value MUST be zero." to first | sent from a server, the messageID value MUST be zero." to first | |||
paragraph. | paragraph. | |||
- Change "MUST have a value different" to "MUST have a non-zero | - Change "MUST have a value different" to "MUST have a non-zero | |||
value different" in the second paragraph. | value different" in the second paragraph. | |||
- Remove "or of the abandoned operation until it has received a | - Remove "or of the abandoned operation until it has received a | |||
response from the server for another request invoked subsequent to | response from the server for another request invoked subsequent to | |||
the abandonRequest," from the fourth paragraph as this imposes | the abandonRequest," from the fourth paragraph as this imposes | |||
synchronous behavior on the server. | synchronous behavior on the server. | |||
C.6 Section 4.1.2 | ||||
- Add ABNF for the textual representation of LDAPOID. | ||||
C.7 Section 4.1.4 | C.7 Section 4.1.4 | |||
- Change "This identifier may be written as decimal digits with | ||||
components separated by periods, e.g. "2.5.4.10"" to "may be | ||||
written as defined by ldapOID in section 4.1.2" in the second | ||||
paragraph. | ||||
- Add "Note that due to the restriction above, and due to this | - Add "Note that due to the restriction above, and due to this | |||
allowance, servers MUST ensure that, within a controlling | allowance, servers MUST ensure that, within a controlling | |||
Lightweight Directory Access Protocol Version 3 | ||||
subschema, no two attributes be named the same." to the fifth | subschema, no two attributes be named the same." to the fifth | |||
paragraph. | paragraph. | |||
- Resolve issue on list with the subject "Attribute Type character | - Resolve issue on list with the subject "Attribute Type character | |||
set". | set". | |||
C.8 Section 4.1.5 | C.8 Section 4.1.5 | |||
- Change "A server may treat" to "A server MUST treat" in the second | - Change "A server may treat" to "A server MUST treat" in the second | |||
to last paragraph. | to last paragraph. | |||
- Change "A server MUST treat an AttributeDescription with any | - Change "A server MUST treat an AttributeDescription with any | |||
skipping to change at line 2707 | skipping to change at line 2757 | |||
to "A server MUST treat an AttributeDescription with any options | to "A server MUST treat an AttributeDescription with any options | |||
it does not implement or support as an unrecognized attribute | it does not implement or support as an unrecognized attribute | |||
type." in the second to last paragraph. | type." in the second to last paragraph. | |||
- Clarify the statement "An AttributeDescription with one or more | - Clarify the statement "An AttributeDescription with one or more | |||
options is treated as a subtype of the attribute type without any | options is treated as a subtype of the attribute type without any | |||
options". There is an unresolved thread titles "RFC 2596 | options". There is an unresolved thread titles "RFC 2596 | |||
questions" on the ietf-ldapext list regarding this. | questions" on the ietf-ldapext list regarding this. | |||
C.9 Section 4.1.5.1 | C.9 Section 4.1.5.1 | |||
Lightweight Directory Access Protocol Version 3 | ||||
- Add "Servers SHOULD only return attributes with printable string | - Add "Servers SHOULD only return attributes with printable string | |||
representations as binary when clients request binary transfer." | representations as binary when clients request binary transfer." | |||
to the second paragraph. | to the second paragraph. | |||
- Clarify whether the "binary" attribute type option is to be | - Clarify whether the "binary" attribute type option is to be | |||
treated as a subtype. | treated as a subtype. | |||
C.10 Section 4.1.6 | C.10 Section 4.1.6 | |||
- Change "containing an encoded value of an AttributeValue data | - Change "containing an encoded value of an AttributeValue data | |||
type" to "containing an encoded attribute value data type" | type" to "containing an encoded attribute value data type" | |||
skipping to change at line 2743 | skipping to change at line 2791 | |||
enumeration to represent anything other than a protocol result | enumeration to represent anything other than a protocol result | |||
indication." | indication." | |||
C.13 Section 4.1.11 | C.13 Section 4.1.11 | |||
- Resolve the intent of "All the URLs MUST be equally capable of | - Resolve the intent of "All the URLs MUST be equally capable of | |||
being used to progress the operation" This is being discussed as | being used to progress the operation" This is being discussed as | |||
"Following referrals" on the list. | "Following referrals" on the list. | |||
- Add "after locating the target entry" to the first paragraph. | - Add "after locating the target entry" to the first paragraph. | |||
Lightweight Directory Access Protocol Version 3 | ||||
C.14 Section 4.1.12 | C.14 Section 4.1.12 | |||
- Specify whether or not servers are to advertise the OIDs of known | - Specify whether or not servers are to advertise the OIDs of known | |||
response controls. | response controls. | |||
C.15 Section 4.2 | C.15 Section 4.2 | |||
- Change "LDAPDN" to "identity" in the definition of the name field. | - Change "LDAPDN" to "identity" in the definition of the name field. | |||
- Rework definition of the name field to enumerate empty password and | - Rework definition of the name field to enumerate empty password and | |||
name combinations. <Needs more work following discussion on list> | name combinations. <Needs more work following discussion on list> | |||
C.17 Section 4.2.2 | C.17 Section 4.2.2 | |||
- Add "as the authentication identity" to second paragraph. | - Add "as the authentication identity" to second paragraph. | |||
C.18 Section 4.2.3 | C.18 Section 4.2.3 | |||
- Change "If the bind was successful, the resultCode will be | - Change "If the bind was successful, the resultCode will be | |||
success, otherwise it will be one of" to "If the bind was | success, otherwise it will be one of" to "If the bind was | |||
successful, the resultCode will be success, otherwise it MAY be | successful, the resultCode will be success, otherwise it MAY be | |||
Lightweight Directory Access Protocol Version 3 | ||||
one of" in the third paragraph. <May need further refinement when | one of" in the third paragraph. <May need further refinement when | |||
reconciled with resultCode draft>. | reconciled with resultCode draft>. | |||
- Change "operationsError" to "other" as a result code. | - Change "operationsError" to "other" as a result code. | |||
- Change "If the client bound with the password choice" to "If the | - Change "If the client bound with the password choice" to "If the | |||
client bound with the simple choice" in the last paragraph. | client bound with the simple choice" in the last paragraph. | |||
C.19 Section 4.3 | C.19 Section 4.3 | |||
- Change "a protocol client may assume that the protocol session is | - Change "a protocol client may assume that the protocol session is | |||
terminated and MAY close the connection." to "a protocol client | terminated and MAY close the connection." to "a protocol client | |||
skipping to change at line 2799 | skipping to change at line 2846 | |||
request or other means) that the client can make use of the | request or other means) that the client can make use of the | |||
notification." as a fourth paragraph. | notification." as a fourth paragraph. | |||
C.21 Section 4.5.1 | C.21 Section 4.5.1 | |||
- Make sure the use of "subordinates" in the derefInSearching | - Make sure the use of "subordinates" in the derefInSearching | |||
definition is correct. See "derefInSearching" on list. | definition is correct. See "derefInSearching" on list. | |||
C.22 Section 4.5.2 | C.22 Section 4.5.2 | |||
Lightweight Directory Access Protocol Version 3 | ||||
- Add "associated with a search operation" to the sixth paragraph. | - Add "associated with a search operation" to the sixth paragraph. | |||
- Same problem as in C.5. | - Same problem as in C.5. | |||
C.23 Section 4.5.3 | C.23 Section 4.5.3 | |||
- Add "Similarly, a server MUST NOT return a SearchResultReference | - Add "Similarly, a server MUST NOT return a SearchResultReference | |||
when the scope of the search is baseObject. If a client receives | when the scope of the search is baseObject. If a client receives | |||
such a SearchResultReference it MUST interpret is as a protocol | such a SearchResultReference it MUST interpret is as a protocol | |||
error and MUST NOT follow it." to the first paragraph. | error and MUST NOT follow it." to the first paragraph. | |||
- Add "If the scope part of the LDAP URL is present, the client MUST | - Add "If the scope part of the LDAP URL is present, the client MUST | |||
skipping to change at line 2820 | skipping to change at line 2869 | |||
the scope part is absent the client MUST use subtree scope to | the scope part is absent the client MUST use subtree scope to | |||
complete subtree searches and base scope to complete one level | complete subtree searches and base scope to complete one level | |||
searches." to the third paragraph. | searches." to the third paragraph. | |||
C.24 Section 4.5.3.1 | C.24 Section 4.5.3.1 | |||
- Change examples to use dc naming. | - Change examples to use dc naming. | |||
C.25 Section 4.6 | C.25 Section 4.6 | |||
Lightweight Directory Access Protocol Version 3 | ||||
- Resolve the meaning of "and is ignored if the attribute does not | - Resolve the meaning of "and is ignored if the attribute does not | |||
exist". See "modify: "non-existent attribute"" on the list. | exist". See "modify: "non-existent attribute"" on the list. | |||
C.26 Section 4.7 | C.26 Section 4.7 | |||
- Change examples to use dc naming. | - Change examples to use dc naming. | |||
- Clarify the paragraph that talks about structure rules. See | - Clarify the paragraph that talks about structure rules. See | |||
"discussing structure rules" on the list. | "discussing structure rules" on the list. | |||
C.27 Section 4.10 | C.27 Section 4.10 | |||
skipping to change at line 2854 | skipping to change at line 2901 | |||
that have been chained, may not be abandonable (or immediately | that have been chained, may not be abandonable (or immediately | |||
abandonable)." as the sixth paragraph. | abandonable)." as the sixth paragraph. | |||
C.29 Section 4.12 | C.29 Section 4.12 | |||
- Change "digitally signed operations and results" to "for instance | - Change "digitally signed operations and results" to "for instance | |||
StartTLS [RFC2830]" | StartTLS [RFC2830]" | |||
C.30 Section 5.1 | C.30 Section 5.1 | |||
Lightweight Directory Access Protocol Version 3 | ||||
- Add "control and extended operation values" to last paragraph. See | - Add "control and extended operation values" to last paragraph. See | |||
"LBER (BER Restrictions)" on list. | "LBER (BER Restrictions)" on list. | |||
C.31 Section 5.2.1 | C.31 Section 5.2.1 | |||
- Add "using the BER-based described in section 5.1". | - Add "using the BER-based described in section 5.1". | |||
C.32 Section 6.1 | C.32 Section 6.1 | |||
- Add "that are used by those attributes" to the first paragraph. | - Add "that are used by those attributes" to the first paragraph. | |||
skipping to change at line 2876 | skipping to change at line 2925 | |||
in [RFC2829]." as a second paragraph. | in [RFC2829]." as a second paragraph. | |||
- Add "Servers which provide access to sensitive information MUST, | - Add "Servers which provide access to sensitive information MUST, | |||
and other servers SHOULD support privacy protections such as those | and other servers SHOULD support privacy protections such as those | |||
described in [RFC2829] and [RFC2830]." as a third paragraph. | described in [RFC2829] and [RFC2830]." as a third paragraph. | |||
C.33 Section 7 | C.33 Section 7 | |||
- Add "Servers which support update operations MUST, and other | - Add "Servers which support update operations MUST, and other | |||
servers SHOULD, support strong authentication mechanisms described | servers SHOULD, support strong authentication mechanisms described | |||
in [RFC2829]." as a fourth paragraph. | in [RFC2829]." as a fourth paragraph. | |||
Lightweight Directory Access Protocol Version 3 | ||||
- Add "In order to automatically follow referrals, clients may need | - Add "In order to automatically follow referrals, clients may need | |||
to hold authentication secrets. This poses significant privacy and | to hold authentication secrets. This poses significant privacy and | |||
security concerns and SHOULD be avoided." as a sixth paragraph. | security concerns and SHOULD be avoided." as a sixth paragraph. | |||
- Add "This document provides a mechanism which clients may use to | - Add "This document provides a mechanism which clients may use to | |||
discover operational attributes. Those relying on security by | discover operational attributes. Those relying on security by | |||
obscurity should implement appropriate access controls to | obscurity should implement appropriate access controls to | |||
restricts access to operational attributes per local policy." as | restricts access to operational attributes per local policy." as | |||
an eighth paragraph. | an eighth paragraph. | |||
- Add "This document provides a mechanism which clients may use to | - Add "This document provides a mechanism which clients may use to | |||
discover operational attributes. Those relying on security by | discover operational attributes. Those relying on security by | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |