draft-ietf-ldapbis-protocol-14.txt | draft-ietf-ldapbis-protocol-15.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-14.txt Jun 2003 | Document: draft-ietf-ldapbis-protocol-15.txt Jun 2003 | |||
Obsoletes: RFC 2251 | Obsoletes: RFC 2251 | |||
LDAP: The Protocol | LDAP: The Protocol | |||
Status of this Memo | Status of this Memo | |||
This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is in full conformance with | |||
all provisions of Section 10 of RFC2026. | all provisions of Section 10 of RFC2026. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
skipping to change at line 44 | skipping to change at line 44 | |||
This document describes the protocol elements, along with their | This document describes the protocol elements, along with their | |||
semantics and encodings, for the Lightweight Directory Access | semantics and encodings, for the Lightweight Directory Access | |||
Protocol (LDAP). LDAP provides access to distributed directory | Protocol (LDAP). LDAP provides access to distributed directory | |||
services that act in accordance with X.500 data and service models. | services that act in accordance with X.500 data and service models. | |||
These protocol elements are based on those described in the X.500 | These protocol elements are based on those described in the X.500 | |||
Directory Access Protocol (DAP). | Directory Access Protocol (DAP). | |||
Table of Contents | Table of Contents | |||
1. Introduction.....................................................2 | 1. Introduction....................................................2 | |||
2. Conventions......................................................3 | 2. Conventions.....................................................3 | |||
3. Protocol Model...................................................3 | 3. Protocol Model..................................................3 | |||
4. Elements of Protocol.............................................4 | 4. Elements of Protocol............................................4 | |||
4.1. Common Elements................................................4 | 4.1. Common Elements...............................................4 | |||
4.1.1. Message Envelope.............................................4 | 4.1.1. Message Envelope............................................4 | |||
4.1.2. String Types.................................................6 | 4.1.2. String Types................................................6 | |||
4.1.3. Distinguished Name and Relative Distinguished Name...........6 | 4.1.3. Distinguished Name and Relative Distinguished Name..........6 | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 1 | Sermersheim Internet-Draft - Expires Jan 2004 Page 1 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
4.1.4. Attribute Descriptions.......................................6 | 4.1.4. Attribute Descriptions......................................6 | |||
4.1.5. Attribute Value..............................................7 | 4.1.5. Attribute Value.............................................7 | |||
4.1.6. Attribute Value Assertion....................................7 | 4.1.6. Attribute Value Assertion...................................7 | |||
4.1.7. Attribute....................................................8 | 4.1.7. Attribute...................................................8 | |||
4.1.8. Matching Rule Identifier.....................................8 | 4.1.8. Matching Rule Identifier....................................8 | |||
4.1.9. Result Message...............................................8 | 4.1.9. Result Message..............................................8 | |||
4.1.10. Referral...................................................10 | 4.1.10. Referral..................................................10 | |||
4.1.11. Controls...................................................11 | 4.1.11. Controls..................................................11 | |||
4.2. Bind Operation................................................12 | 4.2. Bind Operation...............................................12 | |||
4.3. Unbind Operation..............................................15 | 4.3. Unbind Operation.............................................15 | |||
4.4. Unsolicited Notification......................................15 | 4.4. Unsolicited Notification.....................................15 | |||
4.5. Search Operation..............................................16 | 4.5. Search Operation.............................................16 | |||
4.6. Modify Operation..............................................23 | 4.6. Modify Operation.............................................23 | |||
4.7. Add Operation.................................................25 | 4.7. Add Operation................................................25 | |||
4.8. Delete Operation..............................................26 | 4.8. Delete Operation.............................................26 | |||
4.9. Modify DN Operation...........................................26 | 4.9. Modify DN Operation..........................................26 | |||
4.10. Compare Operation............................................27 | 4.10. Compare Operation...........................................27 | |||
4.11. Abandon Operation............................................28 | 4.11. Abandon Operation...........................................28 | |||
4.12. Extended Operation...........................................29 | 4.12. Extended Operation..........................................29 | |||
4.13. Start TLS Operation..........................................29 | 4.13. Start TLS Operation.........................................30 | |||
5. Protocol Element Encodings and Transfer.........................31 | 5. Protocol Element Encodings and Transfer........................32 | |||
5.1. Protocol Encoding.............................................31 | 5.1. Protocol Encoding............................................32 | |||
5.2. Transfer Protocols............................................32 | 5.2. Transfer Protocols...........................................32 | |||
6. Implementation Guidelines.......................................32 | 6. Implementation Guidelines......................................33 | |||
6.1. Server Implementations........................................32 | 6.1. Server Implementations.......................................33 | |||
6.2. Client Implementations........................................32 | 6.2. Client Implementations.......................................33 | |||
7. Security Considerations.........................................33 | 7. Security Considerations........................................33 | |||
8. Acknowledgements................................................33 | 8. Acknowledgements...............................................34 | |||
9. Normative References............................................33 | 9. Normative References...........................................34 | |||
10. Editor's Address...............................................35 | 10. Editor's Address..............................................35 | |||
Appendix A - LDAP Result Codes.....................................36 | Appendix A - LDAP Result Codes....................................37 | |||
A.1 Non-Error Result Codes.........................................36 | A.1 Non-Error Result Codes........................................37 | |||
A.2 Error Result Codes.............................................36 | A.2 Error Result Codes............................................37 | |||
A.3 Classes and Precedence of Error Result Codes...................36 | Appendix C - Change History.......................................48 | |||
Appendix C - Change History........................................47 | C.1 Changes made to RFC 2251:.....................................48 | |||
C.1 Changes made to RFC 2251:......................................47 | C.2 Changes made to draft-ietf-ldapbis-protocol-00.txt:...........48 | |||
C.2 Changes made to draft-ietf-ldapbis-protocol-00.txt:............47 | C.3 Changes made to draft-ietf-ldapbis-protocol-01.txt:...........49 | |||
C.3 Changes made to draft-ietf-ldapbis-protocol-01.txt:............48 | C.4 Changes made to draft-ietf-ldapbis-protocol-02.txt:...........49 | |||
C.4 Changes made to draft-ietf-ldapbis-protocol-02.txt:............48 | C.5 Changes made to draft-ietf-ldapbis-protocol-03.txt:...........51 | |||
C.5 Changes made to draft-ietf-ldapbis-protocol-03.txt:............50 | C.6 Changes made to draft-ietf-ldapbis-protocol-04.txt:...........53 | |||
C.6 Changes made to draft-ietf-ldapbis-protocol-04.txt:............52 | C.7 Changes made to draft-ietf-ldapbis-protocol-05.txt:...........53 | |||
C.7 Changes made to draft-ietf-ldapbis-protocol-05.txt:............52 | C.8 Changes made to draft-ietf-ldapbis-protocol-06.txt:...........54 | |||
C.8 Changes made to draft-ietf-ldapbis-protocol-06.txt:............53 | C.9 Changes made to draft-ietf-ldapbis-protocol-07.txt:...........57 | |||
C.9 Changes made to draft-ietf-ldapbis-protocol-07.txt:............56 | C.10 Changes made to draft-ietf-ldapbis-protocol-08.txt:..........57 | |||
C.10 Changes made to draft-ietf-ldapbis-protocol-08.txt:...........56 | C.11 Changes made to draft-ietf-ldapbis-protocol-09.txt:..........57 | |||
C.11 Changes made to draft-ietf-ldapbis-protocol-09.txt:...........56 | C.12 Changes made to draft-ietf-ldapbis-protocol-10.txt:..........57 | |||
C.12 Changes made to draft-ietf-ldapbis-protocol-10.txt:...........56 | C.13 Changes made to draft-ietf-ldapbis-protocol-11.txt:..........58 | |||
C.13 Changes made to draft-ietf-ldapbis-protocol-11.txt:...........57 | C.14 Changes made to draft-ietf-ldapbis-protocol-12.txt:..........58 | |||
C.14 Changes made to draft-ietf-ldapbis-protocol-12.txt:...........57 | C.15 Changes made to draft-ietf-ldapbis-protocol-13.txt...........58 | |||
C.15 Changes made to draft-ietf-ldapbis-protocol-13.txt............57 | C.16 Changes made to draft-ietf-ldapbis-protocol-14.txt...........59 | |||
Appendix D - Outstanding Work Items................................58 | Appendix D - Outstanding Work Items...............................61 | |||
1. Introduction | 1. Introduction | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 2 | Sermersheim Internet-Draft - Expires Jan 2004 Page 2 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
The Directory is "a collection of open systems cooperating to provide | The Directory is "a collection of open systems cooperating to provide | |||
directory services" [X.500]. A Directory user, which may be a human | directory services" [X.500]. A Directory user, which may be a human | |||
or other entity, accesses the Directory through a client (or | or other entity, accesses the Directory through a client (or | |||
Directory User Agent (DUA)). The client, on behalf of the directory | Directory User Agent (DUA)). The client, on behalf of the directory | |||
skipping to change at line 142 | skipping to change at line 142 | |||
2. Conventions | 2. Conventions | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", and "MAY" in this document are | "SHOULD", "SHOULD NOT", "RECOMMENDED", and "MAY" in this document are | |||
to be interpreted as described in [RFC2119]. | to be interpreted as described in [RFC2119]. | |||
The terms "connection" and "LDAP connection" both refer to the | The terms "connection" and "LDAP connection" both refer to the | |||
underlying transport protocol connection between two protocol peers. | underlying transport protocol connection between two protocol peers. | |||
The term "TLS connection" refers to a TLS-protected LDAP connection. | The term "TLS connection" refers to a TLS-protected LDAP connection. | |||
The terms "association" and "LDAP association" both refer to the | The terms "association" and "LDAP association" both refer to the | |||
association of the LDAP connection and the current authentication and | association of the LDAP connection and its current authentication and | |||
authorization state. | authorization state. | |||
3. Protocol Model | 3. Protocol Model | |||
The general model adopted by this protocol is one of clients | The general model adopted by this protocol is one of clients | |||
performing protocol operations against servers. In this model, a | performing protocol operations against servers. In this model, a | |||
client transmits a protocol request describing the operation to be | client transmits a protocol request describing the operation to be | |||
performed to a server. The server is then responsible for performing | performed to a server. The server is then responsible for performing | |||
the necessary operation(s) in the directory. Upon completion of the | the necessary operation(s) in the directory. Upon completion of the | |||
operation(s), the server returns a response containing any results or | operation(s), the server returns a response containing any results or | |||
skipping to change at line 490 | skipping to change at line 490 | |||
-- 70 reserved for CLDAP -- | -- 70 reserved for CLDAP -- | |||
affectsMultipleDSAs (71), | affectsMultipleDSAs (71), | |||
-- 72-79 unused -- | -- 72-79 unused -- | |||
other (80), | other (80), | |||
... }, | ... }, | |||
-- 81-90 reserved for APIs -- | -- 81-90 reserved for APIs -- | |||
matchedDN LDAPDN, | matchedDN LDAPDN, | |||
diagnosticMessage LDAPString, | diagnosticMessage LDAPString, | |||
referral [3] Referral OPTIONAL } | referral [3] Referral OPTIONAL } | |||
The result codes enumeration is extensible as defined in Section 3.5 | The resultCode enumeration is extensible as defined in Section 3.5 of | |||
of [LDAPIANA]. The meanings of the result codes are given in Appendix | [LDAPIANA]. The meanings of the result codes are given in Appendix A. | |||
A. | If a server detects multiple errors for an operation, only one | |||
resultCode is returned. The server should return the resultCode that | ||||
The diagnosticMessage field of this construct may, at the server's | best indicates the nature of the error encountered. | |||
option, be used to return a string containing a textual, human- | ||||
readable (terminal control and page formatting characters should be | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 9 | Sermersheim Internet-Draft - Expires Jan 2004 Page 9 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
The diagnosticMessage field of this construct may, at the server's | ||||
option, be used to return a string containing a textual, human- | ||||
readable (terminal control and page formatting characters should be | ||||
avoided) diagnostic message. As this diagnostic message is not | avoided) diagnostic message. As this diagnostic message is not | |||
standardized, implementations MUST NOT rely on the values returned. | standardized, implementations MUST NOT rely on the values returned. | |||
If the server chooses not to return a textual diagnostic, the | If the server chooses not to return a textual diagnostic, the | |||
diagnosticMessage field of the LDAPResult type MUST contain a zero | diagnosticMessage field of the LDAPResult type MUST contain a zero | |||
length string. | length string. | |||
For certain result codes (typically, but not restricted to | For certain result codes (typically, but not restricted to | |||
noSuchObject, aliasProblem, invalidDNSyntax and | noSuchObject, aliasProblem, invalidDNSyntax and | |||
aliasDereferencingProblem), the matchedDN field is set to the name of | aliasDereferencingProblem), the matchedDN field is set to the name of | |||
the lowest entry (object or alias) in the directory that was matched. | the lowest entry (object or alias) in the directory that was matched. | |||
skipping to change at line 551 | skipping to change at line 552 | |||
If the client wishes to progress the operation, it MUST follow the | If the client wishes to progress the operation, it MUST follow the | |||
referral by contacting one of the servers. If multiple URLs are | referral by contacting one of the servers. If multiple URLs are | |||
present, the client assumes that any URL may be used to progress the | present, the client assumes that any URL may be used to progress the | |||
operation. | operation. | |||
URLs for servers implementing the LDAP protocol are written according | URLs for servers implementing the LDAP protocol are written according | |||
to [LDAPURL]. If an alias was dereferenced, the <dn> part of the URL | to [LDAPURL]. If an alias was dereferenced, the <dn> part of the URL | |||
MUST be present, with the new target object name. If the <dn> part is | MUST be present, with the new target object name. If the <dn> part is | |||
present, the client MUST use this name in its next request to | present, the client MUST use this name in its next request to | |||
progress the operation, and if it is not present the client will use | progress the operation, and if it is not present the client will use | |||
the same name as in the original request. Some servers (e.g. | ||||
participating in distributed indexing) may provide a different filter | ||||
in a referral for a search operation. If the filter part of the URL | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 10 | Sermersheim Internet-Draft - Expires Jan 2004 Page 10 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
the same name as in the original request. Some servers (e.g. | ||||
participating in distributed indexing) may provide a different filter | ||||
in a referral for a search operation. If the filter part of the URL | ||||
is present in an LDAPURL, the client MUST use this filter in its next | is present in an LDAPURL, the client MUST use this filter in its next | |||
request to progress this search, and if it is not present the client | request to progress this search, and if it is not present the client | |||
MUST use the same filter as it used for that search. Other aspects of | MUST use the same filter as it used for that search. Other aspects of | |||
the new request may be the same or different as the request which | the new request may be the same or different as the request which | |||
generated the referral. | generated the referral. | |||
Note that UTF-8 characters appearing in a DN or search filter may not | Note that UTF-8 characters appearing in a DN or search filter may not | |||
be legal for URLs (e.g. spaces) and MUST be escaped using the % | be legal for URLs (e.g. spaces) and MUST be escaped using the % | |||
method in [RFC2396]. | method in [RFC2396]. | |||
skipping to change at line 606 | skipping to change at line 607 | |||
If the server does not recognize the control type or it is not | If the server does not recognize the control type or it is not | |||
appropriate for the operation, and the criticality field is TRUE, the | appropriate for the operation, and the criticality field is TRUE, the | |||
server MUST NOT perform the operation, and MUST instead return the | server MUST NOT perform the operation, and MUST instead return the | |||
resultCode unavailableCriticalExtension. | resultCode unavailableCriticalExtension. | |||
If the control is unrecognized or inappropriate but the criticality | If the control is unrecognized or inappropriate but the criticality | |||
field is FALSE, the server MUST ignore the control. | field is FALSE, the server MUST ignore the control. | |||
The controlValue contains any information associated with the | The controlValue contains any information associated with the | |||
control, and its format is defined for the control. Implementations | control. Its format is defined by the specification of the control. | |||
MUST be prepared to handle arbitrary contents of the controlValue | Implementations MUST be prepared to handle arbitrary contents of the | |||
octet string, including zero bytes. It is absent only if there is no | ||||
value information which is associated with a control of its type. | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 11 | Sermersheim Internet-Draft - Expires Jan 2004 Page 11 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
controlValue octet string, including zero bytes. It is absent only if | ||||
there is no value information which is associated with a control of | ||||
its type. controlValues that are defined in terms of ASN.1 and BER | ||||
encoded according to Section 5.1, also follow the extensibility rules | ||||
in Section 4. | ||||
This document does not specify any controls. Controls may be | This document does not specify any controls. Controls may be | |||
specified in other documents. The specification of a control consists | specified in other documents. The specification of a control consists | |||
of: | of: | |||
- the OBJECT IDENTIFIER assigned to the control, | - the OBJECT IDENTIFIER assigned to the control, | |||
- whether the control is always noncritical, always critical, or | - whether the control is always noncritical, always critical, or | |||
critical at the client's option, | critical at the client's option, | |||
- the format of the controlValue contents of the control, | - the format of the controlValue contents of the control, | |||
skipping to change at line 661 | skipping to change at line 666 | |||
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 { | AuthenticationChoice ::= CHOICE { | |||
simple [0] OCTET STRING, | simple [0] OCTET STRING, | |||
-- 1 and 2 reserved | -- 1 and 2 reserved | |||
sasl [3] SaslCredentials, | sasl [3] SaslCredentials, | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 12 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
... } | ... } | |||
SaslCredentials ::= SEQUENCE { | SaslCredentials ::= SEQUENCE { | |||
mechanism LDAPString, | mechanism LDAPString, | |||
credentials OCTET STRING OPTIONAL } | credentials OCTET STRING OPTIONAL } | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 12 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Parameters of the Bind Request are: | Parameters of the Bind Request are: | |||
- version: A version number indicating the version of the protocol | - version: A version number indicating the version of the protocol | |||
to be used in this protocol association. This document describes | to be used in this protocol association. This document describes | |||
version 3 of the LDAP protocol. Note that there is no version | version 3 of the LDAP protocol. Note that there is no version | |||
negotiation, and the client just sets this parameter to the | negotiation, and the client just sets this parameter to the | |||
version it desires. If the server does not support the specified | version it desires. If the server does not support the specified | |||
version, it responds with protocolError in the resultCode field of | version, it MUST respond with protocolError in the resultCode | |||
the BindResponse. | field of the BindResponse. | |||
- name: The name of the directory object that the client wishes to | - name: The name of the directory object that the client wishes to | |||
bind as. This field may take on a null value (a zero length | bind as. This field may take on a null value (a zero length | |||
string) for the purposes of anonymous binds ([AuthMeth] section 7) | string) for the purposes of anonymous binds ([AuthMeth] section 7) | |||
or when using SASL authentication ([AuthMeth] section 4.3). Server | or when using SASL authentication ([AuthMeth] section 4.3). Server | |||
behavior is undefined when the name is a null value, simple | behavior is undefined when the name is a null value, simple | |||
authentication is used, and a password is specified. The server | authentication is used, and a password is specified. The server | |||
SHOULD NOT perform any alias dereferencing in determining the | SHOULD NOT perform any alias dereferencing in determining the | |||
object to bind as. | object to bind as. | |||
skipping to change at line 710 | skipping to change at line 716 | |||
Authorization is the use of this authentication information when | Authorization is the use of this authentication information when | |||
performing operations. Authorization MAY be affected by factors | performing operations. Authorization MAY be affected by factors | |||
outside of the LDAP Bind Request, such as lower layer security | outside of the LDAP Bind Request, such as lower layer security | |||
services. | services. | |||
4.2.1. Processing of the Bind Request | 4.2.1. Processing of the Bind Request | |||
Upon receipt of a BindRequest, the server MUST ensure there are no | Upon receipt of a BindRequest, the server MUST ensure there are no | |||
outstanding operations in progress on the connection (this simplifies | outstanding operations in progress on the connection (this simplifies | |||
server implementation). The server then proceeds to authenticate the | server implementation). To do this, the server may cause them to be | |||
client in either a single-step, or multi-step bind process. Each step | abandoned or allow them to finish. The server then proceeds to | |||
requires the server to return a BindResponse to indicate the status | authenticate the client in either a single-step, or multi-step bind | |||
of authentication. | process. Each step requires the server to return a BindResponse to | |||
indicate the status of authentication. | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 13 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
If the client did not bind before sending a request and receives an | If the client did not bind before sending a request and receives an | |||
operationsError, it may then send a Bind Request. If this also fails | operationsError, it may then send a Bind Request. If this also fails | |||
or the client chooses not to bind on the existing connection, it may | or the client chooses not to bind on the existing connection, it may | |||
close the connection, reopen it and begin again by first sending a | close the connection, reopen it and begin again by first sending a | |||
PDU with a Bind Request. This will aid in interoperating with servers | PDU with a Bind Request. This will aid in interoperating with servers | |||
implementing other versions of LDAP. | implementing other versions of LDAP. | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 13 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Clients MAY send multiple Bind Requests on a connection to change | Clients MAY send multiple Bind Requests on a connection to change | |||
their credentials. Authentication from earlier binds is subsequently | their credentials. Authentication from earlier binds is subsequently | |||
ignored. A failed or abandoned Bind Operation has the effect of | ignored. A failed or abandoned Bind Operation has the effect of | |||
leaving the LDAP association in an anonymous state. To arrive at a | leaving the LDAP association in an anonymous state. To arrive at a | |||
known authentication state after abandoning a bind operation, clients | known authentication state after abandoning a bind operation, clients | |||
may unbind, rebind, or make use of the BindResponse. If a SASL | may unbind, rebind, or make use of the BindResponse. | |||
transfer encryption or integrity mechanism has been negotiated, and | ||||
that mechanism does not support the changing of credentials from one | ||||
identity to another, then the client MUST instead establish a new | ||||
connection. | ||||
For some SASL authentication mechanisms, it may be necessary for the | For some SASL authentication mechanisms, it may be necessary for the | |||
client to invoke the BindRequest multiple times. This is indicated by | client to invoke the BindRequest multiple times. This is indicated by | |||
the server sending a BindResponse with the resultCode set to | the server sending a BindResponse with the resultCode set to | |||
saslBindInProgress. This indicates that the server requires the | saslBindInProgress. This indicates that the server requires the | |||
client to send a new bind request, with the same sasl mechanism, to | client to send a new bind request, with the same sasl mechanism, to | |||
continue the authentication process. If at any stage the client | continue the authentication process. If at any stage the client | |||
wishes to abort the bind process it MAY unbind and then drop the | wishes to abort the bind process it MAY unbind and then drop the | |||
underlying connection. Clients MUST NOT invoke operations between two | underlying connection. Clients MUST NOT invoke operations between two | |||
Bind Requests made as part of a multi-stage bind. | Bind Requests made as part of a multi-stage bind. | |||
skipping to change at line 775 | skipping to change at line 778 | |||
status of the client's request for authentication. | status of the client's request for authentication. | |||
A successful bind operation is indicated by a BindResponse with a | A successful bind operation is indicated by a BindResponse with a | |||
resultCode set to success (0). Otherwise, an appropriate resultCode | resultCode set to success (0). Otherwise, an appropriate resultCode | |||
is set in the BindResponse. For bind, the protocolError (2) | is set in the BindResponse. For bind, the protocolError (2) | |||
resultCode may be used to indicate that the version number supplied | resultCode may be used to indicate that the version number supplied | |||
by the client is unsupported. | by the client is unsupported. | |||
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 | ||||
with earlier versions of LDAP, in which the bind was always the first | ||||
operation, and there was no negotiation.) | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 14 | Sermersheim Internet-Draft - Expires Jan 2004 Page 14 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
unwilling to accept further operations. (This is for compatibility | ||||
with earlier versions of LDAP, in which the bind was always the first | ||||
operation, and there was no negotiation.) | ||||
The serverSaslCreds are used as part of a SASL-defined bind mechanism | The serverSaslCreds are used as part of a SASL-defined bind mechanism | |||
to allow the client to authenticate the server to which it is | to allow the client to authenticate the server to which it is | |||
communicating, or to perform "challenge-response" authentication. If | communicating, or to perform "challenge-response" authentication. If | |||
the client bound with the simple choice, or the SASL mechanism does | the client bound with the simple choice, or the SASL mechanism does | |||
not require the server to return information to the client, then this | not require the server to return information to the client, then this | |||
field is not to be included in the result. | field is not to be included in the result. | |||
4.3. Unbind Operation | 4.3. Unbind Operation | |||
The function of the Unbind Operation is to terminate an LDAP | The function of the Unbind Operation is to terminate an LDAP | |||
skipping to change at line 829 | skipping to change at line 833 | |||
One unsolicited notification (Notice of Disconnection) is defined in | One unsolicited notification (Notice of Disconnection) is defined in | |||
this document. | this document. | |||
4.4.1. Notice of Disconnection | 4.4.1. Notice of Disconnection | |||
This notification may be used by the server to advise the client that | This notification may be used by the server to advise the client that | |||
the server is about to close the connection due to an error | the server is about to close the connection due to an error | |||
condition. Note that this notification is NOT a response to an unbind | condition. Note that this notification is NOT a response to an unbind | |||
requested by the client: the server MUST follow the procedures of | requested by the client: the server MUST follow the procedures of | |||
section 4.3. This notification is intended to assist clients in | section 4.3. This notification is intended to assist clients in | |||
distinguishing between an error condition and a transient network | ||||
failure. As with a connection close due to network failure, the | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 15 | Sermersheim Internet-Draft - Expires Jan 2004 Page 15 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
distinguishing between an error condition and a transient network | ||||
failure. As with a connection close due to network failure, the | ||||
client MUST NOT assume that any outstanding requests which modified | client MUST NOT assume that any outstanding requests which modified | |||
the directory have succeeded or failed. | the directory have succeeded or failed. | |||
The responseName is 1.3.6.1.4.1.1466.20036, the response field is | The responseName is 1.3.6.1.4.1.1466.20036, the response field is | |||
absent, and the resultCode is used to indicate the reason for the | absent, and the resultCode is used to indicate the reason for the | |||
disconnection. | disconnection. | |||
The following resultCode values have these meanings when used in this | The following resultCode values have these meanings when used in this | |||
notification: | notification: | |||
- protocolError: The server has received data from the client in | - protocolError: The server has received data from the client in | |||
which the LDAPMessage structure could not be parsed. | which the LDAPMessage structure could not be parsed. | |||
- strongAuthRequired: The server has detected that an established | - strongAuthRequired: The server has detected that an establish | |||
underlying security association protecting communication between | security association between the client and server has | |||
the client and server has unexpectedly failed or been compromised. | unexpectedly failed or been compromised, or that the server now | |||
requires the client to authenticate using a strong(er) mechanism. | ||||
- unavailable: This server will stop accepting new connections and | - unavailable: This server will stop accepting new connections and | |||
operations on all existing connections, and be unavailable for an | operations on all existing connections, and be unavailable for an | |||
extended period of time. The client may make use of an alternative | extended period of time. The client may make use of an alternative | |||
server. | server. | |||
After sending this notice, the server MUST close the connection. | After sending this notice, the server MUST close the connection. | |||
After receiving this notice, the client MUST NOT transmit any further | After receiving this notice, the client MUST NOT transmit any further | |||
on the connection, and may abruptly close the connection. | on the connection, and may abruptly close the connection. | |||
skipping to change at line 884 | skipping to change at line 889 | |||
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), | |||
timeLimit INTEGER (0 .. maxInt), | ||||
typesOnly BOOLEAN, | ||||
filter Filter, | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 16 | Sermersheim Internet-Draft - Expires Jan 2004 Page 16 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
timeLimit INTEGER (0 .. maxInt), | ||||
typesOnly BOOLEAN, | ||||
filter Filter, | ||||
attributes AttributeDescriptionList } | attributes AttributeDescriptionList } | |||
Filter ::= CHOICE { | Filter ::= CHOICE { | |||
and [0] SET SIZE (1..MAX) OF Filter, | and [0] SET SIZE (1..MAX) OF Filter, | |||
or [1] SET SIZE (1..MAX) OF Filter, | or [1] SET SIZE (1..MAX) OF Filter, | |||
not [2] Filter, | not [2] Filter, | |||
equalityMatch [3] AttributeValueAssertion, | equalityMatch [3] AttributeValueAssertion, | |||
substrings [4] SubstringFilter, | substrings [4] SubstringFilter, | |||
greaterOrEqual [5] AttributeValueAssertion, | greaterOrEqual [5] AttributeValueAssertion, | |||
lessOrEqual [6] AttributeValueAssertion, | lessOrEqual [6] AttributeValueAssertion, | |||
skipping to change at line 942 | skipping to change at line 947 | |||
neverDerefAliases: Do not dereference aliases in searching | neverDerefAliases: Do not dereference aliases in searching | |||
or in locating the base object of the search. | or in locating the base object of the search. | |||
derefInSearching: While searching, dereference any alias | derefInSearching: While searching, dereference any alias | |||
object subordinate to the base object which is also in the | object subordinate to the base object which is also in the | |||
search scope. The filter is applied to the dereferenced | search scope. The filter is applied to the dereferenced | |||
object(s). If the search scope is wholeSubtree, the search | object(s). If the search scope is wholeSubtree, the search | |||
continues in the subtree of any dereferenced object. | continues in the subtree of any dereferenced object. | |||
Aliases in that subtree are also dereferenced. Servers | Aliases in that subtree are also dereferenced. Servers | |||
SHOULD detect looping in this process to prevent denial of | ||||
service attacks and duplicate entries. | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 17 | Sermersheim Internet-Draft - Expires Jan 2004 Page 17 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
SHOULD detect looping in this process to prevent denial of | ||||
service attacks and duplicate entries. | ||||
derefFindingBaseObj: Dereference aliases in locating the | derefFindingBaseObj: Dereference aliases in locating the | |||
base object of the search, but not when searching | base object of the search, but not when searching | |||
subordinates of the base object. | subordinates of the base object. | |||
derefAlways: Dereference aliases both in searching and in | derefAlways: Dereference aliases both in searching and in | |||
locating the base object of the search. | locating the base object of the search. | |||
- sizeLimit: A size limit that restricts the maximum number of | - sizeLimit: A size limit that restricts the maximum number of | |||
entries to be returned as a result of the search. A value of 0 in | entries to be returned as a result of the search. A value of 0 in | |||
this field indicates that no client-requested size limit | this field indicates that no client-requested size limit | |||
skipping to change at line 1000 | skipping to change at line 1006 | |||
to FALSE or Undefined, then the entry is ignored for the search. | to FALSE or Undefined, then the entry is ignored for the search. | |||
A filter of the "and" choice is TRUE if all the filters in the SET | A filter of the "and" choice is TRUE if all the filters in the SET | |||
OF evaluate to TRUE, FALSE if at least one filter is FALSE, and | OF evaluate to TRUE, FALSE if at least one filter is FALSE, and | |||
otherwise Undefined. A filter of the "or" choice is FALSE if all | otherwise Undefined. A filter of the "or" choice is FALSE if all | |||
of the filters in the SET OF evaluate to FALSE, TRUE if at least | of the filters in the SET OF evaluate to FALSE, TRUE if at least | |||
one filter is TRUE, and Undefined otherwise. A filter of the "not" | one filter is TRUE, and Undefined otherwise. A filter of the "not" | |||
choice is TRUE if the filter being negated is FALSE, FALSE if it | choice is TRUE if the filter being negated is FALSE, FALSE if it | |||
is TRUE, and Undefined if it is Undefined. | is TRUE, and Undefined if it is Undefined. | |||
The present match evaluates to TRUE where there is an attribute or | ||||
subtype of the specified attribute description present in an | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 18 | Sermersheim Internet-Draft - Expires Jan 2004 Page 18 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
The present match evaluates to TRUE where there is an attribute or | ||||
subtype of the specified attribute description present in an | ||||
entry, and FALSE otherwise (including a presence test with an | entry, and FALSE otherwise (including a presence test with an | |||
unrecognized attribute description.) | unrecognized attribute description.) | |||
The matching rule for equalityMatch filter items is defined by the | The matching rule for equalityMatch filter items is defined by the | |||
EQUALITY matching rule for the attribute type. | EQUALITY matching rule for the attribute type. | |||
The matching rule for AssertionValues in a substrings filter item | The matching rule for AssertionValues in a substrings filter item | |||
is defined by the SUBSTR matching rule for the attribute type. | is defined by the SUBSTR matching rule for the attribute type. | |||
The matching rule for greaterOrEqual and lessOrEqual filter items | The matching rule for greaterOrEqual and lessOrEqual filter items | |||
skipping to change at line 1058 | skipping to change at line 1063 | |||
greaterOrEqual, lessOrEqual, approxMatch or extensibleMatch filter | greaterOrEqual, lessOrEqual, approxMatch or extensibleMatch filter | |||
is not recognized by the server, a matching rule id in the | is not recognized by the server, a matching rule id in the | |||
extensibleMatch is not recognized by the server, the assertion | extensibleMatch is not recognized by the server, the assertion | |||
value cannot be parsed, or the type of filtering requested is not | value cannot be parsed, or the type of filtering requested is not | |||
implemented, then the filter is Undefined. Thus for example if a | implemented, then the filter is Undefined. Thus for example if a | |||
server did not recognize the attribute type shoeSize, a filter of | server did not recognize the attribute type shoeSize, a filter of | |||
(shoeSize=*) would evaluate to FALSE, and the filters | (shoeSize=*) would evaluate to FALSE, and the filters | |||
(shoeSize=12), (shoeSize>=12) and (shoeSize<=12) would evaluate to | (shoeSize=12), (shoeSize>=12) and (shoeSize<=12) would evaluate to | |||
Undefined. | Undefined. | |||
Servers MUST NOT return errors if attribute descriptions or | ||||
matching rule ids are not recognized, or assertion values cannot | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 19 | Sermersheim Internet-Draft - Expires Jan 2004 Page 19 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Servers MUST NOT return errors if attribute descriptions or | ||||
matching rule ids are not recognized, or assertion values cannot | ||||
be parsed. More details of filter processing are given in section | be parsed. More details of filter processing are given in section | |||
7.8 of [X.511]. | 7.8 of [X.511]. | |||
- attributes: A list of the attributes to be returned from each | - attributes: A list of the attributes to be returned from each | |||
entry which matches the search filter. There are two special | entry which matches the search filter. There are two special | |||
values which may be used: an empty list with no attributes, and | values which may be used: an empty list with no attributes, and | |||
the attribute description string "*". Both of these signify that | the attribute description string "*". Both of these signify that | |||
all user attributes are to be returned. (The "*" allows the client | all user attributes are to be returned. (The "*" allows the client | |||
to request all user attributes in addition to any specified | to request all user attributes in addition to any specified | |||
operational attributes). | operational attributes). | |||
skipping to change at line 1114 | skipping to change at line 1118 | |||
The results of the search attempted by the server upon receipt of a | The results of the search attempted by the server upon receipt of a | |||
Search Request are returned in Search Responses, which are LDAP | Search Request are returned in Search Responses, which are LDAP | |||
messages containing either SearchResultEntry, SearchResultReference, | messages containing either SearchResultEntry, SearchResultReference, | |||
or SearchResultDone data types. | or SearchResultDone data types. | |||
SearchResultEntry ::= [APPLICATION 4] SEQUENCE { | SearchResultEntry ::= [APPLICATION 4] SEQUENCE { | |||
objectName LDAPDN, | objectName LDAPDN, | |||
attributes PartialAttributeList } | attributes PartialAttributeList } | |||
PartialAttributeList ::= SEQUENCE OF SEQUENCE { | ||||
type AttributeDescription, | ||||
vals SET OF AttributeValue } | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 20 | Sermersheim Internet-Draft - Expires Jan 2004 Page 20 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
PartialAttributeList ::= SEQUENCE OF SEQUENCE { | ||||
type AttributeDescription, | ||||
vals SET OF AttributeValue } | ||||
-- implementors should note that the PartialAttributeList may | -- implementors should note that the PartialAttributeList may | |||
-- have zero elements (if none of the attributes of that entry | -- have zero elements (if none of the attributes of that entry | |||
-- were requested, or could be returned), and that the vals set | -- were requested, or could be returned), and that the vals set | |||
-- may also have zero elements (if types only was requested, or | -- may also have zero elements (if types only was requested, or | |||
-- all values were excluded from the result.) | -- all values were excluded from the result.) | |||
SearchResultReference ::= [APPLICATION 19] SEQUENCE OF LDAPURL | SearchResultReference ::= [APPLICATION 19] SEQUENCE OF LDAPURL | |||
-- at least one LDAPURL element must be present | -- at least one LDAPURL element must be present | |||
SearchResultDone ::= [APPLICATION 5] LDAPResult | SearchResultDone ::= [APPLICATION 5] LDAPResult | |||
Upon receipt of a Search Request, a server will perform the necessary | Upon receipt of a Search Request, a server will perform the necessary | |||
search of the DIT. | search of the DIT. | |||
If the LDAP association is operating over a connection-oriented | The server will return to the client a sequence of responses in | |||
transport such as TCP, the server will return to the client a | separate LDAP messages. There may be zero or more responses | |||
sequence of responses in separate LDAP messages. There may be zero or | containing SearchResultEntry, one for each entry found during the | |||
more responses containing SearchResultEntry, one for each entry found | search. There may also be zero or more responses containing | |||
during the search. There may also be zero or more responses | SearchResultReference, one for each area not explored by this server | |||
containing SearchResultReference, one for each area not explored by | during the search. The SearchResultEntry and SearchResultReference | |||
this server during the search. The SearchResultEntry and | PDUs may come in any order. Following all the SearchResultReference | |||
SearchResultReference PDUs may come in any order. Following all the | responses and all SearchResultEntry responses to be returned by the | |||
SearchResultReference responses and all SearchResultEntry responses | server, the server will return a response containing the | |||
to be returned by the server, the server will return a response | SearchResultDone, which contains an indication of success, or | |||
containing the SearchResultDone, which contains an indication of | 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 | |||
appropriate attributes as specified in the attributes field of the | appropriate attributes as specified in the attributes field of the | |||
Search Request. Return of attributes is subject to access control and | Search Request. Return of attributes is subject to access control and | |||
other administrative policy. | other administrative policy. | |||
Some attributes may be constructed by the server and appear in a | Some attributes may be constructed by the server and appear in a | |||
SearchResultEntry attribute list, although they are not stored | SearchResultEntry attribute list, although they are not stored | |||
attributes of an entry. Clients SHOULD NOT assume that all attributes | attributes of an entry. Clients SHOULD NOT assume that all attributes | |||
can be modified, even if permitted by access control. | can be modified, even if permitted by access control. | |||
skipping to change at line 1172 | skipping to change at line 1174 | |||
attribute type by specifying the object identifier, in ldapOID form, | attribute type by specifying the object identifier, in ldapOID form, | |||
as the value of attribute type. If the server determines that | as the value of attribute type. If the server determines that | |||
returning a textual name will cause interoperability problems, it | returning a textual name will cause interoperability problems, it | |||
SHOULD return the ldapOID form of the attribute type. | SHOULD return the ldapOID form of the attribute type. | |||
4.5.3. Continuation References in the Search Result | 4.5.3. Continuation References in the Search Result | |||
If the server was able to locate the entry referred to by the | If the server was able to locate the entry referred to by the | |||
baseObject but was unable to search all the entries in the scope at | baseObject but was unable to search all the entries in the scope at | |||
and under the baseObject, the server may return one or more | and under the baseObject, the server may return one or more | |||
SearchResultReference entries, each containing a reference to another | ||||
set of servers for continuing the operation. A server MUST NOT return | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 21 | Sermersheim Internet-Draft - Expires Jan 2004 Page 21 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
SearchResultReference entries, each containing a reference to another | ||||
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. | |||
If a server holds a copy or partial copy of the subordinate naming | If a server holds a copy or partial copy of the subordinate naming | |||
context, it may use the search filter to determine whether or not to | context, it may use the search filter to determine whether or not to | |||
return a SearchResultReference response. Otherwise | return a SearchResultReference response. Otherwise | |||
SearchResultReference responses are always returned when in scope. | SearchResultReference responses are always returned when in scope. | |||
The SearchResultReference is of the same data type as the Referral. | The SearchResultReference is of the same data type as the Referral. | |||
skipping to change at line 1229 | skipping to change at line 1231 | |||
a shadow), and that LDAP-capable server (hostd) holds the subtree | a shadow), and that LDAP-capable server (hostd) holds the subtree | |||
"OU=Roles,DC=Example,DC=NET". If a subtree search of | "OU=Roles,DC=Example,DC=NET". If a subtree search of | |||
"DC=Example,DC=NET" is requested to the contacted server, it may | "DC=Example,DC=NET" is requested to the contacted server, it may | |||
return the following: | return the following: | |||
SearchResultEntry for DC=Example,DC=NET | SearchResultEntry for DC=Example,DC=NET | |||
SearchResultEntry for CN=Manager,DC=Example,DC=NET | SearchResultEntry for CN=Manager,DC=Example,DC=NET | |||
SearchResultReference { | SearchResultReference { | |||
ldap://hostb/OU=People,DC=Example,DC=NET | ldap://hostb/OU=People,DC=Example,DC=NET | |||
ldap://hostc/OU=People,DC=Example,DC=NET | ldap://hostc/OU=People,DC=Example,DC=NET | |||
} | ||||
SearchResultReference { | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 22 | Sermersheim Internet-Draft - Expires Jan 2004 Page 22 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
} | ||||
SearchResultReference { | ||||
ldap://hostd/OU=Roles,DC=Example,DC=NET | ldap://hostd/OU=Roles,DC=Example,DC=NET | |||
} | } | |||
SearchResultDone (success) | SearchResultDone (success) | |||
Client implementors should note that when following a | Client implementors should note that when following a | |||
SearchResultReference, additional SearchResultReference may be | SearchResultReference, additional SearchResultReference may be | |||
generated. Continuing the example, if the client contacted the server | generated. Continuing the example, if the client contacted the server | |||
(hostb) and issued the search for the subtree | (hostb) and issued the search for the subtree | |||
"OU=People,DC=Example,DC=NET", the server might respond as follows: | "OU=People,DC=Example,DC=NET", the server might respond as follows: | |||
skipping to change at line 1286 | skipping to change at line 1288 | |||
modification AttributeTypeAndValues } } | modification AttributeTypeAndValues } } | |||
AttributeTypeAndValues ::= SEQUENCE { | AttributeTypeAndValues ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
Parameters of the Modify Request are: | Parameters of the Modify Request are: | |||
- object: The object to be modified. The value of this field | - object: The object to be modified. The value of this field | |||
contains the DN of the entry to be modified. The server will not | contains the DN of the entry to be modified. The server will not | |||
perform any alias dereferencing in determining the object to be | ||||
modified. | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 23 | Sermersheim Internet-Draft - Expires Jan 2004 Page 23 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
perform any alias dereferencing in determining the object to be | ||||
modified. | ||||
- modification: A list of modifications to be performed on the | - modification: A list of modifications to be performed on the | |||
entry. The entire list of entry modifications MUST be performed in | entry. The entire list of entry modifications MUST be performed in | |||
the order they are listed, as a single atomic operation. While | the order they are listed, as a single atomic operation. While | |||
individual modifications may violate the directory schema, the | individual modifications may violate the directory schema, the | |||
resulting entry after the entire list of modifications is | resulting entry after the entire list of modifications is | |||
performed MUST conform to the requirements of the directory | performed MUST conform to the requirements of the directory | |||
schema. The values that may be taken on by the 'operation' field | schema. The values that may be taken on by the 'operation' field | |||
in each modification construct have the following semantics | in each modification construct have the following semantics | |||
respectively: | respectively: | |||
skipping to change at line 1342 | skipping to change at line 1345 | |||
performed if the Modify Response indicates successful completion of | performed if the Modify Response indicates successful completion of | |||
the Modify Operation. If the association changes or the connection | the Modify Operation. If the association changes or the connection | |||
fails, whether the modification occurred or not is indeterminate. | fails, whether the modification occurred or not is indeterminate. | |||
The Modify Operation cannot be used to remove from an entry any of | The Modify Operation cannot be used to remove from an entry any of | |||
its distinguished values, those values which form the entry's | its distinguished values, those values which form the entry's | |||
relative distinguished name. An attempt to do so will result in the | relative distinguished name. An attempt to do so will result in the | |||
server returning the error notAllowedOnRDN. The Modify DN Operation | server returning the error notAllowedOnRDN. The Modify DN Operation | |||
described in section 4.9 is used to rename an entry. | described in section 4.9 is used to rename an entry. | |||
Note that due to the simplifications made in LDAP, there is not a | ||||
direct mapping of the modifications in an LDAP ModifyRequest onto the | ||||
EntryModifications of a DAP ModifyEntry operation, and different | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 24 | Sermersheim Internet-Draft - Expires Jan 2004 Page 24 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Note that due to the simplifications made in LDAP, there is not a | ||||
direct mapping of the modifications in an LDAP ModifyRequest onto the | ||||
EntryModifications of a DAP ModifyEntry operation, and different | ||||
implementations of LDAP-DAP gateways may use different means of | implementations of LDAP-DAP gateways may use different means of | |||
representing the change. If successful, the final effect of the | representing the change. If successful, the final effect of the | |||
operations on the entry MUST be identical. | operations on the entry MUST be identical. | |||
4.7. Add Operation | 4.7. Add Operation | |||
The Add Operation allows a client to request the addition of an entry | The Add Operation allows a client to request the addition of an entry | |||
into the directory. The Add Request is defined as follows: | into the directory. The Add Request is defined as follows: | |||
AddRequest ::= [APPLICATION 8] SEQUENCE { | AddRequest ::= [APPLICATION 8] SEQUENCE { | |||
skipping to change at line 1399 | skipping to change at line 1401 | |||
Server implementations SHOULD NOT restrict where entries can be | Server implementations SHOULD NOT restrict where entries can be | |||
located in the directory unless DIT structure rules are in place. | located in the directory unless DIT structure rules are in place. | |||
Some servers MAY allow the administrator to restrict the classes of | Some servers MAY allow the administrator to restrict the classes of | |||
entries which can be added to the directory. | entries which can be added to the directory. | |||
Upon receipt of an Add Request, a server will attempt to add the | Upon receipt of an Add Request, a server will attempt to add the | |||
requested entry. The result of the add attempt will be returned to | requested entry. The result of the add attempt will be returned to | |||
the client in the Add Response, defined as follows: | the client in the Add Response, defined as follows: | |||
AddResponse ::= [APPLICATION 9] LDAPResult | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 25 | Sermersheim Internet-Draft - Expires Jan 2004 Page 25 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
AddResponse ::= [APPLICATION 9] LDAPResult | ||||
A response of success indicates that the new entry is present in the | A response of success indicates that the new entry is present in the | |||
directory. | directory. | |||
4.8. Delete Operation | 4.8. Delete Operation | |||
The Delete Operation allows a client to request the removal of an | The Delete Operation allows a client to request the removal of an | |||
entry from the directory. The Delete Request is defined as follows: | entry from the directory. The Delete Request is defined as follows: | |||
DelRequest ::= [APPLICATION 10] LDAPDN | DelRequest ::= [APPLICATION 10] LDAPDN | |||
skipping to change at line 1453 | skipping to change at line 1455 | |||
Parameters of the Modify DN Request are: | Parameters of the Modify DN Request are: | |||
- entry: the Distinguished Name of the entry to be changed. This | - entry: the Distinguished Name of the entry to be changed. This | |||
entry may or may not have subordinate entries. Note that the | entry may or may not have subordinate entries. Note that the | |||
server will not dereference any aliases in locating the entry to | server will not dereference any aliases in locating the entry to | |||
be changed. | be changed. | |||
- newrdn: the RDN that will form the leftmost component of the new | - newrdn: the RDN that will form the leftmost component of the new | |||
name of the entry. | name of the entry. | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 26 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- deleteoldrdn: a boolean parameter that controls whether the old | - deleteoldrdn: a boolean parameter that controls whether the old | |||
RDN attribute values are to be retained as attributes of the | RDN attribute values are to be retained as attributes of the | |||
entry, or deleted from the entry. | entry, or deleted from the entry. | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 26 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
- newSuperior: if present, this is the Distinguished Name of an | - newSuperior: if present, this is the Distinguished Name of an | |||
existing object entry which becomes the immediate superior | existing object entry which becomes the immediate superior | |||
(parent)of the existing entry. | (parent)of the existing entry. | |||
The result of the name change attempted by the server upon receipt of | The result of the name change attempted by the server upon receipt of | |||
a Modify DN Request is returned in the Modify DN Response, defined as | a Modify DN Request is returned in the Modify DN Response, defined as | |||
follows: | follows: | |||
ModifyDNResponse ::= [APPLICATION 13] LDAPResult | ModifyDNResponse ::= [APPLICATION 13] LDAPResult | |||
skipping to change at line 1509 | skipping to change at line 1511 | |||
arbitrary movements of entries and subtrees between servers. | arbitrary movements of entries and subtrees between servers. | |||
4.10. Compare Operation | 4.10. Compare Operation | |||
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 } | ||||
Parameters of the Compare Request are: | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 27 | Sermersheim Internet-Draft - Expires Jan 2004 Page 27 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
ava AttributeValueAssertion } | ||||
Parameters of the Compare Request are: | ||||
- entry: the name of the entry to be compared with. Note that the | - entry: the name of the entry to be compared with. Note that the | |||
server SHOULD NOT dereference any aliases in locating the entry to | server SHOULD NOT dereference any aliases in locating the entry to | |||
be compared with. | be compared with. | |||
- ava: the assertion with which an attribute in the entry is to be | - ava: the assertion with which an attribute in the entry is to be | |||
compared. | compared. | |||
The result of the compare attempted by the server upon receipt of a | The result of the compare attempted by the server upon receipt of a | |||
Compare Request is returned in the Compare Response, defined as | Compare Request is returned in the Compare Response, defined as | |||
follows: | follows: | |||
skipping to change at line 1552 | skipping to change at line 1555 | |||
that the server abandon an outstanding operation. The Abandon Request | that the server abandon an outstanding operation. The Abandon Request | |||
is defined as follows: | is defined as follows: | |||
AbandonRequest ::= [APPLICATION 16] MessageID | AbandonRequest ::= [APPLICATION 16] MessageID | |||
The MessageID MUST be that of an operation which was requested | The MessageID MUST be that of an operation which was requested | |||
earlier in this LDAP association. The abandon request itself has its | earlier in this LDAP association. The abandon request itself has its | |||
own message id. This is distinct from the id of the earlier operation | own message id. This is distinct from the id of the earlier operation | |||
being abandoned. | being abandoned. | |||
There is no response defined in the Abandon Operation. Upon | There is no response defined in the Abandon operation. Upon reciept | |||
transmission of an Abandon Operation, the server MAY abandon the | of an AbandonRequest, the server MAY abandon the operation identified | |||
operation identified by the Message ID in the Abandon Request. | by the MessageID. Operation responses are not sent for successfully | |||
Operation responses are not sent for successfully abandoned | abandoned operations, thus a client SHOULD NOT use the Abandon | |||
operations. Clients can determine that an operation has been | operation when it needs an indication of whether the operation was | |||
abandoned by performing a subsequent bind operation. | abandoned. For example, if a client performs an update operation | |||
(Add, Modify, or ModifyDN), and it needs to know whether the | ||||
directory has changed due to the operation, it should not use the | ||||
Abandon operation to cancel the update operation. | ||||
Abandon and Unbind operations cannot be abandoned. The ability to | Abandon and Unbind operations cannot be abandoned. The ability to | |||
abandon other (particularly update) operations is at the discretion | abandon other (particularly update) operations is at the discretion | |||
of the server. | of the server. | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 28 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
In the event that a server receives an Abandon Request on a Search | In the event that a server receives an Abandon Request on a Search | |||
Operation in the midst of transmitting responses to the search, that | Operation in the midst of transmitting responses to the search, that | |||
server MUST cease transmitting entry responses to the abandoned | server MUST cease transmitting entry responses to the abandoned | |||
request immediately, and MUST NOT send the SearchResponseDone. Of | request immediately, and MUST NOT send the SearchResponseDone. Of | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 28 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
course, the server MUST ensure that only properly encoded LDAPMessage | course, the server MUST ensure that only properly encoded LDAPMessage | |||
PDUs are transmitted. | PDUs are transmitted. | |||
Clients MUST NOT send abandon requests for the same operation | Clients MUST NOT send abandon requests for the same operation | |||
multiple times, and MUST also be prepared to receive results from | multiple times, and MUST also be prepared to receive results from | |||
operations it has abandoned (since these may have been in transit | operations it has abandoned (since these may have been in transit | |||
when the abandon was requested, or are not able to be abandoned). | when the abandon was requested, or are not able to be abandoned). | |||
Servers MUST discard abandon requests for message IDs they do not | Servers MUST discard abandon requests for message IDs they do not | |||
recognize, for operations which cannot be abandoned, and for | recognize, for operations which cannot be abandoned, and for | |||
skipping to change at line 1610 | skipping to change at line 1615 | |||
IDENTIFIER corresponding to the request. The requestValue is | IDENTIFIER corresponding to the request. The requestValue is | |||
information in a form defined by that request, encapsulated inside an | information in a form defined by that request, encapsulated inside an | |||
OCTET STRING. | OCTET STRING. | |||
The server will respond to this with an LDAPMessage containing the | The server will respond to this with an LDAPMessage containing the | |||
ExtendedResponse. | ExtendedResponse. | |||
ExtendedResponse ::= [APPLICATION 24] SEQUENCE { | ExtendedResponse ::= [APPLICATION 24] SEQUENCE { | |||
COMPONENTS OF LDAPResult, | COMPONENTS OF LDAPResult, | |||
responseName [10] LDAPOID OPTIONAL, | responseName [10] LDAPOID OPTIONAL, | |||
response [11] OCTET STRING OPTIONAL } | responseValue [11] OCTET STRING OPTIONAL } | |||
If the server does not recognize the request name, it MUST return | If the server does not recognize the request name, it MUST return | |||
only the response fields from LDAPResult, containing the | only the response fields from LDAPResult, containing the | |||
protocolError result code. | protocolError result code. | |||
The requestValue and responseValue fields contain any information | ||||
associated with the operation. The format of these fields is defined | ||||
by the specification of the extended operation. Implementations MUST | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 29 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
be prepared to handle arbitrary contents of these fields, including | ||||
zero bytes. Values that are defined in terms of ASN.1 and BER encoded | ||||
according to Section 5.1, also follow the extensibility rules in | ||||
Section 4. | ||||
Extended operations may be specified in other documents. The | ||||
specification of an extended operation consists of: | ||||
- the OBJECT IDENTIFIER assigned to the ExtendedRequest.requestName | ||||
(and possibly ExtendedResponse.responseName), | ||||
- the format of the contents of the requestValue and responseValue | ||||
(if any), | ||||
- the semantics of the operation, | ||||
Servers list the requestName of all ExtendedRequests they recognize | ||||
in the supportedExtension attribute [Models] in the root DSE. | ||||
requestValues and responseValues that are defined in terms of ASN.1 | ||||
and BER encoded according to Section 5.1, also follow the | ||||
extensibility rules in Section 4. | ||||
4.13. Start TLS Operation | 4.13. Start TLS Operation | |||
The Start Transport Layer Security (StartTLS) operation provides the | The Start Transport Layer Security (StartTLS) operation provides the | |||
ability to establish Transport Layer Security [RFC2246] on an LDAP | ability to establish Transport Layer Security [RFC2246] on an LDAP | |||
connection. | connection. | |||
4.13.1. Start TLS Request | 4.13.1. Start TLS Request | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 29 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
A client requests TLS establishment by transmitting a Start TLS | A client requests TLS establishment by transmitting a Start TLS | |||
request PDU to the server. The Start TLS request is defined in terms | request PDU to the server. The Start TLS request is defined in terms | |||
of an ExtendedRequest. The requestName is "1.3.6.1.4.1.1466.20037", | of an ExtendedRequest. The requestName is "1.3.6.1.4.1.1466.20037", | |||
and the requestValue field is absent. | and the requestValue field is absent. | |||
The client MUST NOT send any PDUs on this connection following this | The client MUST NOT send any PDUs on this connection following this | |||
request until it receives a Start TLS extended response. | request until it receives a Start TLS extended response. | |||
4.13.2. Start TLS Response | 4.13.2. Start TLS Response | |||
When a Start TLS request is made, servers supporting the operation | When a Start TLS request is made, servers supporting the operation | |||
MUST return a Start TLS response PDU to the requestor. The Start TLS | MUST return a Start TLS response PDU to the requestor. The Start TLS | |||
response responseName is also "1.3.6.1.4.1.1466.20037", and the | response responseName is also "1.3.6.1.4.1.1466.20037", and the | |||
response field is absent. | response field is absent. | |||
The server MUST set the resultCode field to either success or one of | The server MUST set the resultCode field to either success or one of | |||
the other values outlined in section 4.13.2.2. | the other values outlined in section 4.13.2.2. | |||
4.13.2.1. "Success" Response | 4.13.2.1. "Success" Response | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 30 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
If the Start TLS Response contains a resultCode of success, this | If the Start TLS Response contains a resultCode of success, this | |||
indicates that the server is willing and able to negotiate TLS. Refer | indicates that the server is willing and able to negotiate TLS. Refer | |||
to section 5.3 of [AuthMeth] for details. | to section 5.3 of [AuthMeth] for details. | |||
4.13.2.2. Response other than "success" | 4.13.2.2. Response other than "success" | |||
If the ExtendedResponse contains a resultCode other than success, | If the ExtendedResponse contains a resultCode other than success, | |||
this indicates that the server is unwilling or unable to negotiate | this indicates that the server is unwilling or unable to negotiate | |||
TLS. The following resultCodes have these meanings for this | TLS. The following resultCodes have these meanings for this | |||
operation: | operation: | |||
skipping to change at line 1679 | skipping to change at line 1714 | |||
If the server does not support TLS (whether by design or by current | If the server does not support TLS (whether by design or by current | |||
configuration), it MUST set the resultCode to protocolError. The | configuration), it MUST set the resultCode to protocolError. The | |||
client's current association is unaffected if the server does not | client's current association is unaffected if the server does not | |||
support TLS. The client MAY proceed with any LDAP operation, or it | support TLS. The client MAY proceed with any LDAP operation, or it | |||
MAY close the connection. | MAY close the connection. | |||
The server MUST return unavailable if it supports TLS but cannot | The server MUST return unavailable if it supports TLS but cannot | |||
establish a TLS connection for some reason, e.g. the certificate | establish a TLS connection for some reason, e.g. the certificate | |||
server not responding, it cannot contact its TLS implementation, or | server not responding, it cannot contact its TLS implementation, or | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 30 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
if the server is in process of shutting down. The client MAY retry | if the server is in process of shutting down. The client MAY retry | |||
the StartTLS operation, or it MAY proceed with any other LDAP | the StartTLS operation, or it MAY proceed with any other LDAP | |||
operation, or it MAY close the LDAP connection. | operation, or it MAY close the LDAP connection. | |||
4.13.3. Closing a TLS Connection | 4.13.3. Closing a TLS Connection | |||
Two forms of TLS connection closure--graceful and abrupt--are | Two forms of TLS connection closure--graceful and abrupt--are | |||
supported. | supported. | |||
4.13.3.1. Graceful Closure | 4.13.3.1. Graceful Closure | |||
skipping to change at line 1704 | skipping to change at line 1735 | |||
Either the client or server MAY terminate the TLS connection and | Either the client or server MAY terminate the TLS connection and | |||
leave the LDAP connection intact by sending a TLS closure alert. | leave the LDAP connection intact by sending a TLS closure alert. | |||
Before sending a TLS closure alert, the client MUST either wait for | Before sending a TLS closure alert, the client MUST either wait for | |||
any outstanding LDAP operations to complete, or explicitly abandon | any outstanding LDAP operations to complete, or explicitly abandon | |||
them. | them. | |||
After the initiator of a close has sent a TLS closure alert, it MUST | After the initiator of a close has sent a TLS closure alert, it MUST | |||
discard any TLS messages until it has received a TLS closure alert | discard any TLS messages until it has received a TLS closure alert | |||
from the other party. It will cease to send TLS Record Protocol | from the other party. It will cease to send TLS Record Protocol | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 31 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
PDUs, and following the receipt of the alert, MAY send and receive | PDUs, and following the receipt of the alert, MAY send and receive | |||
LDAP PDUs. | LDAP PDUs. | |||
The other party, if it receives a TLS closure alert, MUST immediately | The other party, if it receives a TLS closure alert, MUST immediately | |||
transmit a TLS closure alert. It will subsequently cease to send TLS | transmit a TLS closure alert. It will subsequently cease to send TLS | |||
Record Protocol PDUs, and MAY send and receive LDAP PDUs. | Record Protocol PDUs, and MAY send and receive LDAP PDUs. | |||
After the TLS connection has been closed, the server MUST NOT send | ||||
responses to any request message received before the TLS closure. | ||||
4.13.3.2. Abrupt Closure | 4.13.3.2. Abrupt Closure | |||
Either the client or server MAY abruptly close the TLS connection by | Either the client or server MAY abruptly close the TLS connection by | |||
dropping the underlying transfer protocol connection. In this | dropping the underlying transfer protocol connection. In this | |||
circumstance, a server MAY send the client a Notice of Disconnection | circumstance, a server MAY send the client a Notice of Disconnection | |||
before dropping the underlying LDAP connection. | before dropping the underlying LDAP connection. | |||
5. Protocol Element Encodings and Transfer | 5. Protocol Element Encodings and Transfer | |||
One underlying service is defined here. Clients and servers SHOULD | One underlying service is defined here. Clients and servers SHOULD | |||
skipping to change at line 1735 | skipping to change at line 1773 | |||
The protocol elements of LDAP are encoded for exchange using the | The protocol elements of LDAP are encoded for exchange using the | |||
Basic Encoding Rules (BER) [X.690] of ASN.1 [X.680]. However, due to | Basic Encoding Rules (BER) [X.690] of ASN.1 [X.680]. However, due to | |||
the high overhead involved in using certain elements of the BER, the | the high overhead involved in using certain elements of the BER, the | |||
following additional restrictions are placed on BER-encodings of LDAP | following additional restrictions are placed on BER-encodings of LDAP | |||
protocol elements: | protocol elements: | |||
(1) Only the definite form of length encoding will be used. | (1) Only the definite form of length encoding will be used. | |||
(2) OCTET STRING values will be encoded in the primitive form only. | (2) OCTET STRING values will be encoded in the primitive form only. | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 31 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
(3) If the value of a BOOLEAN type is true, the encoding MUST have | (3) If the value of a BOOLEAN type is true, the encoding MUST have | |||
its contents octets set to hex "FF". | its contents octets set to hex "FF". | |||
(4) If a value of a type is its default value, it MUST be absent. | (4) If a value of a type is its default value, it MUST be absent. | |||
Only some BOOLEAN and INTEGER types have default values in this | Only some BOOLEAN and INTEGER types have default values in this | |||
protocol definition. | protocol definition. | |||
These restrictions do not apply to ASN.1 types encapsulated inside of | These restrictions do not apply to ASN.1 types encapsulated inside of | |||
OCTET STRING values, such as attribute values, unless otherwise | OCTET STRING values, such as attribute values, unless otherwise | |||
noted. | noted. | |||
5.2. Transfer Protocols | 5.2. Transfer Protocols | |||
This protocol is designed to run over connection-oriented, reliable | This protocol is designed to run over connection-oriented, reliable | |||
transports, with all 8 bits in an octet being significant in the data | transports, with all 8 bits in an octet being significant in the data | |||
stream. | stream. | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 32 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
5.2.1. Transmission Control Protocol (TCP) | 5.2.1. Transmission Control Protocol (TCP) | |||
The encoded LDAPMessage PDUs are mapped directly onto the TCP | The encoded LDAPMessage PDUs are mapped directly onto the TCP | |||
bytestream using the BER-based encoding described in section 5.1. It | bytestream using the BER-based encoding described in section 5.1. It | |||
is recommended that server implementations running over the TCP | is recommended that server implementations running over the TCP | |||
provide a protocol listener on the assigned port, 389. Servers may | provide a protocol listener on the assigned port, 389. Servers may | |||
instead provide a listener on a different port number. Clients MUST | instead provide a listener on a different port number. Clients MUST | |||
support contacting servers on any valid TCP port. | support contacting servers on any valid TCP port. | |||
6. Implementation Guidelines | 6. Implementation Guidelines | |||
skipping to change at line 1779 | skipping to change at line 1817 | |||
type names and implement the syntaxes specified in [Syntaxes]. | type names and implement the syntaxes specified in [Syntaxes]. | |||
Servers MAY also recognize additional attribute type names. | Servers MAY also recognize additional attribute type names. | |||
6.2. Client Implementations | 6.2. Client Implementations | |||
Clients that follow referrals or search continuation references MUST | Clients that follow referrals or search continuation references MUST | |||
ensure that they do not loop between servers. They MUST NOT | ensure that they do not loop between servers. They MUST NOT | |||
repeatedly contact the same server for the same request with the same | repeatedly contact the same server for the same request with the same | |||
target entry name, scope and filter. Some clients use a counter that | target entry name, scope and filter. Some clients use a counter that | |||
is incremented each time referral handling occurs for an operation, | is incremented each time referral handling occurs for an operation, | |||
and these kinds of clients MUST be able to handle a DIT with at least | and these kinds of clients MUST be able to handle at least ten nested | |||
ten layers of naming contexts between the root and a leaf entry. | referrals between the root and a leaf entry. | |||
In the absence of prior agreements with servers, clients SHOULD NOT | In the absence of prior agreements with servers, clients SHOULD NOT | |||
assume that servers support any particular schemas beyond those | assume that servers support any particular schemas beyond those | |||
referenced in section 6.1. Different schemas can have different | referenced in section 6.1. Different schemas can have different | |||
attribute types with the same names. The client can retrieve the | attribute types with the same names. The client can retrieve the | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 32 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
subschema entries referenced by the subschemaSubentry attribute in | subschema entries referenced by the subschemaSubentry attribute in | |||
the entries held by the server. | the entries held by the server. | |||
7. Security Considerations | 7. Security Considerations | |||
When used with a connection-oriented transport, this version of the | This version of the protocol provides facilities for simple | |||
protocol provides facilities for simple authentication using a | authentication using a cleartext password, as well as any SASL | |||
cleartext password, as well as any SASL mechanism [RFC2222]. SASL | mechanism [RFC2222]. SASL allows for integrity and privacy services | |||
allows for integrity and privacy services to be negotiated. | to be negotiated. | |||
It is also permitted that the server can return its credentials to | It is also permitted that the server can return its credentials to | |||
the client, if it chooses to do so. | the client, if it chooses to do so. | |||
Use of cleartext password is strongly discouraged where the | Use of cleartext password is strongly discouraged where the | |||
underlying transport service cannot guarantee confidentiality and may | underlying transport service cannot guarantee confidentiality and may | |||
result in disclosure of the password to unauthorized parties. | result in disclosure of the password to unauthorized parties. | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 33 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
When used with SASL, it should be noted that the name field of the | When used with SASL, it should be noted that the name field of the | |||
BindRequest is not protected against modification. Thus if the | BindRequest is not protected against modification. Thus if the | |||
distinguished name of the client (an LDAPDN) is agreed through the | distinguished name of the client (an LDAPDN) is agreed through the | |||
negotiation of the credentials, it takes precedence over any value in | negotiation of the credentials, it takes precedence over any value in | |||
the unprotected name field. | the unprotected name field. | |||
Implementations which cache attributes and entries obtained via LDAP | Implementations which cache attributes and entries obtained via LDAP | |||
MUST ensure that access controls are maintained if that information | MUST ensure that access controls are maintained if that information | |||
is to be provided to multiple clients, since servers may have access | is to be provided to multiple clients, since servers may have access | |||
control policies which prevent the return of entries or attributes in | control policies which prevent the return of entries or attributes in | |||
skipping to change at line 1841 | skipping to change at line 1878 | |||
This document is an update to RFC 2251, by Mark Wahl, Tim Howes, and | This document is an update to RFC 2251, by Mark Wahl, Tim Howes, and | |||
Steve Kille. Their work along with the input of individuals of the | Steve Kille. Their work along with the input of individuals of the | |||
IETF LDAPEXT, LDUP, LDAPBIS, and other Working Groups is gratefully | IETF LDAPEXT, LDUP, LDAPBIS, and other Working Groups is gratefully | |||
acknowledged. | acknowledged. | |||
9. Normative References | 9. Normative References | |||
[X.500] ITU-T Rec. X.500, "The Directory: Overview of Concepts, | [X.500] ITU-T Rec. X.500, "The Directory: Overview of Concepts, | |||
Models and Service", 1993. | Models and Service", 1993. | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 33 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
[Roadmap] K. Zeilenga (editor), "LDAP: Technical Specification Road | [Roadmap] K. Zeilenga (editor), "LDAP: Technical Specification Road | |||
Map", draft-ietf-ldapbis-roadmap-xx.txt (a work in | Map", draft-ietf-ldapbis-roadmap-xx.txt (a work in | |||
progress). | progress). | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", RFC 2119, March 1997. | Requirement Levels", RFC 2119, March 1997. | |||
[X.680] ITU-T Recommendation X.680 (1997) | ISO/IEC 8824-1:1998 | [X.680] ITU-T Recommendation X.680 (1997) | ISO/IEC 8824-1:1998 | |||
Information Technology - Abstract Syntax Notation One | Information Technology - Abstract Syntax Notation One | |||
(ASN.1): Specification of basic notation | (ASN.1): Specification of basic notation | |||
[X.690] ITU-T Rec. X.690, "Specification of ASN.1 encoding rules: | [X.690] ITU-T Rec. X.690, "Specification of ASN.1 encoding rules: | |||
Basic, Canonical, and Distinguished Encoding Rules", 1994. | Basic, Canonical, and Distinguished Encoding Rules", 1994. | |||
[LDAPIANA] K. Zeilenga, "IANA Considerations for LDAP", draft-ietf- | [LDAPIANA] K. Zeilenga, "IANA Considerations for LDAP", draft-ietf- | |||
ldapbis-xx.txt (a work in progress). | ldapbis-xx.txt (a work in progress). | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 34 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
[ISO10646] Universal Multiple-Octet Coded Character Set (UCS) - | [ISO10646] Universal Multiple-Octet Coded Character Set (UCS) - | |||
Architecture and Basic Multilingual Plane, ISO/IEC 10646-1 | Architecture and Basic Multilingual Plane, ISO/IEC 10646-1 | |||
: 1993. | : 1993. | |||
[RFC2279] Yergeau, F., "UTF-8, a transformation format of Unicode | [RFC2279] Yergeau, F., "UTF-8, a transformation format of Unicode | |||
and ISO 10646", RFC 2279, January 1998. | and ISO 10646", RFC 2279, January 1998. | |||
[Models] K. Zeilenga, "LDAP: The Models", draft-ietf-ldapbis- | [Models] K. Zeilenga, "LDAP: The Models", draft-ietf-ldapbis- | |||
models-xx.txt (a work in progress). | models-xx.txt (a work in progress). | |||
skipping to change at line 1897 | skipping to change at line 1934 | |||
[AuthMeth] R. Harrison (editor), "LDAP: Authentication Methods", | [AuthMeth] R. Harrison (editor), "LDAP: Authentication Methods", | |||
draft-ietf-ldapbis-authmeth-xx.txt, (a work in progress). | draft-ietf-ldapbis-authmeth-xx.txt, (a work in progress). | |||
[RFC2222] Meyers, J., "Simple Authentication and Security Layer", | [RFC2222] Meyers, J., "Simple Authentication and Security Layer", | |||
RFC 2222, October 1997. | RFC 2222, October 1997. | |||
[SASLPrep] Zeilenga, K., "Stringprep profile for user names and | [SASLPrep] Zeilenga, K., "Stringprep profile for user names and | |||
passwords", draft-ietf-sasl-saslprep-xx.txt, (a work in | passwords", draft-ietf-sasl-saslprep-xx.txt, (a work in | |||
progress). | progress). | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 34 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
[Unicode] The Unicode Consortium, "The Unicode Standard, Version | [Unicode] The Unicode Consortium, "The Unicode Standard, Version | |||
3.2.0" is defined by "The Unicode Standard, Version 3.0" | 3.2.0" is defined by "The Unicode Standard, Version 3.0" | |||
(Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5), | (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5), | |||
as amended by the "Unicode Standard Annex #27: Unicode | as amended by the "Unicode Standard Annex #27: Unicode | |||
3.1" (http://www.unicode.org/reports/tr27/) and by the | 3.1" (http://www.unicode.org/reports/tr27/) and by the | |||
"Unicode Standard Annex #28: Unicode 3.2" | "Unicode Standard Annex #28: Unicode 3.2" | |||
(http://www.unicode.org/reports/tr28/). | (http://www.unicode.org/reports/tr28/). | |||
10. Editor's Address | 10. Editor's Address | |||
Jim Sermersheim | Jim Sermersheim | |||
Novell, Inc. | Novell, Inc. | |||
1800 South Novell Place | 1800 South Novell Place | |||
Provo, Utah 84606, USA | Provo, Utah 84606, USA | |||
jimse@novell.com | jimse@novell.com | |||
+1 801 861-3088 | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 35 | Sermersheim Internet-Draft - Expires Jan 2004 Page 35 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
+1 801 861-3088 | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 36 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Appendix A - LDAP Result Codes | Appendix A - LDAP Result Codes | |||
This normative appendix details additional considerations regarding | This normative appendix details additional considerations regarding | |||
LDAP result codes and provides a brief, general description of each | LDAP result codes and provides a brief, general description of each | |||
LDAP result code enumerated in Section 4.1.10. | LDAP result code enumerated in Section 4.1.10. | |||
Additional result codes MAY be defined for use with extensions. | Additional result codes MAY be defined for use with extensions. | |||
Client implementations SHALL treat any result code which they do not | Client implementations SHALL treat any result code which they do not | |||
recognize as an unknown error condition. | recognize as an unknown error condition. | |||
skipping to change at line 1947 | skipping to change at line 1985 | |||
saslBindInProgress(14). | saslBindInProgress(14). | |||
The success(0), compareTrue(6), and compare(7) result codes indicate | The success(0), compareTrue(6), and compare(7) result codes indicate | |||
successful completion (and, hence, are called to as "successful" | successful completion (and, hence, are called to as "successful" | |||
result codes). | result codes). | |||
The referral(10) and saslBindInProgress(14) indicate the client is | The referral(10) and saslBindInProgress(14) indicate the client is | |||
required to take additional action to complete the operation | required to take additional action to complete the operation | |||
A.2 Error Result Codes | A.2 Error Result Codes | |||
A.3 Classes and Precedence of Error Result Codes | ||||
Result codes that indicate error conditions (and, hence, are called | ||||
"error" result codes) fall into 6 classes. The following list | ||||
specifies the precedence of error classes to be used when more than | ||||
one error is detected [X511]: | ||||
1) Name Errors (codes 32 - 34, 36) | ||||
- a problem related to a name (DN or RDN), | ||||
2) Update Errors (codes 64 - 69, 71) | ||||
- a problem related to an update operation, | ||||
3) Attribute Errors (codes 16 - 21) | ||||
- a problem related to a supplied attribute, | ||||
4) Security Errors (codes 8, 13, 48 - 50) | ||||
- a security related problem, | ||||
5) Service Problem (codes 3, 4, 7, 11, 12, 51 - 54, 80) | ||||
- a problem related to the provision of the service, and | ||||
6) Protocol Problem (codes 1, 2) | ||||
- a problem related to protocol structure or semantics. | ||||
If the server detects multiple errors simultaneously, the server | ||||
SHOULD report the error with the highest precedence. | ||||
Existing LDAP result codes are described as follows: | Existing LDAP result codes are described as follows: | |||
success (0) | success (0) | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 36 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Indicates successful completion of an operation. | Indicates successful completion of an operation. | |||
This result code is normally not returned by the compare | This result code is normally not returned by the compare | |||
operation, see compareFalse (5) and compareTrue (6). It is | operation, see compareFalse (5) and compareTrue (6). It is | |||
possible that a future extension mechanism would allow this | possible that a future extension mechanism would allow this | |||
to be returned by a compare operation. | to be returned by a compare operation. | |||
operationsError (1) | operationsError (1) | |||
Indicates that the operation is not properly sequenced with | Indicates that the operation is not properly sequenced with | |||
relation to other operations (of same or different type). | relation to other operations (of same or different type). | |||
For example, this code is returned if the client attempts to | For example, this code is returned if the client attempts to | |||
Start TLS [RFC2246] while there are other operations | Start TLS [RFC2246] while there are other operations | |||
outstanding or if TLS was already established. | outstanding or if TLS was already established. | |||
protocolError (2) | protocolError (2) | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 37 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Indicates the server received data which has incorrect | Indicates the server received data which has incorrect | |||
structure. | structure. | |||
For bind operation only, the code may be resulted to indicate | For bind operation only, the code may be resulted to indicate | |||
the server does not support the requested protocol version. | the server does not support the requested protocol version. | |||
timeLimitExceeded (3) | timeLimitExceeded (3) | |||
Indicates that the time limit specified by the client was | Indicates that the time limit specified by the client was | |||
exceeded before the operation could be completed. | exceeded before the operation could be completed. | |||
skipping to change at line 2024 | skipping to change at line 2039 | |||
assertion has evaluated to FALSE. | assertion has evaluated to FALSE. | |||
This result code is normally only returned by the compare | This result code is normally only returned by the compare | |||
operation. | operation. | |||
compareTrue (6) | compareTrue (6) | |||
Indicates that the operation successfully completes and the | Indicates that the operation successfully completes and the | |||
assertion has evaluated to TRUE. | assertion has evaluated to TRUE. | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 37 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
This result code is normally only returned by the compare | This result code is normally only returned by the compare | |||
operation. | operation. | |||
authMethodNotSupported (7) | authMethodNotSupported (7) | |||
Indicates that the authentication method or mechanism is not | Indicates that the authentication method or mechanism is not | |||
supported. | supported. | |||
strongAuthRequired (8) | strongAuthRequired (8) | |||
Except when returned in a Notice of Disconnect (see section | Except when returned in a Notice of Disconnect (see section | |||
4.4.1), this indicates that the server requires the client to | 4.4.1), this indicates that the server requires the client to | |||
authentication using a strong(er) mechanism. | authentication using a strong(er) mechanism. | |||
referral (10) | referral (10) | |||
Indicates that a referral needs to be chased to complete the | Indicates that a referral needs to be chased to complete the | |||
operation (see section 4.1.11). | operation (see section 4.1.11). | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 38 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
adminLimitExceeded (11) | adminLimitExceeded (11) | |||
Indicates that an administrative limit has been exceeded. | Indicates that an administrative limit has been exceeded. | |||
unavailableCriticalExtension (12) | unavailableCriticalExtension (12) | |||
Indicates that server cannot perform a critical extension | Indicates that server cannot perform a critical extension | |||
(see section 4.1.12). | (see section 4.1.12). | |||
confidentialityRequired (13) | confidentialityRequired (13) | |||
skipping to change at line 2072 | skipping to change at line 2087 | |||
request, with the same SASL mechanism, to continue the | request, with the same SASL mechanism, to continue the | |||
authentication process (see section 4.2). | authentication process (see section 4.2). | |||
noSuchAttribute (16) | noSuchAttribute (16) | |||
Indicates that the named entry does not contain the specified | Indicates that the named entry does not contain the specified | |||
attribute or attribute value. | attribute or attribute value. | |||
undefinedAttributeType (17) | undefinedAttributeType (17) | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 38 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Indicates that a request field contains an undefined | Indicates that a request field contains an undefined | |||
attribute type. | attribute type. | |||
inappropriateMatching (18) | inappropriateMatching (18) | |||
Indicates that a request cannot be completed due to an | Indicates that a request cannot be completed due to an | |||
inappropriate matching. | inappropriate matching. | |||
constraintViolation (19) | constraintViolation (19) | |||
Indicates that the client supplied an attribute value which | Indicates that the client supplied an attribute value which | |||
does not conform to constraints placed upon it by the data | does not conform to constraints placed upon it by the data | |||
model. | model. | |||
For example, this code is returned when the multiple values | For example, this code is returned when the multiple values | |||
are supplied to an attribute which has a SINGLE-VALUE | are supplied to an attribute which has a SINGLE-VALUE | |||
constraint. | constraint. | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 39 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
attributeOrValueExists (20) | attributeOrValueExists (20) | |||
Indicates that the client supplied an attribute or value to | Indicates that the client supplied an attribute or value to | |||
be added to an entry already exists. | be added to an entry already exists. | |||
invalidAttributeSyntax (21) | invalidAttributeSyntax (21) | |||
Indicates that a purported attribute value does not conform | Indicates that a purported attribute value does not conform | |||
to the syntax of the attribute. | to the syntax of the attribute. | |||
skipping to change at line 2120 | skipping to change at line 2135 | |||
alias has been dereferenced which names no object. | alias has been dereferenced which names no object. | |||
invalidDNSyntax (34) | invalidDNSyntax (34) | |||
Indicates that a LDAPDN or RelativeLDAPDN field (e.g. search | Indicates that a LDAPDN or RelativeLDAPDN field (e.g. search | |||
base, target entry, ModifyDN newrdn, etc.) of a request does | base, target entry, ModifyDN newrdn, etc.) of a request does | |||
not conform to the required syntax or contains attribute | not conform to the required syntax or contains attribute | |||
values which do not conform to the syntax of the attribute's | values which do not conform to the syntax of the attribute's | |||
type. | type. | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 39 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
aliasDereferencingProblem (36) | aliasDereferencingProblem (36) | |||
Indicates that a problem occurred while dereferencing an | Indicates that a problem occurred while dereferencing an | |||
alias. Typically an alias was encountered in a situation | alias. Typically an alias was encountered in a situation | |||
where it was not allowed or where access was denied. | where it was not allowed or where access was denied. | |||
inappropriateAuthentication (48) | inappropriateAuthentication (48) | |||
Indicates the server requires the client which had attempted | Indicates the server requires the client which had attempted | |||
to bind anonymously or without supplying credentials to | to bind anonymously or without supplying credentials to | |||
provide some form of credentials, | provide some form of credentials, | |||
invalidCredentials (49) | invalidCredentials (49) | |||
Indicates the supplied password or SASL credentials are | Indicates the supplied password or SASL credentials are | |||
invalid. | invalid. | |||
insufficientAccessRights (50) | insufficientAccessRights (50) | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 40 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Indicates that the client does not have sufficient access | Indicates that the client does not have sufficient access | |||
rights to perform the operation. | rights to perform the operation. | |||
busy (51) | busy (51) | |||
Indicates that the server is busy. | Indicates that the server is busy. | |||
unavailable (52) | unavailable (52) | |||
Indicates that the server is shutting down or a subsystem | Indicates that the server is shutting down or a subsystem | |||
skipping to change at line 2169 | skipping to change at line 2184 | |||
loopDetect (54) | loopDetect (54) | |||
Indicates that the server has detected an internal loop. | Indicates that the server has detected an internal loop. | |||
namingViolation (64) | namingViolation (64) | |||
Indicates that the entry name violates naming restrictions. | Indicates that the entry name violates naming restrictions. | |||
objectClassViolation (65) | objectClassViolation (65) | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 40 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Indicates that the entry violates object class restrictions. | Indicates that the entry violates object class restrictions. | |||
notAllowedOnNonLeaf (66) | notAllowedOnNonLeaf (66) | |||
Indicates that operation is inappropriately acting upon a | Indicates that operation is inappropriately acting upon a | |||
non-leaf entry. | non-leaf entry. | |||
notAllowedOnRDN (67) | notAllowedOnRDN (67) | |||
Indicates that the operation is inappropriately attempting to | Indicates that the operation is inappropriately attempting to | |||
remove a value which forms the entry's relative distinguished | remove a value which forms the entry's relative distinguished | |||
name. | name. | |||
entryAlreadyExists (68) | entryAlreadyExists (68) | |||
Indicates that the request cannot be added fulfilled as the | Indicates that the request cannot be added fulfilled as the | |||
entry already exists. | entry already exists. | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 41 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
objectClassModsProhibited (69) | objectClassModsProhibited (69) | |||
Indicates that the attempt to modify the object class(es) of | Indicates that the attempt to modify the object class(es) of | |||
an entry objectClass attribute is prohibited. | an entry objectClass attribute is prohibited. | |||
For example, this code is returned when a when a client | For example, this code is returned when a when a client | |||
attempts to modify the structural object class of an entry. | attempts to modify the structural object class of an entry. | |||
affectsMultipleDSAs (71) | affectsMultipleDSAs (71) | |||
Indicates that the operation cannot be completed as it | Indicates that the operation cannot be completed as it | |||
affects multiple servers (DSAs). | affects multiple servers (DSAs). | |||
other (80) | other (80) | |||
Indicates the server has encountered an internal error. | Indicates the server has encountered an internal error. | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 41 | Sermersheim Internet-Draft - Expires Jan 2004 Page 42 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Appendix B - Complete ASN.1 Definition | Appendix B - Complete ASN.1 Definition | |||
This appendix is normative. | This appendix is normative. | |||
Lightweight-Directory-Access-Protocol-V3 DEFINITIONS | Lightweight-Directory-Access-Protocol-V3 DEFINITIONS | |||
IMPLICIT TAGS | IMPLICIT TAGS | |||
EXTENSIBILITY IMPLIED ::= | EXTENSIBILITY IMPLIED ::= | |||
skipping to change at line 2265 | skipping to change at line 2280 | |||
LDAPDN ::= LDAPString | LDAPDN ::= LDAPString | |||
RelativeLDAPDN ::= LDAPString | RelativeLDAPDN ::= LDAPString | |||
AttributeDescription ::= LDAPString | AttributeDescription ::= LDAPString | |||
-- Constrained to attributedescription | -- Constrained to attributedescription | |||
-- [Models] | -- [Models] | |||
AttributeDescriptionList ::= SEQUENCE OF | AttributeDescriptionList ::= SEQUENCE OF | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 42 | Sermersheim Internet-Draft - Expires Jan 2004 Page 43 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
AttributeDescription | AttributeDescription | |||
AttributeValue ::= OCTET STRING | AttributeValue ::= OCTET STRING | |||
AttributeValueAssertion ::= SEQUENCE { | AttributeValueAssertion ::= SEQUENCE { | |||
attributeDesc AttributeDescription, | attributeDesc AttributeDescription, | |||
assertionValue AssertionValue } | assertionValue AssertionValue } | |||
skipping to change at line 2323 | skipping to change at line 2338 | |||
-- 37-47 unused -- | -- 37-47 unused -- | |||
inappropriateAuthentication (48), | inappropriateAuthentication (48), | |||
invalidCredentials (49), | invalidCredentials (49), | |||
insufficientAccessRights (50), | insufficientAccessRights (50), | |||
busy (51), | busy (51), | |||
unavailable (52), | unavailable (52), | |||
unwillingToPerform (53), | unwillingToPerform (53), | |||
loopDetect (54), | loopDetect (54), | |||
-- 55-63 unused -- | -- 55-63 unused -- | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 43 | Sermersheim Internet-Draft - Expires Jan 2004 Page 44 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
namingViolation (64), | namingViolation (64), | |||
objectClassViolation (65), | objectClassViolation (65), | |||
notAllowedOnNonLeaf (66), | notAllowedOnNonLeaf (66), | |||
notAllowedOnRDN (67), | notAllowedOnRDN (67), | |||
entryAlreadyExists (68), | entryAlreadyExists (68), | |||
objectClassModsProhibited (69), | objectClassModsProhibited (69), | |||
-- 70 reserved for CLDAP -- | -- 70 reserved for CLDAP -- | |||
affectsMultipleDSAs (71), | affectsMultipleDSAs (71), | |||
skipping to change at line 2381 | skipping to change at line 2396 | |||
serverSaslCreds [7] OCTET STRING OPTIONAL } | serverSaslCreds [7] OCTET STRING OPTIONAL } | |||
UnbindRequest ::= [APPLICATION 2] NULL | UnbindRequest ::= [APPLICATION 2] NULL | |||
SearchRequest ::= [APPLICATION 3] SEQUENCE { | SearchRequest ::= [APPLICATION 3] SEQUENCE { | |||
baseObject LDAPDN, | baseObject LDAPDN, | |||
scope ENUMERATED { | scope ENUMERATED { | |||
baseObject (0), | baseObject (0), | |||
singleLevel (1), | singleLevel (1), | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 44 | Sermersheim Internet-Draft - Expires Jan 2004 Page 45 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
wholeSubtree (2) }, | wholeSubtree (2) }, | |||
derefAliases ENUMERATED { | derefAliases ENUMERATED { | |||
neverDerefAliases (0), | neverDerefAliases (0), | |||
derefInSearching (1), | derefInSearching (1), | |||
derefFindingBaseObj (2), | derefFindingBaseObj (2), | |||
derefAlways (3) }, | derefAlways (3) }, | |||
sizeLimit INTEGER (0 .. maxInt), | sizeLimit INTEGER (0 .. maxInt), | |||
timeLimit INTEGER (0 .. maxInt), | timeLimit INTEGER (0 .. maxInt), | |||
skipping to change at line 2439 | skipping to change at line 2454 | |||
vals SET OF AttributeValue } | vals SET OF AttributeValue } | |||
SearchResultReference ::= [APPLICATION 19] SEQUENCE OF LDAPURL | SearchResultReference ::= [APPLICATION 19] SEQUENCE OF LDAPURL | |||
SearchResultDone ::= [APPLICATION 5] LDAPResult | SearchResultDone ::= [APPLICATION 5] LDAPResult | |||
ModifyRequest ::= [APPLICATION 6] SEQUENCE { | ModifyRequest ::= [APPLICATION 6] SEQUENCE { | |||
object LDAPDN, | object LDAPDN, | |||
modification SEQUENCE OF SEQUENCE { | modification SEQUENCE OF SEQUENCE { | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 45 | Sermersheim Internet-Draft - Expires Jan 2004 Page 46 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
operation ENUMERATED { | operation ENUMERATED { | |||
add (0), | add (0), | |||
delete (1), | delete (1), | |||
replace (2) }, | replace (2) }, | |||
modification AttributeTypeAndValues } } | modification AttributeTypeAndValues } } | |||
AttributeTypeAndValues ::= SEQUENCE { | AttributeTypeAndValues ::= SEQUENCE { | |||
type AttributeDescription, | type AttributeDescription, | |||
skipping to change at line 2491 | skipping to change at line 2506 | |||
AbandonRequest ::= [APPLICATION 16] MessageID | AbandonRequest ::= [APPLICATION 16] MessageID | |||
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 } | responseValue [11] OCTET STRING OPTIONAL } | |||
END | END | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 46 | Sermersheim Internet-Draft - Expires Jan 2004 Page 47 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Appendix C - Change History | Appendix C - Change History | |||
<Note to RFC editor: This section is to be removed prior to RFC | <Note to RFC editor: This section is to be removed prior to RFC | |||
publication> | publication> | |||
C.1 Changes made to RFC 2251: | C.1 Changes made to RFC 2251: | |||
C.1.1 Editorial | C.1.1 Editorial | |||
skipping to change at line 2552 | skipping to change at line 2567 | |||
the transfer encoding is present in attributeDesc, the | the transfer encoding is present in attributeDesc, the | |||
AssertionValue is encoded as specified by the option...". | AssertionValue is encoded as specified by the option...". | |||
Previously, only the ;binary option was mentioned. | Previously, only the ;binary option was mentioned. | |||
C.2.3 Sections 4.2, 4.9, 4.10 | C.2.3 Sections 4.2, 4.9, 4.10 | |||
- Added alias dereferencing specifications. In the case of modDN, | - Added alias dereferencing specifications. In the case of modDN, | |||
followed precedent set on other update operations (... alias is | followed precedent set on other update operations (... alias is | |||
not dereferenced...) In the case of bind and compare stated that | not dereferenced...) In the case of bind and compare stated that | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 47 | Sermersheim Internet-Draft - Expires Jan 2004 Page 48 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
servers SHOULD NOT dereference aliases. Specifications were added | servers SHOULD NOT dereference aliases. Specifications were added | |||
because they were missing from the previous version and caused | because they were missing from the previous version and caused | |||
interoperability problems. Concessions were made for bind and | interoperability problems. Concessions were made for bind and | |||
compare (neither should have ever allowed alias dereferencing) by | compare (neither should have ever allowed alias dereferencing) by | |||
using SHOULD NOT language, due to the behavior of some existing | using SHOULD NOT language, due to the behavior of some existing | |||
implementations. | implementations. | |||
C.2.4 Sections 4.5 and Appendix A | C.2.4 Sections 4.5 and Appendix A | |||
skipping to change at line 2608 | skipping to change at line 2623 | |||
by a lower layer" to "the underlying transport service cannot | by a lower layer" to "the underlying transport service cannot | |||
guarantee confidentiality" | guarantee confidentiality" | |||
C.3.6 Section 4.5.2 | C.3.6 Section 4.5.2 | |||
- Removed all mention of ExtendedResponse due to lack of | - Removed all mention of ExtendedResponse due to lack of | |||
implementation. | implementation. | |||
C.4 Changes made to draft-ietf-ldapbis-protocol-02.txt: | C.4 Changes made to draft-ietf-ldapbis-protocol-02.txt: | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 48 | Sermersheim Internet-Draft - Expires Jan 2004 Page 49 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
C.4.1 Section 4 | C.4.1 Section 4 | |||
- Removed "typically" from "and is typically transferred" in the | - Removed "typically" from "and is typically transferred" in the | |||
first paragraph. We know of no (and can conceive of no) case where | first paragraph. We know of no (and can conceive of no) case where | |||
this isn't true. | this isn't true. | |||
- Added "Section 5.1 specifies how the LDAP protocol is encoded." To | - Added "Section 5.1 specifies how the LDAP protocol is encoded." To | |||
the first paragraph. Added this cross reference for readability. | the first paragraph. Added this cross reference for readability. | |||
- Changed "version 3 " to "version 3 or later" in the second | - Changed "version 3 " to "version 3 or later" in the second | |||
skipping to change at line 2664 | skipping to change at line 2679 | |||
controls). | controls). | |||
C.4.6 Section 4.4 | C.4.6 Section 4.4 | |||
- Changed "One unsolicited notification is defined" to "One | - Changed "One unsolicited notification is defined" to "One | |||
unsolicited notification (Notice of Disconnection) is defined" in | unsolicited notification (Notice of Disconnection) is defined" in | |||
the third paragraph. For clarity and readability. | the third paragraph. For clarity and readability. | |||
C.4.7 Section 4.5.1 | C.4.7 Section 4.5.1 | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 49 | Sermersheim Internet-Draft - Expires Jan 2004 Page 50 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
- Changed "checking for the existence of the objectClass attribute" | - Changed "checking for the existence of the objectClass attribute" | |||
to "checking for the presence of the objectClass attribute" in the | to "checking for the presence of the objectClass attribute" in the | |||
last paragraph. This was done as a measure of consistency (we use | last paragraph. This was done as a measure of consistency (we use | |||
the terms present and presence rather than exists and existence in | the terms present and presence rather than exists and existence in | |||
search filters). | search filters). | |||
C.4.8 Section 4.5.3 | C.4.8 Section 4.5.3 | |||
skipping to change at line 2720 | skipping to change at line 2735 | |||
whether there can be more than one value of an attribute of that | whether there can be more than one value of an attribute of that | |||
type in an entry, the syntax to which the values must conform, the | type in an entry, the syntax to which the values must conform, the | |||
kinds of matching which can be performed on values of that | kinds of matching which can be performed on values of that | |||
attribute, and other functions." to " An attribute is a | attribute, and other functions." to " An attribute is a | |||
description (a type and zero or more options) with one or more | description (a type and zero or more options) with one or more | |||
associated values. The attribute type governs whether the | associated values. The attribute type governs whether the | |||
attribute can have multiple values, the syntax and matching rules | attribute can have multiple values, the syntax and matching rules | |||
used to construct and compare values of that attribute, and other | used to construct and compare values of that attribute, and other | |||
functions. Options indicate modes of transfer and other | functions. Options indicate modes of transfer and other | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 50 | Sermersheim Internet-Draft - Expires Jan 2004 Page 51 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
functions.". This points out that an attribute consists of both | functions.". This points out that an attribute consists of both | |||
the type and options. | the type and options. | |||
C.5.2 Section 4 | C.5.2 Section 4 | |||
- Changed "Section 5.1 specifies the encoding rules for the LDAP | - Changed "Section 5.1 specifies the encoding rules for the LDAP | |||
protocol" to "Section 5.1 specifies how the protocol is encoded | protocol" to "Section 5.1 specifies how the protocol is encoded | |||
and transferred." | and transferred." | |||
skipping to change at line 2777 | skipping to change at line 2792 | |||
- Changed the wording regarding 'equally capable' referrals to "If | - Changed the wording regarding 'equally capable' referrals to "If | |||
multiple URLs are present, the client assumes that any URL may be | multiple URLs are present, the client assumes that any URL may be | |||
used to progress the operation.". The previous language implied | used to progress the operation.". The previous language implied | |||
that the server MUST enforce rules that it was practically | that the server MUST enforce rules that it was practically | |||
incapable of. The new language highlights the original intent-- | incapable of. The new language highlights the original intent-- | |||
that is, that any of the referrals may be used to progress the | that is, that any of the referrals may be used to progress the | |||
operation, there is no inherent 'weighting' mechanism. | operation, there is no inherent 'weighting' mechanism. | |||
C.5.7 Section 4.5.1 and Appendix A | C.5.7 Section 4.5.1 and Appendix A | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 51 | Sermersheim Internet-Draft - Expires Jan 2004 Page 52 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
- Added the comment "-- initial and final can occur at most once", | - Added the comment "-- initial and final can occur at most once", | |||
to clarify this restriction. | to clarify this restriction. | |||
C.5.8 Section 5.1 | C.5.8 Section 5.1 | |||
- Changed heading from "Mapping Onto BER-based Transport Services" | - Changed heading from "Mapping Onto BER-based Transport Services" | |||
to "Protocol Encoding". | to "Protocol Encoding". | |||
skipping to change at line 2833 | skipping to change at line 2848 | |||
doc now specifies a difference between transfer and tagging | doc now specifies a difference between transfer and tagging | |||
options and describes the semantics of each, and how and when | options and describes the semantics of each, and how and when | |||
subtyping rules apply. Now allow options to be transmitted in any | subtyping rules apply. Now allow options to be transmitted in any | |||
order but disallow any ordering semantics to be implied. These | order but disallow any ordering semantics to be implied. These | |||
changes are the result of ongoing input from an engineering team | changes are the result of ongoing input from an engineering team | |||
designed to deal with ambiguity issues surrounding attribute | designed to deal with ambiguity issues surrounding attribute | |||
options. | options. | |||
C.7.3 Sections 4.1.5.1 and 4.1.6 | C.7.3 Sections 4.1.5.1 and 4.1.6 | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 52 | Sermersheim Internet-Draft - Expires Jan 2004 Page 53 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
- Refer to non "binary" transfer encodings as "native encoding" | - Refer to non "binary" transfer encodings as "native encoding" | |||
rather than "string" encoding to clarify and avoid confusion. | rather than "string" encoding to clarify and avoid confusion. | |||
C.8 Changes made to draft-ietf-ldapbis-protocol-06.txt: | C.8 Changes made to draft-ietf-ldapbis-protocol-06.txt: | |||
C.8.1 Title | C.8.1 Title | |||
- Changed to "LDAP: The Protocol" to be consisted with other working | - Changed to "LDAP: The Protocol" to be consisted with other working | |||
skipping to change at line 2889 | skipping to change at line 2904 | |||
C.8.7 Relationship to X.500 | C.8.7 Relationship to X.500 | |||
- Removed section. It has been moved to [Roadmap] | - Removed section. It has been moved to [Roadmap] | |||
C.8.8 Server Specific Data Requirements | C.8.8 Server Specific Data Requirements | |||
- Removed section. It has been moved to [Models] | - Removed section. It has been moved to [Models] | |||
C.8.9 Elements of Protocol | C.8.9 Elements of Protocol | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 53 | Sermersheim Internet-Draft - Expires Jan 2004 Page 54 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
- Added "Section 5.1 specifies how the protocol is encoded and | - Added "Section 5.1 specifies how the protocol is encoded and | |||
transferred." to the end of the first paragraph for reference. | transferred." to the end of the first paragraph for reference. | |||
- Reworded notes about extensibility, and now talk about implied | - Reworded notes about extensibility, and now talk about implied | |||
extensibility and the use of ellipses in the ASN.1 | extensibility and the use of ellipses in the ASN.1 | |||
- Removed references to LDAPv2 in third and fourth paragraphs. | - Removed references to LDAPv2 in third and fourth paragraphs. | |||
skipping to change at line 2946 | skipping to change at line 2961 | |||
- Clarified intent regarding exactly what is to be BER encoded. | - Clarified intent regarding exactly what is to be BER encoded. | |||
- Clarified that clients must not expect ;binary when not asking for | - Clarified that clients must not expect ;binary when not asking for | |||
it (;binary, as opposed to ber encoded data). | it (;binary, as opposed to ber encoded data). | |||
C.8.17 Attribute | C.8.17 Attribute | |||
- Use the term "attribute description" in lieu of "type" | - Use the term "attribute description" in lieu of "type" | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 54 | Sermersheim Internet-Draft - Expires Jan 2004 Page 55 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
- Clarified the fact that clients cannot rely on any apparent | - Clarified the fact that clients cannot rely on any apparent | |||
ordering of attribute values. | ordering of attribute values. | |||
C.8.18 LDAPResult | C.8.18 LDAPResult | |||
- To resultCode, added ellipses "..." to the enumeration to indicate | - To resultCode, added ellipses "..." to the enumeration to indicate | |||
extensibility. and added a note, pointing to [LDAPIANA] | extensibility. and added a note, pointing to [LDAPIANA] | |||
skipping to change at line 3003 | skipping to change at line 3018 | |||
- Added as normative appendix A | - Added as normative appendix A | |||
C.8.25 ASN.1 | C.8.25 ASN.1 | |||
- Added EXTENSIBILITY IMPLIED | - Added EXTENSIBILITY IMPLIED | |||
- Added a number of comments holding referenced to [Models] and | - Added a number of comments holding referenced to [Models] and | |||
[ISO10646]. | [ISO10646]. | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 55 | Sermersheim Internet-Draft - Expires Jan 2004 Page 56 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
- Removed AttributeType. It is not used. | - Removed AttributeType. It is not used. | |||
C.9 Changes made to draft-ietf-ldapbis-protocol-07.txt: | C.9 Changes made to draft-ietf-ldapbis-protocol-07.txt: | |||
- Removed all mention of transfer encodings and the binary attribute | - Removed all mention of transfer encodings and the binary attribute | |||
option | option. Please refer to draft-legg-ldap-binary-00.txt and draft- | |||
legg-ldap-transfer-00.txt | ||||
- Further alignment with [Models]. | - Further alignment with [Models]. | |||
- Added extensibility ellipsis to protocol op choice | - Added extensibility ellipsis to protocol op choice | |||
- In 4.1.1, clarified when connections may be dropped due to | - In 4.1.1, clarified when connections may be dropped due to | |||
malformed PDUs | malformed PDUs | |||
- Specified which matching rules and syntaxes are used for various | - Specified which matching rules and syntaxes are used for various | |||
filter items | filter items | |||
skipping to change at line 3056 | skipping to change at line 3072 | |||
C.11 Changes made to draft-ietf-ldapbis-protocol-09.txt: | C.11 Changes made to draft-ietf-ldapbis-protocol-09.txt: | |||
- Fixed formatting | - Fixed formatting | |||
C.12 Changes made to draft-ietf-ldapbis-protocol-10.txt: | C.12 Changes made to draft-ietf-ldapbis-protocol-10.txt: | |||
C.12.1 Section 4.1.4: | C.12.1 Section 4.1.4: | |||
- Removed second paragraph as this language exists in MODELS | - Removed second paragraph as this language exists in MODELS | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 56 | Sermersheim Internet-Draft - Expires Jan 2004 Page 57 | |||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
C.12.2 Section 4.2.1: | C.12.2 Section 4.2.1: | |||
- Replaced fourth paragraph. It was accidentally removed in an | - Replaced fourth paragraph. It was accidentally removed in an | |||
earlier edit. | earlier edit. | |||
C.12.2 Section 4.13: | C.12.2 Section 4.13: | |||
- Added section describing the StartTLS operation (moved from | - Added section describing the StartTLS operation (moved from | |||
skipping to change at line 3111 | skipping to change at line 3127 | |||
C.15 Changes made to draft-ietf-ldapbis-protocol-13.txt | C.15 Changes made to draft-ietf-ldapbis-protocol-13.txt | |||
C.15.1 Section 2 & various | C.15.1 Section 2 & various | |||
- Added definitions for LDAP connection, TLS connection, and LDAP | - Added definitions for LDAP connection, TLS connection, and LDAP | |||
association, and updated appropriate fields to use proper terms. | association, and updated appropriate fields to use proper terms. | |||
C.15.2 Section 4.2 | C.15.2 Section 4.2 | |||
- Added text to authentication, specifying the way in which textual | - Added text to authentication, specifying the way in which textual | |||
strings used as passwords are to be prepared. | strings used as passwords are to be prepared. | |||
C.15.3 Section 4.5.1 | Sermersheim Internet-Draft - Expires Jan 2004 Page 58 | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 57 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
C.15.3 Section 4.5.1 | ||||
- Clarified derefInSearching. Specifically how it works in terms of | - Clarified derefInSearching. Specifically how it works in terms of | |||
subtree and one level searches | subtree and one level searches | |||
C.15.4 Section 4.5.2 | C.15.4 Section 4.5.2 | |||
- Changed MUST to SHOULD for returning textual attribute name, The | - Changed MUST to SHOULD for returning textual attribute name, The | |||
MUST is unreasonable. There are likely cases (such as when the | MUST is unreasonable. There are likely cases (such as when the | |||
server knows multiple attributes in separate entries of a search | server knows multiple attributes in separate entries of a search | |||
result set share the same short name) where returning a numericoid | result set share the same short name) where returning a numericoid | |||
is better than returning a short name. That is, the MUST may | is better than returning a short name. That is, the MUST may | |||
skipping to change at line 3138 | skipping to change at line 3153 | |||
security consideration. | security consideration. | |||
C.15.4 Section 4.9 | C.15.4 Section 4.9 | |||
- Made modify consistent with add in regards to teh need of parent | - Made modify consistent with add in regards to teh need of parent | |||
entries already existing. | entries already existing. | |||
C.15.6 Section 4.13.2.2 | C.15.6 Section 4.13.2.2 | |||
- Removed wording indicating that referrals can be returned from | - Removed wording indicating that referrals can be returned from | |||
StartTLS | StartTLS | |||
C.16 Changes made to draft-ietf-ldapbis-protocol-14.txt | ||||
C.16.1 Section 4.1.9 | ||||
- Added: If a server detects multiple errors for an operation, only | ||||
one resultCode is returned. The server should return the | ||||
resultCode that best indicates the nature of the error | ||||
encountered. | ||||
C.16.2 Section 4.1.11 | ||||
- Added: controlValues that are defined in terms of ASN.1 and BER | ||||
encoded according to Section 5.1, also follow the extensibility | ||||
rules in Section 4. | ||||
- Removed: "If a SASL transfer encryption or integrity mechanism has | ||||
been negotiated, that mechanism does not support the changing of | ||||
credentials from one identity to another, then the client MUST | ||||
instead establish a new connection." | ||||
Each SASL negotiation is, generally, independent of other SASL | ||||
negotiations. If there were dependencies between multiple | ||||
negotiations of a particular mechanism, the mechanism technical | ||||
specification should detail how applications are to deal with | ||||
them. LDAP should not require any special handling. And if an LDAP | ||||
client had used such a mechanism, it would have the option of | ||||
using another mechanism. | ||||
C.16.3 Section 4.5.2 and Section 7 | ||||
- Removed: "If the LDAP association is operating over a connection- | ||||
oriented transport such as TCP" | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 59 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
This is always true. | ||||
C.16.4 Section 4.11 | ||||
- Added: thus a client SHOULD NOT use the Abandon operation when it | ||||
needs an indication of whether the operation was abandoned. For | ||||
example, if a client performs an update operation (Add, Modify, or | ||||
ModifyDN), and it needs to know whether the directory has changed | ||||
due to the operation, it should not use the Abandon operation to | ||||
cancel the update operation. Clients can determine that an | ||||
operation has been abandoned by performing a subsequent bind | ||||
operation. | ||||
C.16.5 Section 4.12 | ||||
- Added: | ||||
"The requestValue and responseValue fields contain any information | ||||
associated with the operation. The format of these fields is | ||||
defined by the specification of the extended operation. | ||||
Implementations MUST be prepared to handle arbitrary contents of | ||||
these fields, including zero bytes. Values that are defined in | ||||
terms of ASN.1 and BER encoded according to Section 5.1, also | ||||
follow the extensibility rules in Section 4. | ||||
Extended operations may be specified in other documents. The | ||||
specification of an extended operation consists of: | ||||
- the OBJECT IDENTIFIER assigned to the | ||||
ExtendedRequest.requestName (and possibly | ||||
ExtendedResponse.responseName), | ||||
- the format of the contents of the requestValue and responseValue | ||||
(if any), | ||||
- the semantics of the operation, | ||||
Servers list the requestName of all ExtendedRequests they | ||||
recognize in the supportedExtension attribute [Models] in the root | ||||
DSE. | ||||
requestValues and responseValues that are defined in terms of | ||||
ASN.1 and BER encoded according to Section 5.1, also follow the | ||||
extensibility rules in Section 4." | ||||
This was to align with controls and control values. | ||||
C.16.6 Section 4.13.3.1 | ||||
- Added: After the TLS connection has been closed, the server MUST | ||||
NOT send responses to any request message received before the TLS | ||||
closure. | ||||
C.16.7 Section A2 | ||||
- Removed precedence rules | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 60 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Appendix D - Outstanding Work Items | Appendix D - Outstanding Work Items | |||
D.0 General | D.0 General | |||
- Integrate notational consistency agreements WG will discuss | - Integrate notational consistency agreements WG will discuss | |||
notation consistency. Once agreement happens, reconcile draft. | notation consistency. Once agreement happens, reconcile draft. | |||
- Reconcile problems with [Models]. Section 3.2 was wholly removed. | - Reconcile problems with [Models]. Section 3.2 was wholly removed. | |||
There were some protocol semantics in that section that need to be | There were some protocol semantics in that section that need to be | |||
brought back. Specifically, there was the notion of the server | brought back. Specifically, there was the notion of the server | |||
implicitly adding objectclass superclasses when a value is added. | implicitly adding objectclass superclasses when a value is added. | |||
skipping to change at line 3161 | skipping to change at line 3267 | |||
- While there is a result code appendix, ensure it speaks of result | - While there is a result code appendix, ensure it speaks of result | |||
codes in a general sense, and only highlight specific result codes | codes in a general sense, and only highlight specific result codes | |||
in the context of an operation when that operation ties more | in the context of an operation when that operation ties more | |||
specific meanings to that result code. | specific meanings to that result code. | |||
D.2 Verify references. | D.2 Verify references. | |||
- Many referenced documents have changed. Ensure references and | - Many referenced documents have changed. Ensure references and | |||
section numbers are correct. | section numbers are correct. | |||
D.3 Usage of Naming Context | D.3 Review 2119 usage | |||
- Make sure occurrences of "namingcontext" and "naming context" are | ||||
consistent with [Models]. Use in section 6.2 should be reworked. | ||||
It's layers of indirection that matter, not number of contexts. | ||||
(That is, referrals can be returned for a number of reasons (cross | ||||
reference, superior, subordinate, busy, not master, etc.) | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 58 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Other uses are fine. | ||||
D.4 Review 2119 usage | ||||
D.5 Reconcile with I-D Nits | ||||
D.23 Section 4.5.3 | ||||
- A server MUST NOT return any SearchResultReference if it has not | ||||
located the baseObject and thus has not searched any entries; in | ||||
this case it would return a SearchResultDone containing a referral | ||||
resultCode. | ||||
- Add "Similarly, a server MUST NOT return a SearchResultReference | ||||
when the scope of the search is baseObject. If a client receives | ||||
such a SearchResultReference it MUST interpret is as a protocol | ||||
error and MUST NOT follow it." to the first paragraph. | ||||
The technical specification doesn't have to describe how a | ||||
protocol peer should react when its partner violates an absolute. | ||||
OR return noSuchObject. | ||||
- Add "If the scope part of the LDAP URL is present, the client MUST | D.4 Reconcile with I-D Nits | |||
use the new scope in its next request to progress the search. If | ||||
the scope part is absent the client MUST use subtree scope to | ||||
complete subtree searches and base scope to complete one level | ||||
searches." to the third paragraph. | ||||
D.25 Section 4.6 | D.5 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. Not | exist". See "modify: "non-existent attribute"" on the list. Not | |||
sure if there's really an issue here. Will look at archive | sure if there's really an issue here. Will look at archive | |||
D.27 Section 4.10 | D.6 Section 4.10 | |||
- Specify what happens when the attr is missing vs. attr isn't in | - Specify what happens when the attr is missing vs. attr isn't in | |||
schema. Also what happens if there's no equality matching rule. | schema. Also what happens if there's no equality matching rule. | |||
noSuchAttribute, undefinedAttributeType, inappropriateMatching | noSuchAttribute, undefinedAttributeType, inappropriateMatching | |||
D.30 Section 5.1 | D.7 Section 6.1 | |||
- Add "control and extended operation values" to last paragraph. See | ||||
"LBER (BER Restrictions)" on list. | ||||
D.32 Section 6.1 | ||||
- Add "that are used by those attributes" to the first paragraph. | - Add "that are used by those attributes" to the first paragraph. | |||
- Add "Servers which support update operations MUST, and other | - Add "Servers which support update operations MUST, and other | |||
servers SHOULD, support strong authentication mechanisms described | servers SHOULD, support strong authentication mechanisms described | |||
in [RFC2829]." as a second paragraph. Likely should just say | in [RFC2829]." as a second paragraph. Likely should just say | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 59 | ||||
Lightweight Directory Access Protocol Version 3 | ||||
Requirements of authentication methods, SASL mechanisms, and TLS | Requirements of authentication methods, SASL mechanisms, and TLS | |||
are described in [AUTHMETH]." (also apply to next two below) | are described in [AUTHMETH]." (also apply to next two below) | |||
- Add "Servers which provide access to sensitive information MUST, | - Add "Servers which provide access to sensitive information MUST, | |||
and other servers SHOULD support privacy protections such as those | and other servers SHOULD support privacy protections such as those | |||
described in [RFC2829] and [RFC2830]." as a third paragraph. | described in [RFC2829] and [RFC2830]." as a third paragraph. | |||
D.33 Section 7 | Sermersheim Internet-Draft - Expires Jan 2004 Page 61 | |||
Lightweight Directory Access Protocol Version 3 | ||||
D.8 Section 7 | ||||
- Add "Servers which support update operations MUST, and other | - Add "Servers which support update operations MUST, and other | |||
servers SHOULD, support strong authentication mechanisms described | servers SHOULD, support strong authentication mechanisms described | |||
in [RFC2829]." as a fourth paragraph. | in [RFC2829]." as a fourth paragraph. | |||
- Add "In order to automatically follow referrals, clients may need | - Add "In order to automatically follow referrals, clients may need | |||
to hold authentication secrets. This poses significant privacy and | to hold authentication secrets. This poses significant privacy and | |||
security concerns and SHOULD be avoided." as a sixth paragraph. | security concerns and SHOULD be avoided." as a sixth paragraph. | |||
There are concerns with "automatic" chasing regardless of which, | There are concerns with "automatic" chasing regardless of which, | |||
if any, authentication method/mechanism is used. | if any, authentication method/mechanism is used. | |||
- Add notes regarding DoS attack found by CERT advisories. | - Add notes regarding DoS attack found by CERT advisories. | |||
D.34 Appendix C | D.9 Various issues on ldapbis mailing list (some may already be | |||
resolved) | ||||
- C.9. Explain why we removed ;binary, and what clients can do to | - "Attribute Name Length Bounds" thread. | |||
get around potential problems (likely refer to an I-D) | ||||
Sermersheim Internet-Draft - Expires Jan 2004 Page 60 | - "Extensibility of SearchRequest.attributes" thread | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 62 | ||||
Lightweight Directory Access Protocol Version 3 | Lightweight Directory Access Protocol Version 3 | |||
Full Copyright Statement | Full Copyright Statement | |||
Copyright (C) The Internet Society (2002). All Rights Reserved. | Copyright (C) The Internet Society (2002). All Rights Reserved. | |||
This document and translations of it may be copied and furnished to | This document and translations of it may be copied and furnished to | |||
others, and derivative works that comment on or otherwise explain it | others, and derivative works that comment on or otherwise explain it | |||
or assist in its implementation may be prepared, copied, published | or assist in its implementation may be prepared, copied, published | |||
and distributed, in whole or in part, without restriction of any | and distributed, in whole or in part, without restriction of any | |||
skipping to change at line 3282 | skipping to change at line 3349 | |||
The limited permissions granted above are perpetual and will not be | The limited permissions granted above are perpetual and will not be | |||
revoked by the Internet Society or its successors or assigns. | revoked by the Internet Society or its successors or assigns. | |||
This document and the information contained herein is provided on an | This document and the information contained herein is provided on an | |||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | |||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | |||
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | |||
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | |||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
Sermersheim Internet-Draft - Expires Jan 2004 Page 61 | Sermersheim Internet-Draft - Expires Jan 2004 Page 63 | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |