draft-ietf-ldapbis-protocol-02.txt | draft-ietf-ldapbis-protocol-03.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-02.txt July 2001 | Document: draft-ietf-ldapbis-protocol-03.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 41 | skipping to change at line 41 | |||
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.........................................................3 | |||
3. Models...........................................................4 | 3. Models...........................................................4 | |||
3.1. Protocol Model.................................................4 | 3.1. Protocol Model.................................................4 | |||
3.2. Data Model.....................................................5 | 3.2. Data Model.....................................................5 | |||
3.2.1. Attributes of Entries........................................5 | 3.2.1. Attributes of Entries........................................5 | |||
3.2.2. Subschema Entries and Subentries.............................6 | 3.2.2. Subschema Entries and Subentries.............................7 | |||
3.3. Relationship to X.500..........................................7 | 3.3. Relationship to X.500..........................................7 | |||
3.4. Server-specific Data Requirements..............................7 | 3.4. Server-specific Data Requirements..............................8 | |||
4. Elements of Protocol.............................................8 | 4. Elements of Protocol.............................................8 | |||
4.1. Common Elements................................................9 | 4.1. Common Elements................................................9 | |||
4.1.1. Message Envelope.............................................9 | 4.1.1. Message Envelope.............................................9 | |||
4.1.1.1. Message ID................................................10 | 4.1.1.1. Message ID................................................10 | |||
4.1.2. String Types................................................10 | 4.1.2. String Types................................................10 | |||
4.1.3. Distinguished Name and Relative Distinguished Name..........11 | 4.1.3. Distinguished Name and Relative Distinguished Name..........11 | |||
4.1.4. Attribute Type..............................................11 | 4.1.4. Attribute Type..............................................11 | |||
4.1.5. Attribute Description.......................................12 | 4.1.5. Attribute Description.......................................12 | |||
4.1.5.1. Binary Option.............................................12 | 4.1.5.1. Binary Option.............................................13 | |||
4.1.6. Attribute Value.............................................13 | 4.1.6. Attribute Value.............................................13 | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 1 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
4.1.7. Attribute Value Assertion...................................13 | 4.1.7. Attribute Value Assertion...................................14 | |||
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.............................................15 | |||
4.1.11. Referral...................................................16 | 4.1.11. Referral...................................................17 | |||
4.1.12. Controls...................................................17 | 4.1.12. Controls...................................................18 | |||
4.2. Bind Operation................................................18 | 4.2. Bind Operation................................................19 | |||
4.2.1. Sequencing of the Bind Request..............................19 | 4.2.1. Sequencing of the Bind Request..............................20 | |||
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...............................................21 | |||
4.3. Unbind Operation..............................................22 | 4.3. Unbind Operation..............................................22 | |||
4.4. Unsolicited Notification......................................22 | 4.4. Unsolicited Notification......................................22 | |||
4.4.1. Notice of Disconnection.....................................22 | 4.4.1. Notice of Disconnection.....................................23 | |||
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..............................................29 | 4.6. Modify Operation..............................................30 | |||
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...........................................32 | 4.9. Modify DN Operation...........................................33 | |||
4.10. Compare Operation............................................33 | 4.10. Compare Operation............................................34 | |||
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.........................35 | 5. Protocol Element Encodings and Transfer.........................36 | |||
5.1. Mapping Onto BER-based Transport Services.....................35 | 5.1. Mapping Onto BER-based Transport Services.....................36 | |||
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........................................36 | 6.2. Client Implementations........................................37 | |||
7. Security Considerations.........................................37 | 7. Security Considerations.........................................37 | |||
8. Acknowledgements................................................37 | 8. Acknowledgements................................................37 | |||
9. Bibliography....................................................37 | 9. Bibliography....................................................38 | |||
10. Editor's Address...............................................38 | 10. Editor's Address...............................................39 | |||
Appendix A - Complete ASN.1 Definition.............................40 | Appendix A - Complete ASN.1 Definition.............................40 | |||
Appendix B - Change History........................................45 | Appendix B - Change History........................................45 | |||
B.1 Editorial......................................................45 | B.1 Editorial......................................................45 | |||
B.2 Section 1......................................................45 | B.2 Section 1......................................................45 | |||
B.3 Section 9......................................................45 | B.3 Section 9......................................................45 | |||
B.4 Section 4.1.6..................................................45 | B.4 Section 4.1.6..................................................45 | |||
B.5 Section 4.1.7..................................................45 | B.5 Section 4.1.7..................................................45 | |||
B.6 Sections 4.2, 4.9, 4.10........................................45 | B.6 Sections 4.2, 4.9, 4.10........................................45 | |||
B.7 Sections 4.5 and Appendix A....................................46 | B.7 Sections 4.5 and Appendix A....................................46 | |||
B.7 Section 3.4....................................................46 | B.8 Section 3.4....................................................46 | |||
B.8 Section 4.1.12.................................................46 | B.9 Section 4.1.12.................................................46 | |||
B.9 Section 4.2....................................................46 | B.10 Section 4.2...................................................46 | |||
B.10 Section 4.2.(various).........................................46 | B.11 Section 4.2.(various).........................................46 | |||
B.11 Section 4.2.2.................................................46 | B.12 Section 4.2.2.................................................46 | |||
Appendix C - Outstanding Work Items................................46 | B.13 Section 4.5.2.................................................46 | |||
C.1 Integrate result codes draft...................................46 | B.14 Section 4.....................................................46 | |||
C.2 Section 3.1....................................................47 | B.15 Section 4.1.8.................................................47 | |||
C.3 Section 4......................................................47 | B.17 Section 4.1.11................................................47 | |||
C.4 Section 4.1.1..................................................47 | B.18 Section 4.1.12................................................47 | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 2 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
C.5 Section 4.1.1.1................................................47 | B.19 Section 4.4...................................................47 | |||
C.6 Section 4.1.2..................................................47 | B.20 Section 4.5.1.................................................47 | |||
C.7 Section 4.1.4..................................................47 | B.21 Section 4.5.3.................................................48 | |||
C.8 Section 4.1.5..................................................48 | B.22 Section 4.6...................................................48 | |||
C.9 Section 4.1.5.1................................................48 | B.23 Section 4.7...................................................48 | |||
C.11 Section 4.1.7.................................................48 | B.24 Section 4.11..................................................48 | |||
C.12 Section 4.1.8.................................................48 | Appendix C - Outstanding Work Items................................48 | |||
C.13 Section 4.1.11................................................49 | C.1 Integrate result codes draft...................................48 | |||
C.14 Section 4.1.12................................................49 | C.2 Section 3.1....................................................48 | |||
C.15 Section 4.2...................................................49 | C.3 Section 4......................................................48 | |||
C.17 Section 4.2.2.................................................49 | C.4 Section 4.1.1..................................................49 | |||
C.18 Section 4.2.3.................................................49 | C.5 Section 4.1.1.1................................................49 | |||
C.19 Section 4.3...................................................49 | C.6 Section 4.1.2..................................................49 | |||
C.20 Section 4.4...................................................50 | C.7 Section 4.1.4..................................................49 | |||
C.21 Section 4.5.1.................................................50 | C.8 Section 4.1.5..................................................49 | |||
C.22 Section 4.5.2.................................................50 | C.9 Section 4.1.5.1................................................49 | |||
C.23 Section 4.5.3.................................................50 | C.11 Section 4.1.7.................................................50 | |||
C.24 Section 4.5.3.1...............................................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.25 Section 4.6...................................................51 | |||
C.26 Section 4.7...................................................51 | C.26 Section 4.7...................................................52 | |||
C.27 Section 4.10..................................................51 | C.27 Section 4.10..................................................52 | |||
C.28 Section 4.11..................................................51 | C.28 Section 4.11..................................................52 | |||
C.29 Section 4.12..................................................51 | C.29 Section 4.12..................................................52 | |||
C.30 Section 5.1...................................................51 | C.30 Section 5.1...................................................52 | |||
C.31 Section 5.2.1.................................................51 | C.31 Section 5.2.1.................................................52 | |||
C.32 Section 6.1...................................................51 | C.32 Section 6.1...................................................52 | |||
C.33 Section 7.....................................................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. | |||
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. | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 3 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- SASL mechanisms may be used with LDAP to provide association | - SASL mechanisms may be used with LDAP to provide association | |||
security services. | security services. | |||
- Attribute values and Distinguished Names have been | - Attribute values and Distinguished Names have been | |||
internationalized through the use of the ISO 10646 character set. | internationalized through the use of the ISO 10646 character set. | |||
- The protocol can be extended to support new operations, and | - The protocol can be extended to support new operations, and | |||
controls may be used to extend existing operations. | controls may be used to extend existing operations. | |||
- Schema is published in the directory to be used by clients. | - Schema is published in the directory to be used by clients. | |||
skipping to change at line 218 | skipping to change at line 225 | |||
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. | |||
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. | |||
<Editor's Note: Sections 3.2 through 3.3 have not been updated> | ||||
Sermersheim Internet-Draft - Expires Jan 2002 Page 4 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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, | |||
as used by LDAP. | as used by LDAP. | |||
The LDAP protocol assumes there are one or more servers which jointly | The LDAP protocol assumes there are one or more servers which jointly | |||
provide access to a Directory Information Tree (DIT). The tree is | provide access to a Directory Information Tree (DIT). The tree is | |||
made up of entries. Entries have names: one or more attribute values | made up of entries. Entries have names: one or more attribute values | |||
from the entry form its relative distinguished name (RDN), which MUST | from the entry form its relative distinguished name (RDN), which MUST | |||
be unique among all its siblings. The concatenation of the relative | be unique among all its siblings. The concatenation of the relative | |||
skipping to change at line 274 | skipping to change at line 278 | |||
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 type with | |||
one or more associated values. The attribute type is identified by a | one or more associated values. The attribute type is identified by a | |||
short descriptive name and an OID (object identifier). The attribute | short descriptive name and an OID (object identifier). The attribute | |||
type governs whether there can be more than one value of an 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 | 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 | conform, the kinds of matching which can be performed on values of | |||
that attribute, and other functions. | that attribute, and other functions. | |||
Lightweight Directory Access Protocol Version 3 | ||||
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 | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 5 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
is given in [RFC2252] and [X.501]. Additional schema elements may be | is given in [RFC2252] and [X.501]. Additional schema elements may be | |||
defined in other documents. | defined in other documents. | |||
Each entry MUST have an objectClass attribute. The objectClass | Each entry MUST have an objectClass attribute. The objectClass | |||
attribute specifies the object classes of an entry, which along with | attribute specifies the object classes of an entry, which along with | |||
the system and user schema determine the permitted attributes of an | the system and user schema determine the permitted attributes of an | |||
entry. Values of this attribute may be modified by clients, but the | entry. Values of this attribute may be modified by clients, but the | |||
objectClass attribute cannot be removed. Servers may restrict the | objectClass attribute cannot be removed. Servers may restrict the | |||
modifications of this attribute to prevent the basic structural class | modifications of this attribute to prevent the basic structural class | |||
of the entry from being changed (e.g. one cannot change a person into | of the entry from being changed (e.g. one cannot change a person into | |||
skipping to change at line 331 | skipping to change at line 333 | |||
- 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. | - modifyTimestamp: the time this entry was last modified. | |||
Lightweight Directory Access Protocol Version 3 | ||||
- 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. | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 6 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Servers which follow X.500(93) models SHOULD implement subschema | Servers which follow X.500(93) models SHOULD implement subschema | |||
using the X.500 subschema mechanisms, and so these subschemas are not | using the X.500 subschema mechanisms, and so these subschemas are not | |||
ordinary entries. LDAP clients SHOULD NOT assume that servers | ordinary entries. LDAP clients SHOULD NOT assume that servers | |||
implement any of the other aspects of X.500 subschema. A server which | implement any of the other aspects of X.500 subschema. A server which | |||
masters entries and permits clients to modify these entries MUST | masters entries and permits clients to modify these entries MUST | |||
implement and provide access to these subschema entries, so that its | implement and provide access to these subschema entries, so that its | |||
clients may discover the attributes and object classes which are | clients may discover the attributes and object classes which are | |||
permitted to be present. It is strongly recommended that all other | permitted to be present. It is strongly recommended that all other | |||
servers implement this as well. | servers implement this as well. | |||
skipping to change at line 388 | skipping to change at line 389 | |||
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 | 3.3. Relationship to X.500 | |||
Lightweight Directory Access Protocol Version 3 | ||||
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 | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 7 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
An LDAP server MUST provide information about itself and other | An LDAP server MUST provide information about itself and other | |||
information that is specific to each server. This is represented as a | information that is specific to each server. This is represented as a | |||
group of attributes located in the root DSE (DSA-Specific Entry), | group of attributes located in the root DSE (DSA-Specific Entry), | |||
which is named with the zero-length LDAPDN. These attributes are | which is named with the zero-length LDAPDN. These attributes are | |||
retrievable if a client performs a base object search of the root | retrievable if a client performs a base object search of the root | |||
with filter "(objectClass=*)", however they are subject to access | with filter "(objectClass=*)", however they are subject to access | |||
control restrictions. The root DSE MUST NOT be included if the client | control restrictions. The root DSE MUST NOT be included if the client | |||
performs a subtree search starting from the root. | performs a subtree search starting from the root. | |||
Servers may allow clients to modify these attributes. | Servers may allow clients to modify these attributes. | |||
skipping to change at line 441 | skipping to change at line 441 | |||
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 typically transferred using a subset of ASN.1 | (ASN.1) [X.680], and is transferred using a subset of ASN.1 Basic | |||
Basic Encoding Rules [X.690] In order to support future extensions to | Encoding Rules [X.690] In order to support future extensions to this | |||
this protocol, clients and servers MUST ignore elements of SEQUENCE | protocol, clients and servers MUST ignore elements of SEQUENCE | |||
encodings whose tags they do not recognize. | ||||
Lightweight Directory Access Protocol Version 3 | ||||
encodings whose tags they do not recognize. Section 5.1 specifies the | ||||
encoding rules for the LDAP protocol. | ||||
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 is supported in the | bind, the server MUST assume that version 3 or later is supported in | |||
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 version 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 | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 8 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
which implement version 3 or later versions MUST provide this | which implement version 3 or later versions MUST provide this | |||
attribute. Servers which only implement version 2 may not provide | attribute. Servers which only implement version 2 may not provide | |||
this attribute. | this attribute. | |||
4.1. Common Elements | 4.1. Common Elements | |||
This section describes the LDAPMessage envelope PDU (Protocol Data | This section describes the LDAPMessage envelope PDU (Protocol Data | |||
Unit) format, as well as data type definitions, which are used in the | Unit) format, as well as data type definitions, which are used in the | |||
protocol operations. | protocol operations. | |||
skipping to change at line 502 | skipping to change at line 502 | |||
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) | MessageID ::= INTEGER (0 .. maxInt) | |||
Lightweight Directory Access Protocol Version 3 | ||||
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 | |||
incorrect, then the server MUST return the notice of disconnection | incorrect, then the server MUST return the notice of disconnection | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 9 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
described in section 4.4.1, with resultCode protocolError, and | described in section 4.4.1, with resultCode protocolError, and | |||
immediately close the connection. In other cases that the server | immediately close the connection. In other cases that the server | |||
cannot parse the request received by the client, the server MUST | cannot parse the request received by the client, the server MUST | |||
return an appropriate response to the request, with the resultCode | return an appropriate response to the request, with the resultCode | |||
set to protocolError. | set to protocolError. | |||
If the client receives a PDU from the server, which cannot be parsed, | If the client receives a PDU from the server, which cannot be parsed, | |||
the client may discard the PDU, or may abruptly close the connection. | the client may discard the PDU, or may abruptly close the connection. | |||
The ASN.1 type Controls is defined in section 4.1.12. | The ASN.1 type Controls is defined in section 4.1.12. | |||
skipping to change at line 559 | skipping to change at line 557 | |||
The LDAPString is a notational convenience to indicate that, although | The LDAPString is a notational convenience to indicate that, although | |||
strings of LDAPString type encode as OCTET STRING types, the | strings of LDAPString type encode as OCTET STRING types, the | |||
[ISO10646] character set (a superset of Unicode) is used, encoded | [ISO10646] character set (a superset of Unicode) is used, encoded | |||
following the UTF-8 algorithm [RFC2044]. Note that in the UTF-8 | following the UTF-8 algorithm [RFC2044]. Note that in the UTF-8 | |||
algorithm characters which are the same as ASCII (0x0000 through | algorithm characters which are the same as ASCII (0x0000 through | |||
0x007F) are represented as that same ASCII character in a single | 0x007F) are represented as that same ASCII character in a single | |||
byte. The other byte values are used to form a variable-length | byte. The other byte values are used to form a variable-length | |||
encoding of an arbitrary character. | encoding of an arbitrary character. | |||
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 | |||
For example, | For example, | |||
1.3.6.1.4.1.1466.1.2.3 | 1.3.6.1.4.1.1466.1.2.3 | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 10 | ||||
Lightweight Directory Access Protocol Version 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: | |||
distinguished-name = name | distinguished-name = name | |||
relative-distinguished-name = name-component | relative-distinguished-name = name-component | |||
skipping to change at line 615 | skipping to change at line 612 | |||
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 | |||
attributes SHOULD include at least the attributeTypes value for the | attributes SHOULD include at least the attributeTypes value for the | |||
'objectClass' attribute. Clients MAY retrieve the attributeTypes | 'objectClass' attribute. Clients MAY retrieve the attributeTypes | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 11 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
value from subschema entries in order to obtain the OBJECT IDENTIFIER | value from subschema entries in order to obtain the OBJECT IDENTIFIER | |||
and other information associated with attribute types. | and other information associated with attribute types. | |||
Some attribute type names which are used in this version of LDAP are | Some attribute type names which are used in this version of LDAP are | |||
described in [RFC2252]. Servers may implement additional attribute | described in [RFC2252]. Servers may implement additional attribute | |||
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 | |||
skipping to change at line 673 | skipping to change at line 669 | |||
beginning with "x-" are reserved for private experiments. Any option | beginning with "x-" are reserved for private experiments. Any option | |||
could be associated with any AttributeType, although not all | could be associated with any AttributeType, although not all | |||
combinations may be supported by a server. | combinations may be supported by a server. | |||
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 present in | |||
an AttributeDescription are never mutually exclusive. Implementations | an AttributeDescription are never mutually exclusive. 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 | |||
4.1.5.1. Binary Option | 4.1.5.1. Binary Option | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 12 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
If the "binary" option is present in an AttributeDescription, it | If the "binary" option is present in an AttributeDescription, it | |||
overrides any string-based encoding representation defined for that | overrides any string-based encoding representation defined for that | |||
attribute in [RFC2252]. Instead the attribute is to be transferred as | attribute in [RFC2252]. Instead the attribute is to be transferred as | |||
a binary value encoded using the Basic Encoding Rules [X.690]. The | a binary value encoded using the Basic Encoding Rules [X.690]. The | |||
syntax of the binary value is an ASN.1 data type definition which is | syntax of the binary value is an ASN.1 data type definition which is | |||
referenced by the "SYNTAX" part of the attribute type definition. | referenced by the "SYNTAX" part of the attribute type definition. | |||
The presence or absence of the "binary" option only affects the | The presence or absence of the "binary" option only affects the | |||
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 | |||
skipping to change at line 731 | skipping to change at line 727 | |||
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 | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 13 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
The AttributeValueAssertion type definition is similar to the one in | The AttributeValueAssertion type definition is similar to the one in | |||
the X.500 directory standards. It contains an attribute description | the X.500 directory standards. It contains an attribute description | |||
and a matching rule assertion value suitable for that type. | and a matching rule assertion value suitable for that type. | |||
AttributeValueAssertion ::= SEQUENCE { | AttributeValueAssertion ::= SEQUENCE { | |||
attributeDesc AttributeDescription, | attributeDesc AttributeDescription, | |||
assertionValue AssertionValue } | assertionValue AssertionValue } | |||
AssertionValue ::= OCTET STRING | AssertionValue ::= OCTET STRING | |||
skipping to change at line 774 | skipping to change at line 769 | |||
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 | |||
An attribute consists of a type and one or more values of that type. | An attribute consists of a type and one or more values of that type. | |||
(Though attributes MUST have at least one value when stored, due to | (Though attributes MUST have at least one value when stored, due to | |||
access control restrictions the set may be empty when transferred in | access control restrictions the set may be empty when transferred | |||
protocol. This is described in section 4.5.2, concerning the | from the server to the client. This is described in section 4.5.2, | |||
PartialAttributeList type.) | concerning the PartialAttributeList type.) | |||
Attribute ::= SEQUENCE { | Attribute ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
Each attribute value is distinct in the set (no duplicates). The | 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". | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 14 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
MatchingRuleId ::= LDAPString | MatchingRuleId ::= LDAPString | |||
Servers which support matching rules for use in the extensibleMatch | Servers which support matching rules for use in the extensibleMatch | |||
search filter MUST list the matching rules they implement in | search filter MUST list the matching rules they implement in | |||
subschema entries, using the matchingRules attributes. The server | subschema entries, using the matchingRules attributes. The server | |||
SHOULD also list there, using the matchingRuleUse attribute, the | SHOULD also list there, using the matchingRuleUse attribute, the | |||
attribute types with which each matching rule can be used. More | attribute types with which each matching rule can be used. More | |||
information is given in section 4.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. In response | success or failure indications from servers to clients. To various | |||
to various requests, servers will return responses containing fields | requests, servers will return responses of LDAPResult or responses | |||
of type LDAPResult to indicate the final status of a protocol | containing the components of LDAPResponse to indicate the final | |||
operation request. | status of a protocol operation request. | |||
LDAPResult ::= SEQUENCE { | LDAPResult ::= SEQUENCE { | |||
resultCode ENUMERATED { | resultCode ENUMERATED { | |||
success (0), | success (0), | |||
operationsError (1), | operationsError (1), | |||
protocolError (2), | protocolError (2), | |||
timeLimitExceeded (3), | timeLimitExceeded (3), | |||
sizeLimitExceeded (4), | sizeLimitExceeded (4), | |||
compareFalse (5), | compareFalse (5), | |||
compareTrue (6), | compareTrue (6), | |||
authMethodNotSupported (7), | authMethodNotSupported (7), | |||
strongAuthRequired (8), | strongAuthRequired (8), | |||
-- 9 reserved -- | -- 9 reserved -- | |||
referral (10), -- new | referral (10), | |||
adminLimitExceeded (11), -- new | adminLimitExceeded (11), | |||
unavailableCriticalExtension (12), -- new | unavailableCriticalExtension (12), | |||
confidentialityRequired (13), -- new | confidentialityRequired (13), | |||
saslBindInProgress (14), -- new | 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), | |||
unwillingToPerform (53), | unwillingToPerform (53), | |||
loopDetect (54), | loopDetect (54), | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 15 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
-- 55-63 unused -- | -- 55-63 unused -- | |||
namingViolation (64), | namingViolation (64), | |||
objectClassViolation (65), | objectClassViolation (65), | |||
notAllowedOnNonLeaf (66), | notAllowedOnNonLeaf (66), | |||
notAllowedOnRDN (67), | notAllowedOnRDN (67), | |||
entryAlreadyExists (68), | entryAlreadyExists (68), | |||
objectClassModsProhibited (69), | objectClassModsProhibited (69), | |||
-- 70 reserved for CLDAP -- | -- 70 reserved for CLDAP -- | |||
affectsMultipleDSAs (71), -- new | 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 } | |||
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. | |||
skipping to change at line 902 | skipping to change at line 895 | |||
(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 | |||
referral, and absent with all other result codes. It contains a | referral, and absent with all other result codes. It contains one or | |||
reference to another server (or set of servers) which may be accessed | more references to one or more servers or services that may be | |||
accessed via LDAP or other protocols. Referrals can be returned in | ||||
Sermersheim Internet-Draft - Expires Jan 2002 Page 16 | response to any operation request (except unbind and abandon which do | |||
Lightweight Directory Access Protocol Version 3 | not have responses). At least one URL MUST be present in the | |||
Referral. | ||||
via LDAP or other protocols. Referrals can be returned in response to | ||||
any operation request (except unbind and abandon which do not have | ||||
responses). At least one URL MUST be present in the Referral. | ||||
The referral is not returned for a singleLevel or wholeSubtree search | The referral is not returned for a singleLevel or wholeSubtree search | |||
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 | |||
skipping to change at line 960 | skipping to change at line 953 | |||
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, | |||
criticality BOOLEAN DEFAULT FALSE, | criticality BOOLEAN DEFAULT FALSE, | |||
controlValue OCTET STRING OPTIONAL } | controlValue OCTET STRING OPTIONAL } | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 17 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
The controlType field MUST be a UTF-8 encoded dotted-decimal | The controlType field MUST be a UTF-8 encoded dotted-decimal | |||
representation of an OBJECT IDENTIFIER which uniquely identifies the | representation of an OBJECT IDENTIFIER which uniquely identifies the | |||
control. This prevents conflicts between control names. | control. This prevents conflicts between control names. | |||
The criticality field is either TRUE or FALSE and is only used when a | The criticality field is either TRUE or FALSE and is only used when a | |||
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. | |||
skipping to change at line 1000 | skipping to change at line 992 | |||
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. The server MUST | control, and its format is defined for the control. Implementations | |||
be prepared to handle arbitrary contents of the controlValue octet | MUST be prepared to handle arbitrary contents of the controlValue | |||
string, including zero bytes. It is absent only if there is no value | octet string, including zero bytes. It is absent only if there is no | |||
information which is associated with a control of its type. | value information which is associated with a control of its type. | |||
This document does not 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: | |||
BindRequest ::= [APPLICATION 0] SEQUENCE { | BindRequest ::= [APPLICATION 0] SEQUENCE { | |||
version INTEGER (1 .. 127), | version INTEGER (1 .. 127), | |||
name LDAPDN, | name LDAPDN, | |||
authentication AuthenticationChoice } | authentication AuthenticationChoice } | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 18 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
AuthenticationChoice ::= CHOICE { | AuthenticationChoice ::= CHOICE { | |||
simple [0] OCTET STRING, | simple [0] OCTET STRING, | |||
-- 1 and 2 reserved | -- 1 and 2 reserved | |||
sasl [3] SaslCredentials } | sasl [3] SaslCredentials } | |||
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: | |||
skipping to change at line 1073 | skipping to change at line 1064 | |||
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 | |||
the underlying connection. Clients MUST NOT invoke operations between | the underlying connection. Clients MUST NOT invoke operations between | |||
two Bind requests made as part of a multi-stage bind. | two Bind requests made as part of a multi-stage bind. | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 19 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
A client may abort a SASL bind negotiation by sending a BindRequest | A client may abort a SASL bind negotiation by sending a BindRequest | |||
with a different value in the mechanism field of SaslCredentials, or | with a different value in the mechanism field of SaslCredentials, or | |||
an AuthenticationChoice other than sasl. | an AuthenticationChoice other than sasl. | |||
If the client sends a BindRequest with the sasl mechanism field as an | If the client sends a BindRequest with the sasl mechanism field as an | |||
empty string, the server MUST return a BindResponse with | empty string, the server MUST return a BindResponse with | |||
authMethodNotSupported as the resultCode. This will allow clients to | authMethodNotSupported as the resultCode. This will allow clients to | |||
abort a negotiation if it wishes to try again with the same SASL | abort a negotiation if it wishes to try again with the same SASL | |||
mechanism. | mechanism. | |||
skipping to change at line 1129 | skipping to change at line 1119 | |||
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. | |||
The credentials field contains the arbitrary data used for | The credentials field contains the arbitrary data used for | |||
authentication, inside an OCTET STRING wrapper. Note that unlike some | authentication, inside an OCTET STRING wrapper. Note that unlike some | |||
Internet application protocols where SASL is used, LDAP is not text- | Internet application protocols where SASL is used, LDAP is not text- | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 20 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
based, thus no base64 transformations are performed on the | based, thus no base64 transformations are performed on the | |||
credentials. | credentials. | |||
If any SASL-based integrity or confidentiality services are enabled, | If any SASL-based integrity or confidentiality services are enabled, | |||
they take effect following the transmission by the server and | they take effect following the transmission by the server and | |||
reception by the client of the final BindResponse with resultCode | reception by the client of the final BindResponse with resultCode | |||
success. | success. | |||
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. | |||
skipping to change at line 1188 | skipping to change at line 1177 | |||
- 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 | |||
version, it MUST set the resultCode to protocolError. | version, it MUST set the resultCode to protocolError. | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 21 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
If the client receives a BindResponse response where the resultCode | If the client receives a BindResponse response where the resultCode | |||
was protocolError, it MUST close the connection as the server will be | was protocolError, it MUST close the connection as the server will be | |||
unwilling to accept further operations. (This is for compatibility | unwilling to accept further operations. (This is for compatibility | |||
with earlier versions of LDAP, in which the bind was always the first | with earlier versions of LDAP, in which the bind was always the first | |||
operation, and there was no negotiation.) | operation, and there was no negotiation.) | |||
The serverSaslCreds are used as part of a SASL-defined bind mechanism | The serverSaslCreds are used as part of a SASL-defined bind mechanism | |||
to allow the client to authenticate the server to which it is | to allow the client to authenticate the server to which it is | |||
communicating, or to perform "challenge-response" authentication. If | communicating, or to perform "challenge-response" authentication. If | |||
the client bound with the password choice, or the SASL mechanism does | the client bound with the password choice, or the SASL mechanism does | |||
skipping to change at line 1245 | skipping to change at line 1233 | |||
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. | |||
One unsolicited notification is defined in this document. | Lightweight Directory Access Protocol Version 3 | |||
One unsolicited notification (Notice of Disconnection) is defined in | ||||
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 | |||
distinguishing between an error condition and a transient network | distinguishing between an error condition and a transient network | |||
failure. As with a connection close due to network failure, the | failure. As with a connection close due to network failure, the | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 22 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
client MUST NOT assume that any outstanding requests which modified | client MUST NOT assume that any outstanding requests which modified | |||
the directory have succeeded or failed. | the directory have succeeded or failed. | |||
The responseName is 1.3.6.1.4.1.1466.20036, the response field is | The responseName is 1.3.6.1.4.1.1466.20036, the response field is | |||
absent, and the resultCode is used to indicate the reason for the | absent, and the resultCode is used to indicate the reason for the | |||
disconnection. | disconnection. | |||
The following 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 | |||
skipping to change at line 1301 | skipping to change at line 1288 | |||
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, | |||
attributes AttributeDescriptionList } | attributes AttributeDescriptionList } | |||
Filter ::= CHOICE { | Filter ::= CHOICE { | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 23 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
and [0] SET OF Filter, | and [0] SET OF Filter, | |||
or [1] SET OF Filter, | or [1] SET OF Filter, | |||
not [2] Filter, | not [2] Filter, | |||
equalityMatch [3] AttributeValueAssertion, | equalityMatch [3] AttributeValueAssertion, | |||
substrings [4] SubstringFilter, | substrings [4] SubstringFilter, | |||
greaterOrEqual [5] AttributeValueAssertion, | greaterOrEqual [5] AttributeValueAssertion, | |||
lessOrEqual [6] AttributeValueAssertion, | lessOrEqual [6] AttributeValueAssertion, | |||
present [7] AttributeDescription, | present [7] AttributeDescription, | |||
approxMatch [8] AttributeValueAssertion, | approxMatch [8] AttributeValueAssertion, | |||
extensibleMatch [9] MatchingRuleAssertion } | extensibleMatch [9] MatchingRuleAssertion } | |||
skipping to change at line 1359 | skipping to change at line 1345 | |||
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. | |||
- sizeLimit: A size limit that restricts the maximum number of | - sizeLimit: A size limit that restricts the maximum number of | |||
entries to be returned as a result of the search. A value of 0 in | entries to be returned as a result of the search. A value of 0 in | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 24 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
this field indicates that no client-requested size limit | this field indicates that no client-requested size limit | |||
restrictions are in effect for the search. Servers may enforce a | restrictions are in effect for the search. Servers may enforce a | |||
maximum number of entries to return. | maximum number of entries to return. | |||
- timeLimit: A time limit that restricts the maximum time (in | - timeLimit: A time limit that restricts the maximum time (in | |||
seconds) allowed for a search. A value of 0 in this field | seconds) allowed for a search. A value of 0 in this field | |||
indicates that no client-requested time limit restrictions are in | indicates that no client-requested time limit restrictions are in | |||
effect for the search. | effect for the search. | |||
- typesOnly: An indicator as to whether search results will contain | - typesOnly: An indicator as to whether search results will contain | |||
skipping to change at line 1418 | skipping to change at line 1402 | |||
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 | |||
matchingRule, and the matchingRule determines the syntax for the | matchingRule, and the matchingRule determines the syntax for the | |||
assertion value (the filter item evaluates to TRUE if it matches | assertion value (the filter item evaluates to TRUE if it matches | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 25 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
with at least one attribute in the entry, FALSE if it does not | with at least one attribute in the entry, FALSE if it does not | |||
match any attribute in the entry, and Undefined if the | match any attribute in the entry, and Undefined if the | |||
matchingRule is not recognized or the assertionValue cannot be | matchingRule is not recognized or the assertionValue cannot be | |||
parsed.) If the type field is present and matchingRule is present, | parsed.) If the type field is present and matchingRule is present, | |||
the matchingRule MUST be one permitted for use with that type, | the matchingRule MUST be one permitted for use with that type, | |||
otherwise the filter item is undefined. If the dnAttributes field | otherwise the filter item is undefined. If the dnAttributes field | |||
is set to TRUE, the match is applied against all the attributes in | is set to TRUE, the match is applied against all the 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 | |||
skipping to change at line 1475 | skipping to change at line 1457 | |||
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. | |||
Client implementors should note that even if all user attributes | Client implementors should note that even if all user attributes | |||
are requested, some attributes of the entry may not be included in | are requested, some attributes of the entry may not be included in | |||
search results due to access controls or other restrictions. | search results due to access controls or other restrictions. | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 26 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Furthermore, servers will not return operational attributes, such | Furthermore, servers will not return operational attributes, such | |||
as objectClasses or attributeTypes, unless they are listed by | as objectClasses or attributeTypes, unless they are listed by | |||
name, since there may be extremely large number of values for | name, since there may be extremely large number of values for | |||
certain operational attributes. (A list of operational attributes | certain operational attributes. (A list of operational attributes | |||
for use in LDAP is given in [RFC2252].) | for use in LDAP is given in [RFC2252].) | |||
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 existence 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. | |||
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 | |||
skipping to change at line 1532 | skipping to change at line 1512 | |||
-- 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 | |||
SearchResultReference PDUs may come in any order. Following all the | SearchResultReference PDUs may come in any order. Following all the | |||
SearchResultReference responses and all SearchResultEntry responses | SearchResultReference responses and all SearchResultEntry responses | |||
to be returned by the server, the server will return a response | to be returned by the server, the server will return a response | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 27 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
containing the SearchResultDone, which contains an indication of | containing the SearchResultDone, which contains an indication of | |||
success, or detailing any errors that have occurred. | success, or detailing any errors that have occurred. | |||
Each entry returned in a SearchResultEntry will contain all | Each entry returned in a SearchResultEntry will contain all | |||
attributes, complete with associated values if necessary, as | attributes, complete with associated values if necessary, as | |||
specified in the attributes field of the Search Request. Return of | specified in the attributes field of the Search Request. Return of | |||
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). | |||
skipping to change at line 1590 | skipping to change at line 1568 | |||
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 | |||
operation for each SearchResultReference that is returned. Note that | operation for each SearchResultReference that is returned. Note that | |||
the abandon operation described in section 4.11 applies only to a | the abandon operation described in section 4.11 applies only to a | |||
particular operation sent on a connection between a client and | particular operation sent on a connection between a client and | |||
server, and if the client has multiple outstanding search operations, | ||||
Sermersheim Internet-Draft - Expires Jan 2002 Page 28 | it MUST abandon each operation individually. | |||
Lightweight Directory Access Protocol Version 3 | ||||
server, and if the client has multiple outstanding search operations | ||||
to different servers, it MUST abandon each operation individually. | ||||
4.5.3.1. Example | 4.5.3.1. Example | |||
For example, suppose the contacted server (hosta) holds the entry | For example, suppose the contacted server (hosta) holds the entry | |||
"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: | |||
skipping to change at line 1648 | skipping to change at line 1625 | |||
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 | |||
of an entry be performed on its behalf by a server. The Modify | of an entry be performed on its behalf by a server. The Modify | |||
Request is defined as follows: | Request is defined as follows: | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 29 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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 { | |||
skipping to change at line 1705 | skipping to change at line 1682 | |||
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. | |||
The server will return to the client a single Modify Response | The server will return to the client a single Modify Response | |||
indicating either the successful completion of the DIT modification, | indicating either the successful completion of the DIT modification, | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 30 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
or the reason that the modification failed. Note that due to the | or the reason that the modification failed. Note that due to the | |||
requirement for atomicity in applying the list of modifications in | requirement for atomicity in applying the list of modifications in | |||
the Modify Request, the client may expect that no modifications of | the Modify Request, the client may expect that no modifications of | |||
the DIT have been performed if the Modify Response received indicates | the DIT have been performed if the Modify Response received indicates | |||
any sort of error, and that all requested modifications have been | any sort of error, and that all requested modifications have been | |||
performed if the Modify Response indicates successful completion of | performed if the Modify Response indicates successful completion of | |||
the Modify Operation. If the 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. | |||
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 delete individual values of that | type, clients MUST NOT attempt to add or delete individual values of | |||
attribute from an entry using the "delete" form of a modification, | that attribute from an entry using the "add" or "delete" form of a | |||
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 | |||
operations on the entry MUST be identical. | operations on the entry MUST be identical. | |||
4.7. Add Operation | 4.7. Add Operation | |||
skipping to change at line 1764 | skipping to change at line 1740 | |||
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 the createTimestamp or | object classes. Clients MUST NOT supply NO-USER-MODIFICATION | |||
creatorsName attributes, since these will be generated | attributes such as the createTimestamp or creatorsName attributes, | |||
automatically by the server. | since these will be generated automatically by the server. | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 31 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
skipping to change at line 1821 | skipping to change at line 1796 | |||
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: | |||
ModifyDNRequest ::= [APPLICATION 12] SEQUENCE { | ModifyDNRequest ::= [APPLICATION 12] SEQUENCE { | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 32 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
entry LDAPDN, | entry LDAPDN, | |||
newrdn RelativeLDAPDN, | newrdn RelativeLDAPDN, | |||
deleteoldrdn BOOLEAN, | deleteoldrdn BOOLEAN, | |||
newSuperior [0] LDAPDN OPTIONAL } | newSuperior [0] LDAPDN OPTIONAL } | |||
Parameters of the Modify DN Request are: | Parameters of the Modify DN Request are: | |||
- entry: the Distinguished Name of the entry to be changed. This | - entry: the Distinguished Name of the entry to be changed. This | |||
entry may or may not have subordinate entries. Note that the | entry may or may not have subordinate entries. Note that the | |||
server will not dereference any aliases in locating the entry to | server will not dereference any aliases in locating the entry to | |||
skipping to change at line 1878 | skipping to change at line 1851 | |||
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 | |||
arbitrary movements of entries and subtrees between servers. | arbitrary movements of entries and subtrees between servers. | |||
4.10. Compare Operation | 4.10. Compare Operation | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 33 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
The Compare Operation allows a client to compare an assertion | The Compare Operation allows a client to compare an assertion | |||
provided with an entry in the directory. The Compare Request is | provided with an entry in the directory. The Compare Request is | |||
defined as follows: | defined as follows: | |||
CompareRequest ::= [APPLICATION 14] SEQUENCE { | CompareRequest ::= [APPLICATION 14] SEQUENCE { | |||
entry LDAPDN, | entry LDAPDN, | |||
ava AttributeValueAssertion } | ava AttributeValueAssertion } | |||
Parameters of the Compare Request are: | Parameters of the Compare Request are: | |||
skipping to change at line 1935 | skipping to change at line 1908 | |||
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 | |||
operation identified by the Message ID in the Abandon Request has | operation identified by the Message ID in the Abandon Request will be | |||
been abandoned. In the event that a server receives an Abandon | abandoned. In the event that a server receives an Abandon Request on | |||
Request on a Search Operation in the midst of transmitting responses | a Search Operation in the midst of transmitting responses to the | |||
search, that server MUST cease transmitting entry responses to the | ||||
Sermersheim Internet-Draft - Expires Jan 2002 Page 34 | abandoned request immediately, and MUST NOT send the | |||
Lightweight Directory Access Protocol Version 3 | ||||
to the search, that server MUST cease transmitting entry responses to | ||||
the abandoned request immediately, and MUST NOT send the | ||||
SearchResponseDone. Of course, the server MUST ensure that only | SearchResponseDone. Of course, the server MUST ensure that only | |||
properly encoded LDAPMessage PDUs are transmitted. | properly encoded LDAPMessage PDUs are transmitted. | |||
Clients MUST NOT send abandon requests for the same operation | Clients MUST NOT send abandon requests for the same operation | |||
multiple times, and MUST also be prepared to receive results from | multiple times, and MUST also be prepared to receive results from | |||
operations it has abandoned (since these may have been in transit | operations it has abandoned (since these may have been in transit | |||
when the abandon was requested). | 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 | |||
skipping to change at line 1993 | skipping to change at line 1964 | |||
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. Mapping Onto BER-based Transport Services | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 35 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
skipping to change at line 2050 | skipping to change at line 2021 | |||
provide a protocol listener on the assigned port, 389. Servers may | provide a protocol listener on the assigned port, 389. Servers may | |||
instead provide a listener on a different port number. Clients MUST | instead provide a listener on a different port number. Clients MUST | |||
support contacting servers on any valid TCP port. | support contacting servers on any valid TCP port. | |||
6. Implementation Guidelines | 6. Implementation Guidelines | |||
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 | |||
referral handling occurs for an operation, and these kinds of clients | referral handling occurs for an operation, and these kinds of clients | |||
MUST be able to handle a DIT with at least ten layers of naming | MUST be able to handle a DIT with at least ten layers of naming | |||
contexts between the root and a leaf entry. | contexts between the root and a leaf entry. | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 36 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
In the absence of prior agreements with servers, clients SHOULD NOT | In the absence of prior agreements with servers, clients SHOULD NOT | |||
assume that servers support any particular schemas beyond those | assume that servers support any particular schemas beyond those | |||
referenced in section 6.1. Different schemas can have different | referenced in section 6.1. Different schemas can have different | |||
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 | |||
skipping to change at line 2107 | skipping to change at line 2077 | |||
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, | |||
Models and Service", 1993. | Models and Service", 1993. | |||
[X.501] ITU-T Rec. X.501, "The Directory: Models", 1993. | [X.501] ITU-T Rec. X.501, "The Directory: Models", 1993. | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 37 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
[X.511] ITU-T Rec. X.511, "The Directory: Abstract Service | [X.511] ITU-T Rec. X.511, "The Directory: Abstract Service | |||
Definition", 1993. | Definition", 1993. | |||
[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 | |||
skipping to change at line 2162 | skipping to change at line 2132 | |||
"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 | |||
10. Editor's Address | 10. Editor's Address | |||
Jim Sermersheim | Jim Sermersheim | |||
Novell, Inc. | Novell, Inc. | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 38 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
1800 South Novell Place | 1800 South Novell Place | |||
Provo, Utah 84606, USA | Provo, Utah 84606, USA | |||
jimse@novell.com | jimse@novell.com | |||
+1 801 861-3088 | +1 801 861-3088 | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 39 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Appendix A - Complete ASN.1 Definition | Appendix A - Complete ASN.1 Definition | |||
Lightweight-Directory-Access-Protocol-V3 DEFINITIONS | Lightweight-Directory-Access-Protocol-V3 DEFINITIONS | |||
IMPLICIT TAGS ::= | IMPLICIT TAGS ::= | |||
BEGIN | BEGIN | |||
LDAPMessage ::= SEQUENCE { | LDAPMessage ::= SEQUENCE { | |||
skipping to change at line 2244 | skipping to change at line 2211 | |||
AttributeDescription ::= LDAPString | AttributeDescription ::= LDAPString | |||
AttributeDescriptionList ::= SEQUENCE OF | AttributeDescriptionList ::= SEQUENCE OF | |||
AttributeDescription | AttributeDescription | |||
AttributeValue ::= OCTET STRING | AttributeValue ::= OCTET STRING | |||
AttributeValueAssertion ::= SEQUENCE { | AttributeValueAssertion ::= SEQUENCE { | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 40 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
attributeDesc AttributeDescription, | attributeDesc AttributeDescription, | |||
assertionValue AssertionValue } | assertionValue AssertionValue } | |||
AssertionValue ::= OCTET STRING | AssertionValue ::= OCTET STRING | |||
Attribute ::= SEQUENCE { | Attribute ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
skipping to change at line 2302 | skipping to change at line 2268 | |||
unavailable (52), | unavailable (52), | |||
unwillingToPerform (53), | unwillingToPerform (53), | |||
loopDetect (54), | loopDetect (54), | |||
-- 55-63 unused -- | -- 55-63 unused -- | |||
namingViolation (64), | namingViolation (64), | |||
objectClassViolation (65), | objectClassViolation (65), | |||
notAllowedOnNonLeaf (66), | notAllowedOnNonLeaf (66), | |||
notAllowedOnRDN (67), | notAllowedOnRDN (67), | |||
entryAlreadyExists (68), | entryAlreadyExists (68), | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 41 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
objectClassModsProhibited (69), | objectClassModsProhibited (69), | |||
-- 70 reserved for CLDAP -- | -- 70 reserved for CLDAP -- | |||
affectsMultipleDSAs (71), -- new | affectsMultipleDSAs (71), -- new | |||
-- 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, | |||
skipping to change at line 2360 | skipping to change at line 2325 | |||
baseObject (0), | baseObject (0), | |||
singleLevel (1), | singleLevel (1), | |||
wholeSubtree (2) }, | wholeSubtree (2) }, | |||
derefAliases ENUMERATED { | derefAliases ENUMERATED { | |||
neverDerefAliases (0), | neverDerefAliases (0), | |||
derefInSearching (1), | derefInSearching (1), | |||
derefFindingBaseObj (2), | derefFindingBaseObj (2), | |||
derefAlways (3) }, | derefAlways (3) }, | |||
sizeLimit INTEGER (0 .. maxInt), | sizeLimit INTEGER (0 .. maxInt), | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 42 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
timeLimit INTEGER (0 .. maxInt), | timeLimit INTEGER (0 .. maxInt), | |||
typesOnly BOOLEAN, | typesOnly BOOLEAN, | |||
filter Filter, | filter Filter, | |||
attributes AttributeDescriptionList } | attributes AttributeDescriptionList } | |||
Filter ::= CHOICE { | Filter ::= CHOICE { | |||
and [0] SET OF Filter, | and [0] SET OF Filter, | |||
or [1] SET OF Filter, | or [1] SET OF Filter, | |||
skipping to change at line 2418 | skipping to change at line 2382 | |||
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, | type AttributeDescription, | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 43 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
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 } | |||
skipping to change at line 2466 | skipping to change at line 2429 | |||
requestName [0] LDAPOID, | requestName [0] LDAPOID, | |||
requestValue [1] OCTET STRING OPTIONAL } | requestValue [1] OCTET STRING OPTIONAL } | |||
ExtendedResponse ::= [APPLICATION 24] SEQUENCE { | ExtendedResponse ::= [APPLICATION 24] SEQUENCE { | |||
COMPONENTS OF LDAPResult, | COMPONENTS OF LDAPResult, | |||
responseName [10] LDAPOID OPTIONAL, | responseName [10] LDAPOID OPTIONAL, | |||
response [11] OCTET STRING OPTIONAL } | response [11] OCTET STRING OPTIONAL } | |||
END | END | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 44 | ||||
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: | Changes made to RFC 2251: | |||
B.1 Editorial | B.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. | |||
skipping to change at line 2523 | skipping to change at line 2485 | |||
Previously, only the ;binary option was mentioned. | Previously, only the ;binary option was mentioned. | |||
B.6 Sections 4.2, 4.9, 4.10 | B.6 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 | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 45 | ||||
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.7 Sections 4.5 and Appendix A | |||
- Changed SubstringFilter.substrings.initial, any, and all from | - Changed SubstringFilter.substrings.initial, any, and all from | |||
skipping to change at line 2575 | skipping to change at line 2536 | |||
- 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.13 Section 4.5.2 | |||
- Removed all mention of ExtendedResponse due to lack of | - Removed all mention of ExtendedResponse due to lack of | |||
implementation. | implementation. | |||
Appendix C - Outstanding Work Items | Changes made to draft-ietf-ldapbis-protocol-02.txt: | |||
C.1 Integrate result codes draft. | B.14 Section 4 | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 46 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
- Removed "typically" from "and is typically transferred" in the | ||||
first paragraph. We know of no (and can conceive of no) case where | ||||
this isn't true. | ||||
- Added "Section 5.1 specifies how the LDAP protocol is encoded." To | ||||
the first paragraph. Added this cross reference for readability. | ||||
- Changed "version 3 " to "version 3 or later" in the second | ||||
paragraph. This was added to clarify the original intent. | ||||
- Changed "protocol version" to "protocol versions" in the third | ||||
paragraph. This attribute is multi-valued with the intent of | ||||
holding all supported versions, not just one. | ||||
B.15 Section 4.1.8 | ||||
- Changed "when transferred in protocol" to "when transferred from | ||||
the server to the client" in the first paragraph. This is to | ||||
clarify that this behavior only happens when attributes are being | ||||
sent from the server. | ||||
B.16 Section 4.1.10 | ||||
- Changed "servers will return responses containing fields of type | ||||
LDAPResult" to "servers will return responses of LDAPResult or | ||||
responses containing the components of LDAPResponse". This | ||||
statement was incorrect and at odds with the ASN.1. The fix here | ||||
reflects the original intent. | ||||
- Dropped '--new' from result codes ASN.1. This simplification in | ||||
comments just reduces unneeded verbiage. | ||||
B.17 Section 4.1.11 | ||||
- Changed "It contains a reference to another server (or set of | ||||
servers)" to "It contains one or more references to one or more | ||||
servers or services" in the first paragraph. This reflects the | ||||
original intent and clarifies that the URL may point to non-LDAP | ||||
services. | ||||
B.18 Section 4.1.12 | ||||
- Changed "The server MUST be prepared" to "Implementations MUST be | ||||
prepared" in the eighth paragraph to reflect that both client and | ||||
server implementations must be able to handle this (as both parse | ||||
controls). | ||||
B.19 Section 4.4 | ||||
- Changed "One unsolicited notification is defined" to "One | ||||
unsolicited notification (Notice of Disconnection) is defined" in | ||||
the third paragraph. For clarity and readability. | ||||
B.20 Section 4.5.1 | ||||
- Changed "checking for the existence of the objectClass attribute" | ||||
to "checking for the presence of the objectClass attribute" in the | ||||
last paragraph. This was done as a measure of consistency (we use | ||||
Lightweight Directory Access Protocol Version 3 | ||||
the terms present and presence rather than exists and existence in | ||||
search filters). | ||||
B.21 Section 4.5.3 | ||||
- Changed "outstanding search operations to different servers," to | ||||
"outstanding search operations" in the fifth paragraph as they may | ||||
be to the same server. This is a point of clarification. | ||||
B.22 Section 4.6 | ||||
- Changed "clients MUST NOT attempt to delete" to "clients MUST NOT | ||||
attempt to add or delete" in the second to last paragraph. | ||||
- Change "using the "delete" form" to "using the "add" or "delete" | ||||
form" in the second to last paragraph. | ||||
B.23 Section 4.7 | ||||
- Changed "Clients MUST NOT supply the createTimestamp or | ||||
creatorsName attributes, since these will be generated | ||||
automatically by the server." to "Clients MUST NOT supply NO-USER- | ||||
MODIFICATION attributes such as createTimestamp or creatorsName | ||||
attributes, since these are provided by the server." in the | ||||
definition of the attributes field. This tightens the language to | ||||
reflect the original intent and to not leave a hole in which one | ||||
could interpret the two attributes mentioned as the only non- | ||||
writable attributes. | ||||
B.24 Section 4.11 | ||||
- Changed "has been" to "will be" in the fourth paragraph. This | ||||
clarifies that the server will (not has) abandon the operation. | ||||
Appendix C - Outstanding Work Items | ||||
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 | |||
- Add "This also increases the complexity of clients in this | - Add "This also increases the complexity of clients in this | |||
version." to fourth paragraph. | version." to fourth paragraph. | |||
C.3 Section 4 | C.3 Section 4 | |||
- Remove "typically" from "and is typically transferred" in the | ||||
first paragraph. | ||||
- 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. | |||
- Add "See Section 5.1 for information on mapping the LDAP protocol | ||||
to BER." to the first paragraph. | ||||
- Change "version 3 " to "version 3 or later" in the second | ||||
paragraph. | ||||
- Change "protocol version" to "protocol versions" in the third | ||||
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 | |||
skipping to change at line 2636 | skipping to change at line 2684 | |||
C.6 Section 4.1.2 | C.6 Section 4.1.2 | |||
- Add ABNF for the textual representation of LDAPOID. | - 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 | - Change "This identifier may be written as decimal digits with | |||
components separated by periods, e.g. "2.5.4.10"" to "may be | 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 | written as defined by ldapOID in section 4.1.2" in the second | |||
paragraph. | paragraph. | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 47 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- 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 | |||
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 | |||
skipping to change at line 2663 | skipping to change at line 2707 | |||
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 2690 | skipping to change at line 2736 | |||
value syntax unless otherwise noted (an example being | value syntax unless otherwise noted (an example being | |||
objectIdentifierFirstComponentMatch)." in the third paragraph. | objectIdentifierFirstComponentMatch)." in the third paragraph. | |||
- Find out what the last sentence in third paragraph means (Clients | - Find out what the last sentence in third paragraph means (Clients | |||
may use attributes...) | may use attributes...) | |||
- Add a fourth paragraph: "Servers SHOULD NOT generate codes 81-90 | - Add a fourth paragraph: "Servers SHOULD NOT generate codes 81-90 | |||
as these are reserved for use by historical APIs [RFC 1823]. | as these are reserved for use by historical APIs [RFC 1823]. | |||
Later API specifications SHOULD avoid using the resultCode | Later API specifications SHOULD avoid using the resultCode | |||
enumeration to represent anything other than a protocol result | enumeration to represent anything other than a protocol result | |||
indication." | indication." | |||
C.12 Section 4.1.8 | ||||
- Change "when transferred in protocol" to "when transferred from | ||||
the server to the client" in the first paragraph. | ||||
Sermersheim Internet-Draft - Expires Jan 2002 Page 48 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
C.12.1 Section 4.1.10 | ||||
- Change "servers will return responses containing fields of type | ||||
LDAPResult" to "servers will return responses of LDAPResult or | ||||
responses containing the components of LDAPResponse" | ||||
- Drop '--new' from result codes. | ||||
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. | |||
- Change "The referral error" to "The referral result code" in the | ||||
first paragraph. | ||||
- Change "It contains a reference to another server (or set of | ||||
servers)" to "It contains one or more references to one or more | ||||
servers or services" in the first paragraph. | ||||
- Add "after locating the target entry" to the first paragraph. | - Add "after locating the target entry" to the first paragraph. | |||
C.14 Section 4.1.12 | C.14 Section 4.1.12 | |||
- Change "The server MUST be prepared" to "The client and server | ||||
MUST be prepared" in the eighth paragraph | ||||
- 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 | |||
MUST assume that the protocol session is terminated and MAY close | MUST assume that the protocol session is terminated and MAY close | |||
the connection." in the second paragraph. | the connection." in the second paragraph. | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 49 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- Change "a protocol server may assume" to "a protocol server MUST | - Change "a protocol server may assume" to "a protocol server MUST | |||
assume" in the second paragraph. | assume" in the second paragraph. | |||
- Change "and may close the connection" to "and MUST close the | - Change "and may close the connection" to "and MUST close the | |||
connection" in the second paragraph. | connection" in the second paragraph. | |||
C.20 Section 4.4 | C.20 Section 4.4 | |||
- Change "One unsolicited notification is defined" to "One | ||||
unsolicited notification (Notice of Disconnection) is defined" in | ||||
the third paragraph. | ||||
- Add "other than Notice of Disconnection" in the third paragraph. | ||||
- Add "Servers SHOULD NOT assume LDAPv3 clients understand or | - Add "Servers SHOULD NOT assume LDAPv3 clients understand or | |||
recognize unsolicited notifications or unsolicited controls other | recognize unsolicited notifications or unsolicited controls other | |||
than Notice of Disconnection defined below. Servers SHOULD avoid | than Notice of Disconnection defined below. Servers SHOULD avoid | |||
sending unsolicited notifications unless they know (by related | sending unsolicited notifications unless they know (by related | |||
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. | |||
- Change "checking for the existence of the objectClass attribute" | ||||
to "checking for the presence of the objectClass attribute" in the | ||||
last paragraph. | ||||
C.22 Section 4.5.2 | C.22 Section 4.5.2 | |||
- Change "Following all the SearchResultReference responses and all | ||||
SearchResultEntry responses to be returned by the server" to | ||||
"Following all the SearchResultReference responses, | ||||
SearchResultEntry responses, and ExtendedResponses to be returned | ||||
by the server" in the third paragraph. | ||||
- 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 | |||
use the new scope in its next request to progress the search. If | use the new scope in its next request to progress the search. If | |||
the scope part is absent the client MUST use subtree scope to | the scope part is absent the client MUST use subtree scope to | |||
complete subtree searches and base scope to complete one level | complete subtree searches and base scope to complete one level | |||
searches." to the third paragraph. | searches." to the third paragraph. | |||
- Remove "different" from "outstanding search operations to | ||||
different servers," in the fifth paragraph as they may be to the | ||||
same server. | ||||
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. | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 50 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
- Change "clients MUST NOT attempt to delete" to "clients MUST NOT | ||||
attempt to add or delete" in the second to last paragraph. | ||||
- Change "using the "delete" form" to "using the "add" or "delete" | ||||
form" in the second to last paragraph. | ||||
C.26 Section 4.7 | C.26 Section 4.7 | |||
- Change "Clients MUST NOT supply the createTimestamp or | ||||
creatorsName attributes, since these will be generated | ||||
automatically by the server." to "Clients MUST NOT supply NO-USER- | ||||
MODIFICATION attributes such as createTimestamp or creatorsName | ||||
attributes, since these are provided by the server." in the | ||||
definition of the attributes field. | ||||
- 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 | |||
- Specify what happens when the attr is missing vs. attr isn't in | - Specify what happens when the attr is missing vs. attr isn't in | |||
schema. Also what happens if there's no equality matching rule. | schema. Also what happens if there's no equality matching rule. | |||
C.28 Section 4.11 | C.28 Section 4.11 | |||
- Change "has been" to "will be" in the fourth paragraph. | ||||
- Change "(since these may have been in transit when the abandon was | - Change "(since these may have been in transit when the abandon was | |||
requested)." to "(since these may either have been in transit when | requested)." to "(since these may either have been in transit when | |||
the abandon was requested, or are not able to be abandoned)." in | the abandon was requested, or are not able to be abandoned)." in | |||
the fifth paragraph. | the fifth paragraph. | |||
- Add "Abandon and Unbind operations are not able to be abandoned. | - Add "Abandon and Unbind operations are not able to be abandoned. | |||
Other operations, in particular update operations, or operations | Other operations, in particular update operations, or operations | |||
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 | |||
skipping to change at line 2867 | skipping to change at line 2863 | |||
- 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 | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 51 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- Add "that are used by those attributes" to the first paragraph. | - Add "that are used by those attributes" to the first paragraph. | |||
- Add "Servers which support update operations MUST, and other | - Add "Servers which support update operations MUST, and other | |||
servers SHOULD, support strong authentication mechanisms described | servers SHOULD, support strong authentication mechanisms described | |||
in [RFC2829]." as a second paragraph. | in [RFC2829]." as a second paragraph. | |||
- 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 | |||
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. | |||
Sermersheim Internet-Draft - Expires Jan 2002 Page 52 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Full Copyright Statement | Full Copyright Statement | |||
Copyright (C) The Internet Society (2000). All Rights Reserved. | Copyright (C) The Internet Society (2001). All Rights Reserved. | |||
This document and translations of it may be copied and furnished to | This document and translations of it may be copied and furnished to | |||
others, and derivative works that comment on or otherwise explain it | others, and derivative works that comment on or otherwise explain it | |||
or assist in its implementation may be prepared, copied, published | or assist in its implementation may be prepared, copied, published | |||
and distributed, in whole or in part, without restriction of any | and distributed, in whole or in part, without restriction of any | |||
kind, provided that the above copyright notice and this paragraph are | kind, provided that the above copyright notice and this paragraph are | |||
included on all such copies and derivative works. However, this | included on all such copies and derivative works. However, this | |||
document itself may not be modified in any way, such as by removing | document itself may not be modified in any way, such as by removing | |||
the copyright notice or references to the Internet Society or other | the copyright notice or references to the Internet Society or other | |||
Internet organizations, except as needed for the purpose of | Internet organizations, except as needed for the purpose of | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |