draft-ietf-ldapbis-protocol-01.txt | draft-ietf-ldapbis-protocol-02.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-01.txt February 2001 | Document: draft-ietf-ldapbis-protocol-02.txt July 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 39 | skipping to change at line 39 | |||
document will take place on the IETF LDAP Revision Working Group | document will take place on the IETF LDAP Revision Working Group | |||
(LDAPbis) mailing list <ietf-ldapbis@openldap.org>. Please send | (LDAPbis) mailing list <ietf-ldapbis@openldap.org>. Please send | |||
editorial comments directly to the editor <jimse@novell.com>. | editorial comments directly to the editor <jimse@novell.com>. | |||
Table of Contents | Table of Contents | |||
1. Status of this Memo..............................................1 | 1. Status of this Memo..............................................1 | |||
2. Abstract.........................................................3 | 2. Abstract.........................................................3 | |||
3. Models...........................................................4 | 3. Models...........................................................4 | |||
3.1. Protocol Model.................................................4 | 3.1. Protocol Model.................................................4 | |||
3.2. Data Model.....................................................4 | 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.............................6 | |||
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..............................7 | |||
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..........10 | 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.............................................12 | |||
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...................................13 | |||
4.1.8. Attribute...................................................14 | 4.1.8. Attribute...................................................14 | |||
4.1.9. Matching Rule Identifier....................................14 | 4.1.9. Matching Rule Identifier....................................14 | |||
4.1.10. Result Message.............................................15 | 4.1.10. Result Message.............................................15 | |||
4.1.11. Referral...................................................16 | 4.1.11. Referral...................................................16 | |||
4.1.12. Controls...................................................17 | 4.1.12. Controls...................................................17 | |||
4.2. Bind Operation................................................18 | 4.2. Bind Operation................................................18 | |||
4.2.1. Sequencing of the Bind Request..............................19 | 4.2.1. Sequencing of the Bind Request..............................19 | |||
skipping to change at line 93 | skipping to change at line 95 | |||
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........................................36 | |||
7. Security Considerations.........................................37 | 7. Security Considerations.........................................37 | |||
8. Acknowledgements................................................37 | 8. Acknowledgements................................................37 | |||
9. Bibliography....................................................37 | 9. Bibliography....................................................37 | |||
10. Editor's Address...............................................38 | 10. Editor's Address...............................................38 | |||
Appendix A - Complete ASN.1 Definition.............................40 | Appendix A - Complete ASN.1 Definition.............................40 | |||
Appendix B - Change History........................................45 | Appendix B - Change History........................................45 | |||
Changes made to RFC 2251:..........................................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 4.1.12.................................................46 | ||||
B.9 Section 4.2....................................................46 | ||||
B.10 Section 4.2.(various).........................................46 | ||||
B.11 Section 4.2.2.................................................46 | ||||
Appendix C - Outstanding Work Items................................46 | Appendix C - Outstanding Work Items................................46 | |||
C.1 Integrate result codes draft...................................46 | C.1 Integrate result codes draft...................................46 | |||
C.2 Section 3.1....................................................46 | C.2 Section 3.1....................................................47 | |||
C.3 Section 4......................................................46 | C.3 Section 4......................................................47 | |||
C.4 Section 4.1.1..................................................46 | C.4 Section 4.1.1..................................................47 | |||
C.5 Section 4.1.1.1................................................46 | ||||
C.6 Section 4.1.2..................................................47 | Sermersheim Internet-Draft - Expires Jan 2002 Page 2 | |||
C.7 Section 4.1.4..................................................47 | ||||
C.8 Section 4.1.5..................................................47 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
C.9 Section 4.1.5.1................................................47 | C.5 Section 4.1.1.1................................................47 | |||
C.11 Section 4.1.7.................................................47 | C.6 Section 4.1.2..................................................47 | |||
C.7 Section 4.1.4..................................................47 | ||||
C.8 Section 4.1.5..................................................48 | ||||
C.9 Section 4.1.5.1................................................48 | ||||
C.11 Section 4.1.7.................................................48 | ||||
C.12 Section 4.1.8.................................................48 | C.12 Section 4.1.8.................................................48 | |||
C.13 Section 4.1.11................................................48 | C.13 Section 4.1.11................................................49 | |||
C.14 Section 4.1.12................................................48 | C.14 Section 4.1.12................................................49 | |||
C.15 Section 4.2...................................................48 | C.15 Section 4.2...................................................49 | |||
C.16 Section 4.2.1.................................................48 | C.17 Section 4.2.2.................................................49 | |||
C.17 Section 4.2.2.................................................48 | ||||
C.18 Section 4.2.3.................................................49 | C.18 Section 4.2.3.................................................49 | |||
C.19 Section 4.3...................................................49 | C.19 Section 4.3...................................................49 | |||
C.20 Section 4.4...................................................49 | C.20 Section 4.4...................................................50 | |||
C.21 Section 4.5.1.................................................49 | C.21 Section 4.5.1.................................................50 | |||
C.22 Section 4.5.2.................................................49 | C.22 Section 4.5.2.................................................50 | |||
C.23 Section 4.5.3.................................................50 | C.23 Section 4.5.3.................................................50 | |||
C.24 Section 4.5.3.1...............................................50 | C.24 Section 4.5.3.1...............................................50 | |||
C.25 Section 4.6...................................................50 | C.25 Section 4.6...................................................51 | |||
C.26 Section 4.7...................................................50 | C.26 Section 4.7...................................................51 | |||
C.27 Section 4.10..................................................50 | C.27 Section 4.10..................................................51 | |||
C.28 Section 4.11..................................................50 | C.28 Section 4.11..................................................51 | |||
C.29 Section 4.12..................................................51 | C.29 Section 4.12..................................................51 | |||
C.30 Section 5.1...................................................51 | C.30 Section 5.1...................................................51 | |||
C.31 Section 5.2.1.................................................51 | C.31 Section 5.2.1.................................................51 | |||
C.32 Section 6.1...................................................51 | C.32 Section 6.1...................................................51 | |||
C.33 Section 7.....................................................51 | 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. | |||
skipping to change at line 162 | skipping to change at line 169 | |||
- 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. | |||
Lightweight Directory Access Protocol Version 3 | ||||
- 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. | |||
3. Models | 3. Models | |||
skipping to change at line 217 | skipping to change at line 225 | |||
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. | |||
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.4 have not been updated> | <Editor's Note: Sections 3.2 through 3.3 have not been updated> | |||
3.2. Data Model | ||||
Sermersheim Internet-Draft - Expires Jan 2002 Page 4 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
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 | |||
distinguished names of the sequence of entries from a particular | distinguished names of the sequence of entries from a particular | |||
entry to an immediate subordinate of the root of the tree forms that | entry to an immediate subordinate of the root of the tree forms that | |||
skipping to change at line 272 | skipping to change at line 283 | |||
An example of an attribute is "mail". There may be one or more values | An example of an attribute is "mail". There may be one or more values | |||
of this attribute, they must be IA5 (ASCII) strings, and they are | of this attribute, they must be IA5 (ASCII) strings, and they are | |||
case insensitive (e.g. "foo@bar.com" will match "FOO@BAR.COM"). | case insensitive (e.g. "foo@bar.com" will match "FOO@BAR.COM"). | |||
Schema is the collection of attribute type definitions, object class | Schema is the collection of attribute type definitions, object class | |||
definitions and other information which a server uses to determine | definitions and other information which a server uses to determine | |||
how to match a filter or attribute value assertion (in a compare | how to match a filter or attribute value assertion (in a compare | |||
operation) against the attributes of an entry, and whether to permit | operation) against the attributes of an entry, and whether to permit | |||
add and modify operations. The definition of schema for use with LDAP | add and modify operations. The definition of schema for use with LDAP | |||
is given in [RFC2252] and [X.501]. Additional schema elements may be | ||||
defined in other documents. | ||||
Sermersheim Internet-Draft - Expires Jan 2002 Page 5 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
is given in [RFC2252] and [X.501]. Additional schema elements may be | ||||
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 | |||
a country). When creating an entry or adding an objectClass value to | a country). When creating an entry or adding an objectClass value to | |||
an entry, all superclasses of the named classes are implicitly added | an entry, all superclasses of the named classes are implicitly added | |||
as well if not already present, and the client must supply values for | as well if not already present, and the client must supply values for | |||
skipping to change at line 329 | skipping to change at line 342 | |||
(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. | |||
Servers which follow X.500(93) models SHOULD implement subschema | Sermersheim Internet-Draft - Expires Jan 2002 Page 6 | |||
using the X.500 subschema mechanisms, and so these subschemas are not | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Servers which follow X.500(93) models SHOULD implement subschema | ||||
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. | |||
The following four attributes MUST be present in all subschema | The following four attributes MUST be present in all subschema | |||
entries: | entries: | |||
skipping to change at line 384 | skipping to change at line 398 | |||
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), | |||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
The following attributes of the root DSE are defined in section 5 of | The following attributes of the root DSE are defined in section 5 of | |||
[RFC2252]. Additional attributes may be defined in other documents. | [RFC2252]. Additional attributes may be defined in other documents. | |||
- namingContexts: naming contexts held in the server. Naming | - namingContexts: naming contexts held in the server. Naming | |||
contexts are defined in section 17 of [X.501]. | contexts are defined in section 17 of [X.501]. | |||
- subschemaSubentry: subschema entries (or subentries) known by this | - subschemaSubentry: subschema entry (or subentry) holding the | |||
server. | schema for the root DSE. | |||
- altServer: alternative servers in case this one is later | - altServer: alternative servers in case this one is later | |||
unavailable. | unavailable. | |||
- supportedExtension: list of supported extended operations. | - supportedExtension: list of supported extended operations. | |||
- supportedControl: list of supported controls. | - supportedControl: list of supported controls. | |||
- supportedSASLMechanisms: list of supported SASL security features. | - supportedSASLMechanisms: list of supported SASL security features. | |||
- supportedLDAPVersion: LDAP versions implemented by the server. | - supportedLDAPVersion: LDAP versions implemented by the server. | |||
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, there may be any number of values of the | more schema rules, the schema for each entry is found by reading the | |||
subschemaSubentry attribute in the root DSE. | 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 typically transferred using a subset of ASN.1 | |||
Basic Encoding Rules [X.690] In order to support future extensions to | Basic Encoding Rules [X.690] In order to support future extensions to | |||
this protocol, clients and servers MUST ignore elements of SEQUENCE | this protocol, clients and servers MUST ignore elements of SEQUENCE | |||
encodings whose tags they do not recognize. | encodings whose tags they do not recognize. | |||
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 is supported in the | |||
client (since version 2 required that the client bind first). | 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 version 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. | |||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
4.1.1. Message Envelope | 4.1.1. Message Envelope | |||
For the purposes of protocol exchanges, all protocol operations are | For the purposes of protocol exchanges, all protocol operations are | |||
encapsulated in a common envelope, the LDAPMessage, which is defined | encapsulated in a common envelope, the LDAPMessage, which is defined | |||
skipping to change at line 496 | skipping to change at line 513 | |||
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 | |||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
4.1.1.1. Message ID | 4.1.1.1. Message ID | |||
skipping to change at line 524 | skipping to change at line 543 | |||
The message ID of a request MUST have a value different from the | The message ID of a request MUST have a value different from the | |||
values of any other requests outstanding in the LDAP session of which | values of any other requests outstanding in the LDAP session of which | |||
this message is a part. | this message is a part. | |||
A client MUST NOT send a second request with the same message ID as | A client MUST NOT send a second request with the same message ID as | |||
an earlier request on the same connection if the client has not | an earlier request on the same connection if the client has not | |||
received the final response from the earlier request. Otherwise the | received the final response from the earlier request. Otherwise the | |||
behavior is undefined. Typical clients increment a counter for each | behavior is undefined. Typical clients increment a counter for each | |||
request. | request. | |||
A client MUST NOT reuse the message id of an abandonRequest of the | A client MUST NOT reuse the message id of an abandonRequest or of the | |||
abandoned operation until it has received a response from the server | abandoned operation until it has received a response from the server | |||
for another request invoked subsequent to the abandonRequest, as the | for another request invoked subsequent to the abandonRequest, as the | |||
abandonRequest itself does not have a response. | abandonRequest itself does not have a response. | |||
4.1.2. String Types | 4.1.2. String Types | |||
The LDAPString is a notational convenience to indicate that, although | The LDAPString is a notational convenience to indicate that, although | |||
strings of LDAPString type encode as OCTET STRING types, the | strings of LDAPString type encode as 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 | |||
skipping to change at line 552 | skipping to change at line 571 | |||
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 | |||
4.1.3. Distinguished Name and Relative Distinguished Name | Sermersheim Internet-Draft - Expires Jan 2002 Page 10 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
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 | |||
where name and name-component are as defined in [RFC2253]. | where name and name-component are as defined in [RFC2253]. | |||
skipping to change at line 606 | skipping to change at line 627 | |||
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 | |||
value from subschema entries in order to obtain the OBJECT IDENTIFIER | ||||
and other information associated with attribute types. | ||||
Sermersheim Internet-Draft - Expires Jan 2002 Page 11 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
value from subschema entries in order to obtain the OBJECT IDENTIFIER | ||||
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 | |||
AttributeType. It has the same ASN.1 definition, but allows | AttributeType. It has the same ASN.1 definition, but allows | |||
additional options to be specified. They are also case insensitive. | additional options to be specified. They are also case insensitive. | |||
skipping to change at line 662 | skipping to change at line 685 | |||
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 | |||
Lightweight Directory Access Protocol Version 3 | ||||
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 | |||
server return an attribute in the binary format, but the server | server return an attribute in the binary format, but the server | |||
cannot generate that format, the server MUST treat this attribute | cannot generate that format, the server MUST treat this attribute | |||
type as an unrecognized attribute type. Similarly, clients MUST NOT | type as an unrecognized attribute type. Similarly, clients MUST NOT | |||
skipping to change at line 718 | skipping to change at line 742 | |||
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. | |||
Lightweight Directory Access Protocol Version 3 | ||||
AttributeValueAssertion ::= SEQUENCE { | AttributeValueAssertion ::= SEQUENCE { | |||
attributeDesc AttributeDescription, | attributeDesc AttributeDescription, | |||
assertionValue AssertionValue } | assertionValue AssertionValue } | |||
AssertionValue ::= OCTET STRING | AssertionValue ::= OCTET STRING | |||
If an option specifying the transfer encoding is present in | If an option specifying the transfer encoding is present in | |||
attributeDesc, the assertionValue is encoded as specified by the | attributeDesc, the assertionValue is encoded as specified by the | |||
option. For example, if the "binary" option is present in the | option. For example, if the "binary" option is present in the | |||
attributeDesc, the AssertionValue is BER encoded. | attributeDesc, the AssertionValue is BER encoded. | |||
skipping to change at line 774 | skipping to change at line 799 | |||
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". | |||
MatchingRuleId ::= LDAPString | Sermersheim Internet-Draft - Expires Jan 2002 Page 14 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
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 | |||
skipping to change at line 829 | skipping to change at line 856 | |||
-- 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), | |||
-- 55-63 unused -- | ||||
namingViolation (64), | Sermersheim Internet-Draft - Expires Jan 2002 Page 15 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
-- 55-63 unused -- | ||||
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), -- new | |||
-- 72-79 unused -- | -- 72-79 unused -- | |||
other (80) }, | other (80) }, | |||
-- 81-90 reserved for APIs -- | -- 81-90 reserved for APIs -- | |||
skipping to change at line 885 | skipping to change at line 914 | |||
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 a | |||
reference to another server (or set of servers) which may be accessed | reference to another server (or set of servers) which may be accessed | |||
via LDAP or other protocols. Referrals can be returned in response to | ||||
Sermersheim Internet-Draft - Expires Jan 2002 Page 16 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
via LDAP or other protocols. Referrals can be returned in response to | ||||
any operation request (except unbind and abandon which do not have | any operation request (except unbind and abandon which do not have | |||
responses). At least one URL MUST be present in the Referral. | 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 | |||
skipping to change at line 941 | skipping to change at line 972 | |||
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 | 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. | The criticality field is either TRUE or FALSE and is only used when a | |||
control accompanies one of the following requests: bindRequest, | ||||
searchRequest, modifyRequest, addRequest, delRequest, modDNRequest, | ||||
compareRequest, or extendedReq. The use of the criticality field for | ||||
a control that is part of any other operation is ignored and treated | ||||
as FALSE. | ||||
If the server recognizes the control type and it is appropriate for | If the server recognizes the control type and it is appropriate for | |||
the operation, the server will make use of the control when | the operation, the server will make use of the control when | |||
performing the operation. | performing the operation. | |||
If the server does not recognize the control type and the criticality | If the server does not recognize the control type or it is not | |||
field is TRUE, the server MUST NOT perform the operation, and MUST | appropriate for the operation, and the criticality field is TRUE, the | |||
instead return the resultCode unavailableCriticalExtension. | server MUST NOT perform the operation, and MUST instead return the | |||
resultCode unavailableCriticalExtension. | ||||
If the control is not appropriate for the operation and criticality | ||||
field is TRUE, the server MUST NOT perform the operation, and MUST | ||||
instead return the 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. The server MUST | |||
be prepared to handle arbitrary contents of the controlValue octet | be prepared to handle arbitrary contents of the controlValue octet | |||
string, including zero bytes. It is absent only if there is no value | string, including zero bytes. It is absent only if there is no value | |||
information which is associated with a control of its type. | information which is associated with a control of its type. | |||
skipping to change at line 995 | skipping to change at line 1030 | |||
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 } | |||
AuthenticationChoice ::= CHOICE { | Sermersheim Internet-Draft - Expires Jan 2002 Page 18 | |||
simple [0] OCTET STRING, | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
AuthenticationChoice ::= CHOICE { | ||||
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: | |||
- version: A version number indicating the version of the protocol | - version: A version number indicating the version of the protocol | |||
skipping to change at line 1023 | skipping to change at line 1059 | |||
server that supports the version 2 protocol as described in | server that supports the version 2 protocol as described in | |||
[RFC1777] will not return any v3-specific protocol fields. (Note | [RFC1777] will not return any v3-specific protocol fields. (Note | |||
that not all LDAP servers will support protocol version 2, since | that not all LDAP servers will support protocol version 2, since | |||
they may be unable to generate the attribute syntaxes associated | they may be unable to generate the attribute syntaxes associated | |||
with version 2.) | with version 2.) | |||
- name: The name of the directory object that the client wishes to | - name: The name of the directory object that the client wishes to | |||
bind as. This field may take on a null value (a zero length | bind as. This field may take on a null value (a zero length | |||
string) for the purposes of anonymous binds, when authentication | string) for the purposes of anonymous binds, when authentication | |||
has been performed at a lower layer, or when using SASL | has been performed at a lower layer, or when using SASL | |||
credentials with a mechanism that includes the LDAPDN in the | credentials with a mechanism that includes the name in the | |||
credentials. Note that the server SHOULD NOT perform any alias | credentials. Server behavior is undefined when the name is a null | |||
dereferencing in determining the object to bind as. | value, simple authentication is used, and a password is specified. | |||
Note that the server SHOULD NOT perform any alias dereferencing in | ||||
determining the object to bind as. | ||||
- authentication: information used to authenticate the name, if any, | - authentication: information used to authenticate the name, if any, | |||
provided in the Bind Request. | 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. | |||
Authorization is the use of this authentication information when | Authorization is the use of this authentication information when | |||
skipping to change at line 1048 | skipping to change at line 1086 | |||
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. | |||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
Unlike LDAP v2, the client need not send a Bind Request in the first | Unlike LDAP v2, the client need not send a Bind Request in the first | |||
PDU of the connection. The client may request any operations and the | PDU of the connection. The client may request any operations and the | |||
server MUST treat these as unauthenticated. If the server requires | server MUST treat these as anonymous. If the server requires that the | |||
that the client bind before browsing or modifying the directory, the | client bind before browsing or modifying the directory, the server | |||
server MAY reject a request other than binding, unbinding or an | MAY reject a request other than binding, unbinding or an extended | |||
extended request with the "operationsError" result. | request with the "operationsError" result. | |||
If the client did not bind before sending a request and receives an | If the client did not bind before sending a request and receives an | |||
operationsError, it may then send a Bind Request. If this also fails | operationsError, it may then send a Bind Request. If this also fails | |||
or the client chooses not to bind on the existing connection, it will | or the client chooses not to bind on the existing connection, it will | |||
close the connection, reopen it and begin again by first sending a | close the connection, reopen it and begin again by first sending a | |||
PDU with a Bind Request. This will aid in interoperating with servers | PDU with a Bind Request. This will aid in interoperating with servers | |||
implementing other versions of LDAP. | implementing other versions of LDAP. | |||
Clients MAY send multiple bind requests on a connection to change | Clients MAY send multiple bind requests on a connection to change | |||
their credentials. A subsequent bind process has the effect of | their credentials. A subsequent bind process has the effect of | |||
skipping to change at line 1089 | skipping to change at line 1128 | |||
will be treated as anonymous. If a SASL transfer encryption or | will be treated as anonymous. If a SASL transfer encryption or | |||
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 there is no | passwords is not recommended over open networks when the underlying | |||
authentication or encryption being performed by a lower layer; see | transport service cannot guarantee confidentiality; see the "Security | |||
the "Security Considerations" section. | Considerations" section. | |||
If no 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 DN 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 | |||
Lightweight Directory Access Protocol Version 3 | ||||
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. | |||
4.2.3. Bind Response | 4.2.3. Bind Response | |||
The Bind Response is defined as follows. | The Bind Response is defined as follows. | |||
skipping to change at line 1159 | skipping to change at line 1200 | |||
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.) | |||
Lightweight Directory Access Protocol Version 3 | ||||
The serverSaslCreds are used as part of a SASL-defined bind mechanism | The serverSaslCreds are used as part of a SASL-defined bind mechanism | |||
to allow the client to authenticate the server to which it is | to allow the client to authenticate the server to which it is | |||
communicating, or to perform "challenge-response" authentication. If | communicating, or to perform "challenge-response" authentication. If | |||
the client bound with the password choice, or the SASL mechanism does | the client bound with the password choice, or the SASL mechanism does | |||
not require the server to return information to the client, then this | not require the server to return information to the client, then this | |||
field is not to be included in the result. | field is not to be included in the result. | |||
4.3. Unbind Operation | 4.3. Unbind Operation | |||
skipping to change at line 1213 | skipping to change at line 1256 | |||
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. | |||
Lightweight Directory Access Protocol Version 3 | ||||
The following resultCode values are to be used in this notification: | The following resultCode values are to be used in this notification: | |||
- protocolError: The server has received data from the client in | - protocolError: The server has received data from the client in | |||
which the LDAPMessage structure could not be parsed. | which the LDAPMessage structure could not be parsed. | |||
- strongAuthRequired: The server has detected that an established | - strongAuthRequired: The server has detected that an established | |||
underlying security association protecting communication between | underlying security association protecting communication between | |||
the client and server has unexpectedly failed or been compromised. | the client and server has unexpectedly failed or been compromised. | |||
- unavailable: This server will stop accepting new connections and | - unavailable: This server will stop accepting new connections and | |||
skipping to change at line 1269 | skipping to change at line 1314 | |||
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, | |||
Lightweight Directory Access Protocol Version 3 | ||||
lessOrEqual [6] AttributeValueAssertion, | lessOrEqual [6] AttributeValueAssertion, | |||
present [7] AttributeDescription, | present [7] AttributeDescription, | |||
approxMatch [8] AttributeValueAssertion, | approxMatch [8] AttributeValueAssertion, | |||
extensibleMatch [9] MatchingRuleAssertion } | extensibleMatch [9] MatchingRuleAssertion } | |||
SubstringFilter ::= SEQUENCE { | SubstringFilter ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
-- at least one must be present | -- at least one must be present | |||
substrings SEQUENCE OF CHOICE { | substrings SEQUENCE OF CHOICE { | |||
initial [0] AssertionValue, | initial [0] AssertionValue, | |||
skipping to change at line 1325 | skipping to change at line 1372 | |||
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 | |||
Lightweight Directory Access Protocol Version 3 | ||||
indicates that no client-requested time limit restrictions are in | indicates that no client-requested time limit restrictions are in | |||
effect for the search. | effect for the search. | |||
- typesOnly: An indicator as to whether search results will contain | - typesOnly: An indicator as to whether search results will contain | |||
both attribute types and values, or just attribute types. Setting | both attribute types and values, or just attribute types. Setting | |||
this field to TRUE causes only attribute types (no values) to be | this field to TRUE causes only attribute types (no values) to be | |||
returned. Setting this field to FALSE causes both attribute types | returned. Setting this field to FALSE causes both attribute types | |||
and values to be returned. | and values to be returned. | |||
- filter: A filter that defines the conditions that must be | - filter: A filter that defines the conditions that must be | |||
skipping to change at line 1381 | skipping to change at line 1430 | |||
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 | |||
Lightweight Directory Access Protocol Version 3 | ||||
is set to TRUE, the match is applied against all the attributes in | is set to TRUE, the match is applied against all the attributes in | |||
an entry's distinguished name as well, and also evaluates to TRUE | an entry's distinguished name as well, and also evaluates to TRUE | |||
if there is at least one attribute in the distinguished name for | if there is at least one attribute in the distinguished name for | |||
which the filter item evaluates to TRUE. (Editors note: The | which the filter item evaluates to TRUE. (Editors note: The | |||
dnAttributes field is present so that there does not need to be | dnAttributes field is present so that there does not need to be | |||
multiple versions of generic matching rules such as for word | multiple versions of generic matching rules such as for word | |||
matching, one to apply to entries and another to apply to entries | matching, one to apply to entries and another to apply to entries | |||
and dn attributes as well). | and dn attributes as well). | |||
A filter item evaluates to Undefined when the server would not be | A filter item evaluates to Undefined when the server would not be | |||
skipping to change at line 1437 | skipping to change at line 1488 | |||
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].) | |||
Lightweight Directory Access Protocol Version 3 | ||||
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 existence 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 | |||
messages containing either SearchResultEntry, SearchResultReference, | messages containing either SearchResultEntry, SearchResultReference, | |||
ExtendedResponse or SearchResultDone data types. | or SearchResultDone data types. | |||
SearchResultEntry ::= [APPLICATION 4] SEQUENCE { | SearchResultEntry ::= [APPLICATION 4] SEQUENCE { | |||
objectName LDAPDN, | objectName LDAPDN, | |||
attributes PartialAttributeList } | attributes PartialAttributeList } | |||
PartialAttributeList ::= SEQUENCE OF SEQUENCE { | PartialAttributeList ::= SEQUENCE OF SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
-- implementors should note that the PartialAttributeList may | -- implementors should note that the PartialAttributeList may | |||
-- have zero elements (if none of the attributes of that entry | -- have zero elements (if none of the attributes of that entry | |||
skipping to change at line 1491 | skipping to change at line 1545 | |||
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 | |||
Lightweight Directory Access Protocol Version 3 | ||||
policy. Some attributes may be returned in binary format (indicated | policy. Some attributes may be returned in binary format (indicated | |||
by the AttributeDescription in the response having the "binary" | by the AttributeDescription in the response having the "binary" | |||
option present). | option present). | |||
Some attributes may be constructed by the server and appear in a | Some attributes may be constructed by the server and appear in a | |||
SearchResultEntry attribute list, although they are not stored | SearchResultEntry attribute list, although they are not stored | |||
attributes of an entry. Clients MUST NOT assume that all attributes | attributes of an entry. Clients MUST NOT assume that all attributes | |||
can be modified, even if permitted by access control. | can be modified, even if permitted by access control. | |||
LDAPMessage responses of the ExtendedResponse form are reserved for | ||||
returning information associated with a control requested by the | ||||
client. These may be defined in future versions of this document. | ||||
4.5.3. Continuation References in the Search Result | 4.5.3. Continuation References in the Search Result | |||
If the server was able to locate the entry referred to by the | If the server was able to locate the entry referred to by the | |||
baseObject but was unable to search all the entries in the scope at | baseObject but was unable to search all the entries in the scope at | |||
and under the baseObject, the server may return one or more | and under the baseObject, the server may return one or more | |||
SearchResultReference entries, each containing a reference to another | SearchResultReference entries, each containing a reference to another | |||
set of servers for continuing the operation. A server MUST NOT return | set of servers for continuing the operation. A server MUST NOT return | |||
any SearchResultReference if it has not located the baseObject and | any SearchResultReference if it has not located the baseObject and | |||
thus has not searched any entries; in this case it would return a | thus has not searched any entries; in this case it would return a | |||
SearchResultDone containing a referral resultCode. | SearchResultDone containing a referral resultCode. | |||
skipping to change at line 1551 | skipping to change at line 1603 | |||
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 | ||||
to different servers, it MUST abandon each operation individually. | ||||
Sermersheim Internet-Draft - Expires Jan 2002 Page 28 | ||||
Lightweight Directory Access Protocol Version 3 | 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 1607 | skipping to change at line 1661 | |||
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 { | |||
Lightweight Directory Access Protocol Version 3 | ||||
operation ENUMERATED { | operation ENUMERATED { | |||
add (0), | add (0), | |||
delete (1), | delete (1), | |||
replace (2) }, | replace (2) }, | |||
modification AttributeTypeAndValues } } | modification AttributeTypeAndValues } } | |||
AttributeTypeAndValues ::= SEQUENCE { | AttributeTypeAndValues ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
skipping to change at line 1663 | skipping to change at line 1718 | |||
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 | |||
Lightweight Directory Access Protocol Version 3 | ||||
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 | |||
skipping to change at line 1719 | skipping to change at line 1776 | |||
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 the createTimestamp or | |||
creatorsName attributes, since these will be generated | creatorsName attributes, since these will be generated | |||
automatically by the server. | 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 | |||
Lightweight Directory Access Protocol Version 3 | ||||
"CN=JS,O=Foo,C=US", the "O=Foo,C=US" entry did not exist, and the | "CN=JS,O=Foo,C=US", the "O=Foo,C=US" entry did not exist, and the | |||
"C=US" entry did exist, then the server would return the error | "C=US" entry did exist, then the server would return the error | |||
noSuchObject with the matchedDN field containing "C=US". If the | noSuchObject with the matchedDN field containing "C=US". If the | |||
parent entry exists but is not in a naming context held by the | parent entry exists but is not in a naming context held by the | |||
server, the server SHOULD return a referral to the server holding the | server, the server SHOULD return a referral to the server holding the | |||
parent entry. | parent entry. | |||
Servers implementations SHOULD NOT restrict where entries can be | Servers implementations SHOULD NOT restrict where entries can be | |||
located in the directory. Some servers MAY allow the administrator to | located in the directory. Some servers MAY allow the administrator to | |||
restrict the classes of entries which can be added to the directory. | restrict the classes of entries which can be added to the directory. | |||
skipping to change at line 1775 | skipping to change at line 1833 | |||
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, | |||
Lightweight Directory Access Protocol Version 3 | ||||
newSuperior [0] LDAPDN OPTIONAL } | newSuperior [0] LDAPDN OPTIONAL } | |||
Parameters of the Modify DN Request are: | Parameters of the Modify DN Request are: | |||
- entry: the Distinguished Name of the entry to be changed. This | - entry: the Distinguished Name of the entry to be changed. This | |||
entry may or may not have subordinate entries. Note that the | entry may or may not have subordinate entries. Note that the | |||
server will not dereference any aliases in locating the entry to | server will not dereference any aliases in locating the entry to | |||
be changed. | be changed. | |||
- newrdn: the RDN that will form the leftmost component of the new | - newrdn: the RDN that will form the leftmost component of the new | |||
skipping to change at line 1831 | skipping to change at line 1891 | |||
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 | 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 } | |||
skipping to change at line 1886 | skipping to change at line 1948 | |||
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 has | |||
been abandoned. In the event that a server receives an Abandon | been abandoned. In the event that a server receives an Abandon | |||
Request on a Search Operation in the midst of transmitting responses | Request on a Search Operation in the midst of transmitting responses | |||
to the search, that server MUST cease transmitting entry responses to | ||||
Sermersheim Internet-Draft - Expires Jan 2002 Page 34 | ||||
Lightweight Directory Access Protocol Version 3 | 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 | 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 | |||
skipping to change at line 1941 | skipping to change at line 2005 | |||
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 | 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. | |||
skipping to change at line 1998 | skipping to change at line 2064 | |||
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 | 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 | |||
skipping to change at line 2054 | skipping to change at line 2121 | |||
[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 | 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. | |||
skipping to change at line 2110 | skipping to change at line 2178 | |||
[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 | 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 2172 | skipping to change at line 2243 | |||
AttributeType ::= LDAPString | AttributeType ::= LDAPString | |||
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 2228 | skipping to change at line 2301 | |||
busy (51), | busy (51), | |||
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 2284 | skipping to change at line 2359 | |||
scope ENUMERATED { | scope ENUMERATED { | |||
baseObject (0), | baseObject (0), | |||
singleLevel (1), | singleLevel (1), | |||
wholeSubtree (2) }, | wholeSubtree (2) }, | |||
derefAliases ENUMERATED { | derefAliases ENUMERATED { | |||
neverDerefAliases (0), | neverDerefAliases (0), | |||
derefInSearching (1), | derefInSearching (1), | |||
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 2340 | skipping to change at line 2417 | |||
object LDAPDN, | object LDAPDN, | |||
modification SEQUENCE OF SEQUENCE { | modification SEQUENCE OF SEQUENCE { | |||
operation ENUMERATED { | operation ENUMERATED { | |||
add (0), | add (0), | |||
delete (1), | delete (1), | |||
replace (2) }, | replace (2) }, | |||
modification AttributeTypeAndValues } } | modification AttributeTypeAndValues } } | |||
AttributeTypeAndValues ::= SEQUENCE { | AttributeTypeAndValues ::= SEQUENCE { | |||
type AttributeDescription, | 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 2386 | skipping to change at line 2465 | |||
ExtendedRequest ::= [APPLICATION 23] SEQUENCE { | ExtendedRequest ::= [APPLICATION 23] SEQUENCE { | |||
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 2441 | skipping to change at line 2522 | |||
AssertionValue is encoded as specified by the option...". | AssertionValue is encoded as specified by the option...". | |||
Previously, only the ;binary option was mentioned. | Previously, only the ;binary option was mentioned. | |||
B.6 Sections 4.2, 4.9, 4.10 | B.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 | |||
LDAPString to AssertionValue. This was causing an incompatibility | LDAPString to AssertionValue. This was causing an incompatibility | |||
with X.500 and confusion among other TS RFCs. | with X.500 and confusion among other TS RFCs. | |||
Changes made to draft-ietf-ldapbis-protocol-01.txt: | ||||
B.8 Section 3.4 | ||||
- Reworded text surrounding subschemaSubentry to reflect that it is | ||||
a single-valued attribute that holds the schema for the root DSE. | ||||
Also noted that if the server masters entries that use differing | ||||
schema, each entry's subschemaSubentry attribute must be | ||||
interrogated. This may change as further fine-tuning is done to | ||||
the data model. | ||||
B.9 Section 4.1.12 | ||||
- Specified that the criticality field is only used for requests and | ||||
not for unbind or abandon. Noted that it is ignored for all other | ||||
operations. | ||||
B.10 Section 4.2 | ||||
- Noted that Server behavior is undefined when the name is a null | ||||
value, simple authentication is used, and a password is specified. | ||||
B.11 Section 4.2.(various) | ||||
- Changed "unauthenticated" to "anonymous" and "DN" and "LDAPDN" to | ||||
"name" | ||||
B.12 Section 4.2.2 | ||||
- Changed "there is no authentication or encryption being performed | ||||
by a lower layer" to "the underlying transport service cannot | ||||
guarantee confidentiality" | ||||
B.13 Section 4.5.2 | ||||
- Removed all mention of ExtendedResponse due to lack of | ||||
implementation. | ||||
Appendix C - Outstanding Work Items | Appendix C - Outstanding Work Items | |||
C.1 Integrate result codes draft. | C.1 Integrate result codes draft. | |||
The result codes draft should be reconciled with this draft. | Sermersheim Internet-Draft - Expires Jan 2002 Page 46 | |||
Operation-specific instructions will reside with operations while the | Lightweight Directory Access Protocol Version 3 | |||
error-specific sections will be added as an appendix. | ||||
- The result codes draft should be reconciled with this draft. | ||||
Operation-specific instructions will reside with operations while | ||||
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 | - Remove "typically" from "and is typically transferred" in the | |||
first paragraph. | first paragraph. | |||
skipping to change at line 2497 | skipping to change at line 2621 | |||
connection." to "the client MAY discard the PDU, or MAY abruptly | connection." to "the client MAY discard the PDU, or MAY abruptly | |||
close the connection." in the fourth paragraph. | close the connection." in the fourth paragraph. | |||
C.5 Section 4.1.1.1 | C.5 Section 4.1.1.1 | |||
- Add "If an unsolicited notification as described in section 4.4 is | - Add "If an unsolicited notification as described in section 4.4 is | |||
sent from a server, the messageID value MUST be zero." to first | sent from a server, the messageID value MUST be zero." to first | |||
paragraph. | paragraph. | |||
- Change "MUST have a value different" to "MUST have a non-zero | - Change "MUST have a value different" to "MUST have a non-zero | |||
value different" in the second paragraph. | value different" in the second paragraph. | |||
Lightweight Directory Access Protocol Version 3 | ||||
- Remove "or of the abandoned operation until it has received a | - Remove "or of the abandoned operation until it has received a | |||
response from the server for another request invoked subsequent to | response from the server for another request invoked subsequent to | |||
the abandonRequest," from the fourth paragraph as this imposes | the abandonRequest," from the fourth paragraph as this imposes | |||
synchronous behavior on the server. | synchronous behavior on the server. | |||
C.6 Section 4.1.2 | 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 2544 | skipping to change at line 2669 | |||
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 | |||
- 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 | ||||
- Change "containing an encoded value of an AttributeValue data | ||||
type" to "containing an encoded attribute value data type" | ||||
C.11 Section 4.1.7 | C.11 Section 4.1.7 | |||
- Change "For all the string-valued user attributes described in | - Change "For all the string-valued user attributes described in | |||
[5], the assertion value syntax is the same as the value syntax." | [5], the assertion value syntax is the same as the value syntax." | |||
to "The assertion value syntax for all attributes using human- | to "The assertion value syntax for all attributes using human- | |||
readable syntaxes as described in [RFC2252] is the same as the | readable syntaxes as described in [RFC2252] is the same as the | |||
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 | ||||
Lightweight Directory Access Protocol Version 3 | 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 | C.12 Section 4.1.8 | |||
- Change "when transferred in protocol" to "when transferred from | - Change "when transferred in protocol" to "when transferred from | |||
the server to the client" in the first paragraph. | 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 | - Change "The referral error" to "The referral result code" in the | |||
first paragraph. | first paragraph. | |||
- Change "It contains a reference to another server (or set of | - Change "It contains a reference to another server (or set of | |||
servers)" to "It contains one or more references to one or more | servers)" to "It contains one or more references to one or more | |||
servers or services" in the first paragraph. | 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 | - Change "The server MUST be prepared" to "The client and server | |||
MUST be prepared" in the eighth paragraph | MUST be prepared" in the eighth paragraph | |||
- Clarify whether or not a client should ignore the criticality | ||||
field. | ||||
- Specify how unbind and abandon are to handle an unknown or | ||||
inappropriate critical control. | ||||
- 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 | |||
- Resolve anonymous vs. unauthenticated connections. See "anonymous | ||||
binds" on list. | ||||
-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.16 Section 4.2.1 | ||||
- Change "unauthenticated" to "anonymous" in the fourth paragraph. | ||||
- Resolve the meaning of "no authentication" in first paragraph. See | ||||
"Clarification of "authentication"" on list. | ||||
- Needs to be fixed after resolving issue in C.8 | ||||
C.17 Section 4.2.2 | C.17 Section 4.2.2 | |||
- Change "Typically the DN is also of zero length." to "The name | ||||
field SHOULD also be zero length and, if provided, MUST be ignored | ||||
Lightweight Directory Access Protocol Version 3 | ||||
by the server." in the second paragraph. <This needs further | ||||
resolution on the list.> | ||||
- Add "(anonymous bind)" to second paragraph. <Needs to be | ||||
reconciled with work done to 4.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 | |||
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 | - Change "One unsolicited notification is defined" to "One | |||
unsolicited notification (Notice of Disconnection) is defined" in | unsolicited notification (Notice of Disconnection) is defined" in | |||
the third paragraph. | the third paragraph. | |||
skipping to change at line 2664 | skipping to change at line 2786 | |||
definition is correct. See "derefInSearching" on list. | definition is correct. See "derefInSearching" on list. | |||
- Change "checking for the existence of the objectClass attribute" | - Change "checking for the existence of the objectClass attribute" | |||
to "checking for the presence of the objectClass attribute" in the | to "checking for the presence of the objectClass attribute" in the | |||
last paragraph. | last paragraph. | |||
C.22 Section 4.5.2 | C.22 Section 4.5.2 | |||
- Change "Following all the SearchResultReference responses and all | - Change "Following all the SearchResultReference responses and all | |||
SearchResultEntry responses to be returned by the server" to | SearchResultEntry responses to be returned by the server" to | |||
"Following all the SearchResultReference responses, | "Following all the SearchResultReference responses, | |||
Lightweight Directory Access Protocol Version 3 | ||||
SearchResultEntry responses, and ExtendedResponses to be returned | SearchResultEntry responses, and ExtendedResponses to be returned | |||
by the server" in the third paragraph. | 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 | |||
skipping to change at line 2690 | skipping to change at line 2810 | |||
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 | - Remove "different" from "outstanding search operations to | |||
different servers," in the fifth paragraph as they may be to the | different servers," in the fifth paragraph as they may be to the | |||
same server. | 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 | |||
- 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 | - Change "clients MUST NOT attempt to delete" to "clients MUST NOT | |||
attempt to add or delete" in the second to last paragraph. | attempt to add or delete" in the second to last paragraph. | |||
- Change "using the "delete" form" to "using the "add" or "delete" | - Change "using the "delete" form" to "using the "add" or "delete" | |||
form" in the second to last paragraph. | form" in the second to last paragraph. | |||
C.26 Section 4.7 | C.26 Section 4.7 | |||
skipping to change at line 2719 | skipping to change at line 2842 | |||
"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 "has been" to "will be" in the fourth paragraph. | |||
Lightweight Directory Access Protocol Version 3 | ||||
- 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 2747 | skipping to change at line 2867 | |||
- 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 | |||
skipping to change at line 2768 | skipping to change at line 2891 | |||
servers SHOULD, support strong authentication mechanisms described | servers SHOULD, support strong authentication mechanisms described | |||
in [RFC2829]." as a fourth paragraph. | in [RFC2829]." as a fourth paragraph. | |||
- Add "In order to automatically follow referrals, clients may need | - Add "In order to automatically follow referrals, clients may need | |||
to hold authentication secrets. This poses significant privacy and | to hold authentication secrets. This poses significant privacy and | |||
security concerns and SHOULD be avoided." as a sixth paragraph. | security concerns and SHOULD be avoided." as a sixth paragraph. | |||
- Add "This document provides a mechanism which clients may use to | - 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 | ||||
discover operational attributes. Those relying on security by | ||||
obscurity should implement appropriate access controls to | ||||
restricts access to operational attributes per local policy." as | ||||
an eighth paragraph. | ||||
Sermersheim Internet-Draft - Expires 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 (2000). 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 | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |