--- /dev/null
+
+Internet Draft Mike Just, Entrust
+ K. Leclair, Entrust
+ Jim Sermersheim, Novell
+ Mark Smith, Netscape
+Document: <draft-just-ldapv3-rescodes-02.txt> April, 2000
+Category: Standards Track
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use
+ <draft-just-ldapv3-rescodes-02.txt>
+
+
+Status of this Memo
+
+ This document is an Internet-Draft and is in full conformance with
+ all provisions of Section 10 of RFC2026 [RFC2026].
+
+ Internet-Drafts are working documents of the Internet Engineering
+ Task Force (IETF), its areas, and its working groups. Note that other
+ groups may also distribute working documents as Internet-Drafts.
+ Internet-Drafts are draft documents valid for a maximum of six months
+ and may be updated, replaced, or obsoleted by other documents at any
+ time. It is inappropriate to use Internet- Drafts as reference
+ material or to cite them other than as "work in progress."
+
+ The list of current Internet-Drafts can be accessed at
+ http://www.ietf.org/ietf/1id-abstracts.txt
+ The list of Internet-Draft Shadow Directories can be accessed at
+ http://www.ietf.org/shadow.html.
+
+1. Abstract
+
+ The purpose of this document is to describe, in some detail, the
+ meaning and use of the result codes used with the LDAPv3 protocol.
+ Of particular importance are the error codes, which represent the
+ majority of the result codes. This document provides definitions for
+ each result code, and outlines the expected behaviour of the various
+ operations with respect to how result codes and in particular, error
+ conditions should be handled and which specific error code should be
+ returned.
+
+ It is hoped that this document will facilitate interoperability
+ between clients and servers and the development of intelligent LDAP
+ clients capable of acting upon the results received from the server.
+
+1.1 Relationship to X.500
+
+ The LDAPv3 RFC [RFC2251] states that "An LDAP server MUST act in
+ accordance with the X.500(1993) series of ITU recommendations when
+ providing the service. However, it is not required that an LDAP
+ server make use of any X.500 protocols in providing this service,
+ e.g. LDAP can be mapped onto any other directory system so long as
+ the X.500 data and service model as used in LDAP is not violated in
+ the LDAP interface." This means that there are two types of LDAP
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 1
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ servers, those that act as a front end to an X.500 directory, and
+ stand alone LDAP servers which use some other form of repository as
+ the back end.
+
+ Because of differences between X.500 and LDAP there may be some
+ differences in behaviour between LDAP-only servers and LDAP servers
+ that act as front ends to X.500 DSAs. One such difference is the
+ definition of specific access controls for X.500. X.500 defines the
+ discloseOnError permission, an access control parameter for which
+ there is currently no equivalent defined for LDAP. If an LDAP server
+ is acting as a front end to an X.500 DSA then it may return
+ noSuchObject when the target entry is found but the client does not
+ have permission to view or modify the entry. Unless the server
+ implements X.500 style access controls LDAP-only servers should only
+ return noSuchObject when the target entry is not found until such
+ time that similar access controls are defined for LDAP only servers.
+ Because the client may not know what sort of LDAP server it is
+ communicating with it should not rely on the behaviour of the server
+ in this respect.
+
+2. Conventions used in this document
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in RFC-2119 [RFC2119].
+
+3. Overview
+
+ This document collects and refines the definitions and descriptions
+ for LDAPv3 result codes, as found in a variety of sources (see
+ Section 8). In some cases, material from these sources was absent,
+ inadequate or ambiguous. It is the hope of this document to present
+ consistent definitions and descriptions of LDAPv3 result codes.
+
+ This document consists of two major sections facilitating information
+ searches based on either a particular result code, or LDAP operation.
+
+ Section 5 presents a glossary for the result codes. Firstly, each is
+ classified as either an erroneous or non-erroneous result. The
+ erroneous results, or error codes, are further classified based on
+ the types of error codes defined in X.511 [X511]. Some
+ reclassification was performed where appropriate. For each result
+ code, a definition, and list of operations that could return this
+ code are given.
+
+ Section 6 describes, for each operation, the result codes that could
+ be returned for that operation. Firstly, Section 6.1 enumerates
+ those result codes that are applicable to all operations. Within
+ each remaining section (which is specific to each operation), the
+ error codes that are specific to that operation (in addition to the
+ result codes specified in Section 6.1) are presented.
+
+ Also, Appendix A (Section 11) presents a simple matrix that indicates
+ valid operation/result code pairs in LDAPv3.
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 2
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+
+4. Table of Contents
+
+ 1. Abstract........................................................1
+ 1.1 Relationship to X.500...........................................1
+ 2. Conventions used in this document...............................2
+ 3. Overview........................................................2
+ 4. Table of Contents...............................................3
+ 5. Result Codes in LDAPv3..........................................4
+ 5.1 Description of Non-Erroneous Result Codes.......................6
+ 5.1.1 success(0)...................................................6
+ 5.1.2 compareFalse(5)..............................................6
+ 5.1.3 compareTrue(6)...............................................6
+ 5.1.4 referral(10).................................................7
+ 5.1.5 saslBindInProgress(14).......................................7
+ 5.2 Description of Error Codes......................................7
+ 5.2.1 General Error Codes..........................................7
+ 5.2.1.1 other(80)................................................7
+ 5.2.2 Specific Error Codes.........................................7
+ 5.2.2.1 Attribute Problem Error Codes............................7
+ 5.2.2.1.1 noSuchAttribute(16)...................................8
+ 5.2.2.1.2 undefinedAttributeType(17)............................8
+ 5.2.2.1.3 inappropriateMatching(18).............................8
+ 5.2.2.1.4 constraintViolation(19)...............................8
+ 5.2.2.1.5 attributeOrValueExists(20)............................8
+ 5.2.2.1.6 invalidAttributeSyntax(21)............................8
+ 5.2.2.2 NameProblem Error Codes..................................9
+ 5.2.2.2.1 noSuchObject(32)......................................9
+ 5.2.2.2.2 aliasProblem(33)......................................9
+ 5.2.2.2.3 invalidDNSyntax(34)...................................9
+ 5.2.2.3 SecurityProblem Error Codes..............................9
+ 5.2.2.3.1 authMethodNotSupported(7).............................9
+ 5.2.2.3.2 strongAuthRequired(8)................................10
+ 5.2.2.3.3 confidentialityRequired(13)..........................10
+ 5.2.2.3.4 aliasDereferencingProblem(36)........................10
+ 5.2.2.3.5 inappropriateAuthentication(48)......................10
+ 5.2.2.3.6 invalidCredentials(49)...............................11
+ 5.2.2.3.7 insufficientAccessRights(50).........................11
+ 5.2.2.4 ServiceProblem Error Codes..............................11
+ 5.2.2.4.1 operationsError(1)...................................11
+ 5.2.2.4.2 protocolError(2).....................................11
+ 5.2.2.4.3 timeLimitExceeded(3).................................12
+ 5.2.2.4.4 sizeLimitExceeded(4).................................12
+ 5.2.2.4.5 adminLimitExceeded(11)...............................12
+ 5.2.2.4.6 unavailableCriticalExtension(12).....................12
+ 5.2.2.4.7 busy(51).............................................13
+ 5.2.2.4.8 unavailable(52)......................................13
+ 5.2.2.4.9 unwillingToPerform(53)...............................13
+ 5.2.2.4.10 loopDetect(54)......................................13
+ 5.2.2.5 UpdateProblem Error Codes...............................13
+ 5.2.2.5.1 namingViolation(64)..................................13
+ 5.2.2.5.2 objectClassViolation(65).............................14
+ 5.2.2.5.3 notAllowedOnNonLeaf(66)..............................14
+ 5.2.2.5.4 notAllowedOnRDN(67)..................................14
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 3
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ 5.2.2.5.5 entryAlreadyExists(68)...............................14
+ 5.2.2.5.6 objectClassModsProhibited(69)........................14
+ 5.2.2.5.7 affectsMultipleDSAs(71)..............................15
+ 6 LDAP Operations.................................................15
+ 6.1 Common Result Codes............................................16
+ 6.1.1 Non-erroneous results.......................................16
+ 6.1.2 Security Errors.............................................16
+ 6.1.3 Service Errors..............................................16
+ 6.1.4 General Errors..............................................16
+ 6.2 Bind Operation Errors..........................................16
+ 6.2.1 Non-erroneous results.......................................17
+ 6.2.2 Name Errors.................................................17
+ 6.2.3 Security Errors.............................................17
+ 6.3 Search Operation Errors........................................17
+ 6.3.1 Name Errors.................................................18
+ 6.3.2 Attribute Errors............................................18
+ 6.3.3 Security Errors.............................................18
+ 6.3.4 Service Errors..............................................18
+ 6.4 Modify Operation Errors........................................18
+ 6.4.1 Name Errors.................................................19
+ 6.4.2 Update Errors...............................................19
+ 6.4.3 Attribute Errors............................................19
+ 6.4.4 Security Errors.............................................19
+ 6.5 Add Operation Errors...........................................19
+ 6.5.1 Name Errors.................................................20
+ 6.5.2 Update Errors...............................................20
+ 6.5.3 Attribute Errors............................................20
+ 6.5.4 Security Errors.............................................20
+ 6.6 Delete Operation Errors........................................21
+ 6.6.1 Name Errors.................................................21
+ 6.6.2 Update Errors...............................................21
+ 6.6.3 Security Errors.............................................21
+ 6.7 ModifyDN Operation Errors......................................21
+ 6.7.1 Name Errors.................................................22
+ 6.7.2 Update Errors...............................................22
+ 6.7.3 Attribute Errors............................................22
+ 6.7.4 Security Errors.............................................22
+ 6.8 Compare Operation Errors.......................................22
+ 6.8.1 Name Errors.................................................23
+ 6.8.2 Attribute Errors............................................23
+ 6.8.3 Security Errors.............................................23
+ 6.8.4 Example.....................................................23
+ 6.9 Extended Operation Errors......................................24
+ 6.10 Operations with no Server Response............................24
+ 6.11 Unsolicited Notification......................................24
+ 6.12 Controls......................................................25
+ 7. Security Considerations........................................25
+ 8. References.....................................................25
+ 9. Acknowledgments................................................25
+ 10. Author's Addresses............................................26
+ 11 Appendix A: Operation/Response Matrix..........................27
+ 12 Full Copyright Statement.......................................29
+
+5. Result Codes in LDAPv3
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 4
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+
+ In this section, a glossary of the result codes that may be returned
+ from a server to a client is provided. This section is meant to
+ provide a central, unified source for these definitions. RFC 2251
+ [RFC2251] and X.511 [X511] were primary sources, forming the basis
+ for the definitions given in this section.
+
+ LDAP v3 [RFC2251] defines the following result message for return
+ from the server to the client, where "new" indicates those codes that
+ were not used in LDAP v2.
+
+ LDAPResult ::= SEQUENCE {
+ resultCode ENUMERATED {
+ success (0),
+ operationsError (1),
+ protocolError (2),
+ timeLimitExceeded (3),
+ sizeLimitExceeded (4),
+ compareFalse (5),
+ compareTrue (6),
+ authMethodNotSupported (7),
+ strongAuthRequired (8),
+ -- 9 reserved --
+ referral (10), -- new
+ adminLimitExceeded (11), -- new
+ unavailableCriticalExtension (12), -- new
+ confidentialityRequired (13), -- new
+ saslBindInProgress (14), -- new
+ noSuchAttribute (16),
+ undefinedAttributeType (17),
+ inappropriateMatching (18),
+ constraintViolation (19),
+ attributeOrValueExists (20),
+ invalidAttributeSyntax (21),
+ -- 22-31 unused --
+ noSuchObject (32),
+ aliasProblem (33),
+ invalidDNSyntax (34),
+ -- 35 reserved for undefined isLeaf --
+ aliasDereferencingProblem (36),
+ -- 37-47 unused --
+ inappropriateAuthentication (48),
+ invalidCredentials (49),
+ insufficientAccessRights (50),
+ busy (51),
+ unavailable (52),
+ unwillingToPerform (53),
+ loopDetect (54),
+ -- 55-63 unused --
+ namingViolation (64),
+ objectClassViolation (65),
+ notAllowedOnNonLeaf (66),
+ notAllowedOnRDN (67),
+ entryAlreadyExists (68),
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 5
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ objectClassModsProhibited (69),
+ -- 70 reserved for CLDAP --
+ affectsMultipleDSAs (71), -- new
+ -- 72-79 unused --
+ other (80) },
+ -- 81-90 reserved for APIs --
+ matchedDN LDAPDN,
+ errorMessage LDAPString,
+ referral [3] Referral OPTIONAL }
+
+ If a client receives a result code that is not listed above, it is to
+ be treated as an unknown error condition. A server MUST NOT return an
+ API result code (81-90).
+
+ The LDAP result includes an errorMessage field, which may, at the
+ server's option, be used to return a string containing a textual,
+ human-readable error diagnostic. As this error diagnostic is not
+ standardized, implementations MUST NOT rely on the values returned.
+ If the server chooses not to return a textual diagnostic, the
+ errorMessage field of the LDAPResult type MUST contain a zero length
+ string.
+
+ In the following subsections, definitions for each result code are
+ provided. In addition, the operations that may return each result
+ code are also identified. The set of all operations consists of the
+ following: Bind; Search; Modify; Add; Delete; ModifyDN; Extended; and
+ Compare.
+
+5.1 Description of Non-Erroneous Result Codes
+
+ Five result codes that may be returned in LDAPResult are not used to
+ indicate an error. These result codes are listed below. The first
+ three codes, indicate to the client that no further action is
+ required in order to satisfy their request. In contrast, the last
+ two errors require further action by the client in order to complete
+ their original operation request.
+
+5.1.1 success(0)
+
+ Applicable operations: all except for Compare.
+
+ This result code does not indicate an error. It is returned when the
+ client operation completed successfully.
+
+5.1.2 compareFalse(5)
+
+ Applicable operations: Compare.
+
+ This result code does not indicate an error. It is used to indicate
+ that the result of a Compare operation is FALSE.
+
+5.1.3 compareTrue(6)
+
+ Applicable operations: Compare.
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 6
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+
+ This result code does not indicate an error. It is used to indicate
+ that the result of a Compare operation is TRUE.
+
+5.1.4 referral(10)
+
+ Applicable operations: all.
+
+ This result code is new in LDAPv3. Rather than indicating an error,
+ this result code is used to indicate that the server does not hold
+ the target entry of the request but is able to provide alternative
+ servers that may. A set of server(s) URLs may be returned in the
+ referral field, which the client may subsequently query to attempt to
+ complete their operation.
+
+5.1.5 saslBindInProgress(14)
+
+ Applicable operations: Bind.
+
+ This result code is new in LDAPv3. This result code is not an error
+ response from the server, but rather, is a request for bind
+ continuation. The server requires the client to send a new bind
+ request, with the same SASL mechanism, to continue the authentication
+ process [RFC2251, Section 4.2.3].
+
+5.2 Description of Error Codes
+
+ General error codes (see Section 5.2.1) are typically returned only
+ when no suitable specific error exists. Specific error codes (see
+ Section 5.2.2) are meant to capture situations that are specific to
+ the requested operation.
+
+5.2.1 General Error Codes
+
+ A general error code typically specifies an error condition for which
+ there is no suitable specific error code. If the server can return an
+ error, which is more specific than the following general errors, then
+ the specific error should be returned instead.
+
+5.2.1.1 other(80)
+
+ Applicable operations: all.
+
+ This error code should be returned only if no other error code is
+ suitable. Use of this error code should be avoided if possible.
+ Details of the error should be provided in the error message.
+
+5.2.2 Specific Error Codes
+
+ Specific errors are used to indicate that a particular type of error
+ has occurred. These error types are Name, Update, Attribute,
+ Security, and Service.
+
+5.2.2.1 Attribute Problem Error Codes
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 7
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+
+ An attribute error reports a problem related to an attribute
+ specified by the client in their request message.
+
+5.2.2.1.1 noSuchAttribute(16)
+
+ Applicable operations: Modify, Compare.
+
+ This error may be returned if the attribute specified as an argument
+ of the operation does not exist in the entry.
+
+5.2.2.1.2 undefinedAttributeType(17)
+
+ Applicable operations: Modify, Add.
+
+ This error may be returned if the specified attribute is unrecognized
+ by the server, since it is not present in the serverÆs defined
+ schema. If the server doesnÆt recognize an attribute specified in a
+ search request as the attribute to be returned the server should not
+ return an error in this case - it should just return values for the
+ requested attributes it does recognize. Note that this result code
+ only applies to the Add and Modify operations [X.511, Section 12.4].
+
+5.2.2.1.3 inappropriateMatching(18)
+
+ Applicable operations: Search.
+
+ An attempt was made, e.g., in a filter, to use a matching rule not
+ defined for the attribute type concerned [X511, Section 12.4].
+
+5.2.2.1.4 constraintViolation(19)
+
+ Applicable operations: Modify, Add, ModifyDN.
+
+ This error should be returned by the server if an attribute value
+ specified by the client violates the constraints placed on the
+ attribute as it was defined in the DSA - this may be a size
+ constraint or a constraint on the content.
+
+5.2.2.1.5 attributeOrValueExists(20)
+
+ Applicable operations: Modify, Add.
+
+ This error should be returned by the server if the value specified by
+ the client already exists within the attribute.
+
+5.2.2.1.6 invalidAttributeSyntax(21)
+
+ Applicable operations: Modify, Add.
+
+ This error should be returned by the server if the attribute syntax
+ for the attribute value, specified as an argument of the operation,
+ is unrecognized or invalid.
+
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 8
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+5.2.2.2 NameProblem Error Codes
+
+ A name error reports a problem related to the distinguished name
+ provided as an argument to an operation [X511, Section 12.5].
+
+ For result codes of noSuchObject, aliasProblem, invalidDNSyntax and
+ aliasDereferencingProblem (see Section 5.2.2.3.7), the matchedDN
+ field is set to the name of the lowest entry (object or alias) in the
+ directory that was matched. If no aliases were dereferenced while
+ attempting to locate the entry, this will be a truncated form of the
+ name provided, or if aliases were dereferenced, of the resulting
+ name, as defined in section 12.5 of X.511 [X511]. The matchedDN field
+ is to be set to a zero length string with all other result codes
+ [RFC2251, Section 4.1.10].
+
+5.2.2.2.1 noSuchObject(32)
+
+ Applicable operations: all except for Bind.
+
+ This error should only be returned if the target object cannot be
+ found. For example, in a search operation if the search base can not
+ be located in the DSA the server should return noSuchObject. If,
+ however, the search base is found but does not match the search
+ filter, success, with no resultant objects, should be returned
+ instead of noSuchObject.
+
+ If the LDAP server is a front end for an X.500 DSA then noSuchObject
+ may also be returned if discloseOnError is not granted for an entry
+ and the client does not have permission to view or modify the entry.
+
+5.2.2.2.2 aliasProblem(33)
+
+ Applicable operations: Search.
+
+ An alias has been dereferenced which names no object [X511, Section
+ 12.5].
+
+5.2.2.2.3 invalidDNSyntax(34)
+
+ Applicable operations: all.
+
+ This error should be returned by the server if the DN syntax is
+ incorrect. It should not be returned if the DN is correctly formed
+ but represents an entry which is not permitted by the structure rules
+ at the DSA; in this case namingViolation should be returned instead.
+
+5.2.2.3 SecurityProblem Error Codes
+
+ A security error reports a problem in carrying out an operation for
+ security reasons [X511, Section 12.7].
+
+5.2.2.3.1 authMethodNotSupported(7)
+
+ Applicable operations: Bind.
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 9
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+
+ This error code should be returned if the client requests, in a Bind
+ request, an authentication method which is not supported or
+ recognized by the server.
+
+5.2.2.3.2 strongAuthRequired(8)
+
+ Applicable operations: all.
+
+ This error may be returned on a bind request if the server only
+ accepts strong authentication or it may be returned when a client
+ attempts an operation which requires the client to be strongly
+ authenticated - for example Delete.
+
+ This result code may also be returned in an unsolicited notice of
+ disconnection if the server detects that an established underlying
+ security association protecting communication between the client and
+ server has unexpectedly failed or been compromised. [RFC2251, Section
+ 4.4.1]
+
+5.2.2.3.3 confidentialityRequired(13)
+
+ Applicable operations: all.
+
+ This error code is new in LDAPv3. This error code may be returned if
+ the session is not protected by a protocol which provides session
+ confidentiality. For example, if the client did not establish a TLS
+ connection using a cipher suite which provides confidentiality of the
+ session before sending any other requests, and the server requires
+ session confidentiality then the server may reject that request with
+ a result code of confidentialityRequired.
+
+5.2.2.3.4 aliasDereferencingProblem(36)
+
+ Applicable operations: Search.
+
+ An alias was encountered in a situation where it was not allowed or
+ where access was denied [X511, Section 12.5]. For example, if the
+ client does not have read permission for the aliasedObjectName
+ attribute and its value then the error aliasDereferencingProblem
+ should be returned. [X511, Section 7.11.1.1]
+
+ Notice that this error has similar meaning to
+ insufficientAccessRights(50) (see Section 5.2.2.3.7), but is specific
+ to Searching on an alias.
+
+ (See note at start of Section 5.2.2.2 regarding this error code.)
+
+5.2.2.3.5 inappropriateAuthentication(48)
+
+ Applicable operations: Bind.
+
+ This error should be returned by the server when the client has tried
+ to use a method of authentication that is inappropriate, that is a
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 10
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ method of authentication which the client is unable to use correctly.
+ In other words, the level of security associated with the requestorÆs
+ credentials is inconsistent with the level of protection requested,
+ e.g. simple credentials were supplied while strong credentials were
+ required [X511, Section 12.7].
+
+5.2.2.3.6 invalidCredentials(49)
+
+ Applicable operations: Bind.
+
+ This error code is returned if the DN or password used in a simple
+ bind operation is incorrect, or if the DN or password is incorrect
+ for some other reason, e.g. the password has expired. This result
+ code only applies to Bind operations -- it should not be returned for
+ other operations if the client does not have sufficient permission to
+ perform the requested operation - in this case the return code should
+ be insufficientAccessRights.
+
+5.2.2.3.7 insufficientAccessRights(50)
+
+ Applicable operations: all except for Bind.
+
+ The requestor does not have the right to carry out the requested
+ operation [X511, Section 12.7]. Note that the more specific
+ aliasDereferencingProblem (see Section 5.2.2.3.4) is returned in case
+ of a Search on an alias where the requestor has
+ insufficientAccessRights.
+
+5.2.2.4 ServiceProblem Error Codes
+
+ A service error reports a problem related to the provision of the
+ service [X511, Section 12.8].
+
+5.2.2.4.1 operationsError(1)
+
+ Applicable operations: all except Bind.
+
+ If the server requires that the client bind before browsing or
+ modifying the directory, the server MAY reject a request other than
+ binding, unbinding or an extended request with the "operationsError"
+ result. [RFC2251, Section 4.2.1]
+
+5.2.2.4.2 protocolError(2)
+
+ Applicable operations: all.
+
+ A protocol error should be returned by the server when an invalid or
+ malformed request is received from the client. This may be a request
+ that is not recognized as an LDAP request, for example, if a
+ nonexistent operation were specified in LDAPMessage. As well, it may
+ be the result of a request that is missing a required parameter, such
+ as a search filter in a search request. If the server can return an
+ error, which is more specific than protocolError, then this error
+ should be returned instead. For example if the server does not
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 11
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ recognize the authentication method requested by the client then the
+ error authMethodNotSupported should be returned instead of
+ protocolError. The server may return details of the error in the
+ error string.
+
+5.2.2.4.3 timeLimitExceeded(3)
+
+ Applicable operations: all.
+
+ This error should be returned when the time to perform an operation
+ has exceeded either the time limit specified by the client (which may
+ only be set by the client in a search operation) or the limit
+ specified by the server. If the time limit is exceeded on a search
+ operation then the result is an arbitrary selection of the
+ accumulated results [X511, Section 7.5]. Note that an arbitrary
+ selection of results may mean that no results are returned to the
+ client.
+
+ If the LDAP server is a front end for an X.500 server, any operation
+ that is chained may exceed the timelimit, therefore clients can
+ expect to receive timelimitExceeded for all operations. For stand
+ alone LDAP-Servers that do not implement chaining it is unlikely that
+ operations other than search operations will exceed the defined
+ timelimit.
+
+5.2.2.4.4 sizeLimitExceeded(4)
+
+ Applicable operations: Search.
+
+ This error should be returned when the number of results generated by
+ a search exceeds the maximum number of results specified by either
+ the client or the server. If the size limit is exceeded then the
+ results of a search operation will be an arbitrary selection of the
+ accumulated results, equal in number to the size limit [X511, Section
+ 7.5].
+
+5.2.2.4.5 adminLimitExceeded(11)
+
+ Applicable operations: all.
+
+ This error code is new in LDAPv3. The server has reached some limit
+ set by an administrative authority, and no partial results are
+ available to return to the user [X511, Section 12.8]. For example,
+ there may be an administrative limit to the number of entries a
+ server will check when gathering potential search result candidates
+ [Net].
+
+5.2.2.4.6 unavailableCriticalExtension(12)
+
+ Applicable operations: all.
+
+ This error code is new in LDAPv3. The server was unable to satisfy
+ the request because one or more critical extensions were not
+ available [X511, Section 12.8]. This error is returned, for example,
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 12
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ when a control submitted with a request is marked critical but is not
+ recognized by a server or when such a control is not appropriate for
+ the operation type. [RFC2251 section 4.1.12].
+
+5.2.2.4.7 busy(51)
+
+ Applicable operations: all.
+
+ This error code may be returned if the server is unable to process
+ the clientÆs request at this time. This implies that if the client
+ retries the request shortly the server will be able to process it
+ then.
+
+5.2.2.4.8 unavailable(52)
+
+ Applicable operations: all.
+
+ This error code is returned when the server is unavailable to process
+ the clientÆs request. This usually means that the LDAP server is
+ shutting down [RFC2251, Section 4.2.3].
+
+5.2.2.4.9 unwillingToPerform(53)
+
+ Applicable operations: all.
+
+ This error code should be returned by the server when a client
+ request is properly formed but which the server is unable to complete
+ due to server-defined restrictions. For example, the server, or some
+ part of it, is not prepared to execute this request, e.g. because it
+ would lead to excessive consumption of resources or violates the
+ policy of an Administrative Authority involved [X511, Section 12.8].
+ If the server is able to return a more specific error code such as
+ adminLimitExceeded it should. This error may also be returned if the
+ client attempts to modify attributes which can not be modified by
+ users, e.g., operational attributes such as creatorsName or
+ createTimestamp [X511, Section 7.12]. If appropriate, details of the
+ error should be provided in the error message.
+
+5.2.2.4.10 loopDetect(54)
+
+ Applicable operations: all.
+
+ This error may be returned by the server if it detects an alias or
+ referral loop, and is unable to satisfy the clientÆs request.
+
+5.2.2.5 UpdateProblem Error Codes
+
+ An update error reports problems related to attempts to add, delete,
+ or modify information in the DIB [X511, Section 12.9].
+
+5.2.2.5.1 namingViolation(64)
+
+ Applicable operations: Add, ModifyDN.
+
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 13
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ The attempted addition or modification would violate the structure
+ rules of the DIT as defined in the directory schema and X.501. That
+ is, it would place an entry as the subordinate of an alias entry, or
+ in a region of the DIT not permitted to a member of its object class,
+ or would define an RDN for an entry to include a forbidden attribute
+ type [X511, Section 12.9].
+
+5.2.2.5.2 objectClassViolation(65)
+
+ Applicable operations: Modify, Add, ModifyDN.
+
+ This error should be returned if the operation requested by the user
+ would violate the objectClass requirements for the entry if carried
+ out. On an add or modify operation this would result from trying to
+ add an object class without a required attribute, or by trying to add
+ an attribute which is not permitted by the current object class set
+ in the entry. On a modify operation this may result from trying to
+ remove a required attribute without removing the associated auxiliary
+ object class, or by attempting to remove an object class while the
+ attributes it permits are still present.
+
+5.2.2.5.3 notAllowedOnNonLeaf(66)
+
+ Applicable operations: Delete, ModifyDN.
+
+ This operation should be returned if the client attempts to perform
+ an operation which is permitted only on leaf entries - e.g., if the
+ client attempts to delete a non-leaf entry. If the directory does
+ not permit ModifyDN for non-leaf entries then this error may be
+ returned if the client attempts to change the DN of a non-leaf entry.
+ (Note that 1988 edition X.500 servers only permitted change of the
+ RDN of an entry's DN [X.511, Section 11.4.1]).
+
+5.2.2.5.4 notAllowedOnRDN(67)
+
+ Applicable operations: Modify.
+
+ The attempted operation would affect the RDN (e.g., removal of an
+ attribute which is a part of the RDN) [X511, Section 12.9]. If the
+ client attempts to remove from an entry any of its distinguished
+ values, those values which form the entry's relative distinguished
+ name the server should return the error notAllowedOnRDN. [RFC2251,
+ Section 4.6]
+
+5.2.2.5.5 entryAlreadyExists(68)
+
+ Applicable operations: Add, ModifyDN.
+
+ This error should be returned by the server when the client attempts
+ to add an entry which already exists, or if the client attempts to
+ rename an entry with the name of an entry which exists.
+
+5.2.2.5.6 objectClassModsProhibited(69)
+
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 14
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ Applicable operations: Modify.
+
+ An operation attempted to modify an object class that should not be
+ modified, e.g., the structural object class of an entry. Some
+ servers may not permit object class modifications, especially
+ modifications to the structural object class since this may change
+ the entry entirely, name forms, structure rules etc. [X.511, Section
+ 12.9].
+
+5.2.2.5.7 affectsMultipleDSAs(71)
+
+ Applicable operations: ModifyDN.
+
+ This error code is new for LDAPv3. This error code should be returned
+ to indicate that the operation could not be performed since it
+ affects more than one DSA.
+
+ X.500 restricts the ModifyDN operation to only affect entries that
+ are contained within a single server. If the LDAP server is mapped
+ onto DAP, then this restriction will apply, and the resultCode
+ affectsMultipleDSAs will be returned if this error occurred. In
+ general clients MUST NOT expect to be able to perform arbitrary
+ movements of entries and subtrees between servers [RFC2251, Section
+ 4.9].
+
+6 LDAP Operations
+
+ LDAP v3 [RFC2251] defines the following LDAPMessage for conveyance of
+ the intended operation request from the client to the server.
+
+ LDAPMessage ::= SEQUENCE {
+ messageID MessageID,
+ protocolOp CHOICE {
+ bindRequest BindRequest,
+ bindResponse BindResponse,
+ unbindRequest UnbindRequest,
+ searchRequest SearchRequest,
+ searchResEntry SearchResultEntry,
+ searchResDone SearchResultDone,
+ searchResRef SearchResultReference,
+ modifyRequest ModifyRequest,
+ modifyResponse ModifyResponse,
+ addRequest AddRequest,
+ addResponse AddResponse,
+ delRequest DelRequest,
+ delResponse DelResponse,
+ modDNRequest ModifyDNRequest,
+ modDNResponse ModifyDNResponse,
+ compareRequest CompareRequest,
+ compareResponse CompareResponse,
+ abandonRequest AbandonRequest,
+ extendedReq ExtendedRequest,
+ extendedResp ExtendedResponse },
+ controls [0] Controls OPTIONAL }
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 15
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+
+ MessageID ::= INTEGER (0 .. maxInt)
+
+ maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) -
+
+ Starting in Section 6.2, behaviour regarding the return of each
+ result code is specified for each operation. Section 6.1 indicates
+ those result codes that are typically applicable to all operations.
+
+6.1 Common Result Codes
+
+ The following result codes are applicable to, and may be returned in
+ response to all operations (except where stated otherwise).
+
+6.1.1 Non-erroneous results
+
+ For all but a Compare operation, a success(0) result code will be
+ returned in the case that the requested operation succeeds; a
+ compareTrue would be returned for a Compare operation. For each
+ operation, the server may return referral(10), as defined in Section
+ 5.1.4.
+
+6.1.2 Security Errors
+
+ Of the six possible security errors, two may be returned in response
+ to every operation. These two errors are strongAuthRequired(8) and
+ confidentialityRequired(13).
+
+6.1.3 Service Errors
+
+ All service errors, except operationsError(1), and
+ sizeLimitExceeded(4) may be returned in response to any LDAP v3
+ operation. operationsError(1) is applicable to all operations except
+ Bind. sizeLimitExceeded is only applicable to the Search operation.
+
+6.1.4 General Errors
+
+ The general error other(80)is applicable to all operations.
+
+6.2 Bind Operation Errors
+
+ If the bind operation succeeds then a result code of success will be
+ returned to the client. If the server does not hold the target entry
+ of the request, a referral(10) may be returned. If the operation
+ fails then the result code will be one of the following from the set
+ of non-erroneous result, name errors, security errors, service
+ errors, and general errors.
+
+ If the server does not support the client's requested protocol
+ version, it MUST set the resultCode to protocolError.
+ If the client receives a BindResponse response where the resultCode
+ was protocolError, it MUST close the connection as the server will be
+ unwilling to accept further operations. (This is for compatibility
+
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 16
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ with earlier versions of LDAP, in which the bind was always the first
+ operation, and there was no negotiation.) [RFC2251, Section 5.2.3]
+
+ The remaining errors listed in this section are operation-specific.
+ An operation may also result in the return of any of the common
+ errors, as listed in Section 6.1.
+
+6.2.1 Non-erroneous results
+
+ In addition to success or referral, the following non-erroneous
+ result code may be returned:
+
+ saslBindInProgress: the server requires the client to send a new bind
+ request, with the same sasl mechanism, to continue the authentication
+ process,
+
+6.2.2 Name Errors
+
+ invalidDNSyntax: the DN provided does not have the correct syntax,
+
+6.2.3 Security Errors
+
+ As stated in Section 6.1.2, strongAuthRequired(8) and
+ confidentialityRequired(13) may be returned for any operation.
+
+ authMethodNotSupported: unrecognized SASL mechanism name,
+
+ inappropriateAuthentication: the server requires the client which had
+ attempted to bind anonymously or without supplying credentials to
+ provide some form of credentials,
+
+ invalidCredentials: the wrong password was supplied or the SASL
+ credentials could not be processed, [RFC2251, Section 4.2.3]
+
+6.3 Search Operation Errors
+
+ X.500 provides three separate operations for searching the directory
+ - Read of a single entry, List of an entryÆs children and search of
+ an entire sub-tree. LDAP provides a single search operation, however
+ the X.500 operations can be simulated by using base, one-level and
+ sub-tree scope restrictions respectively.
+
+ If the Search operation succeeds then zero or more search entries
+ will be returned followed by a search result of success. If the
+ server does not hold the target entry of the request, a referral(10)
+ may be returned. If the search operation fails then zero or more
+ search entries will be returned followed by a search result
+ containing one of the following result codes from the set of name
+ errors, attribute errors, security errors, service errors, and
+ general errors.
+
+ The remaining errors listed in this section are operation-specific.
+ An operation may also result in the return of any of the common
+ errors, as listed in Section 6.1.
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 17
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+
+6.3.1 Name Errors
+
+ noSuchObject: the base object, for the search, does not exist.
+
+ aliasProblem: an alias was dereferenced which named no object.
+
+ invalidDNSyntax: the DN provided for the search base does not have
+ the correct syntax,
+
+6.3.2 Attribute Errors
+
+ inappropriateMatching: an attempt was made to use a matching rule not
+ defined for an attribute in the search filter.
+
+6.3.3 Security Errors
+
+ As stated in Section 6.1.2, strongAuthRequired(8) and
+ confidentialityRequired(13) may be returned for any operation.
+
+ aliasDereferenceProblem: The client does not have permission for the
+ aliasedObjectName attribute or to search the dereferenced alias
+ object.
+
+ insufficientAccessRights: The requestor does not have sufficient
+ permissions to perform the search. aliasDereferenceProblem should be
+ returned in this case, if applicable.
+
+6.3.4 Service Errors
+
+ In addition to the common service errors indicated in Section 6.1.3,
+ the following service error may also be returned:
+
+ sizeLimitExceeded: the number of search results exceeds the size
+ limit specified by the client or the server. If the server has
+ defined a maximum PDU size, this error may also be returned if the
+ size of the combined results exceeds this limit.
+
+6.4 Modify Operation Errors
+
+ The Modify operation cannot be used to remove from an entry any of
+ its distinguished values, those values that form the entry's relative
+ distinguished name. An attempt to do so will result in the server
+ returning the error notAllowedOnRDN. The Modify DN Operation
+ described in section 5.9 is used to rename an entry. [RFC2251,
+ Section 4.6]
+
+ If the modify operation succeeds, a result code of success will be
+ returned to the client. If the server does not hold the target entry
+ of the request, a referral(10) may be returned. If the operation
+ fails, the result code will be one of the following from the set of
+ name errors, update errors, attribute errors, security errors,
+ service errors, and general errors.
+
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 18
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ The remaining errors listed in this section, are operation-specific.
+ An operation may also result in the return of any of the common
+ errors, as listed in Section 6.1.
+
+6.4.1 Name Errors
+
+ noSuchObject: the target object does not exist.
+
+ invalidDNSyntax: the DN provided does not have the correct syntax,
+
+6.4.2 Update Errors
+
+ objectClassViolation: An attempt was made to modify an object which
+ is illegal according to its object class definition in the schema or
+ DIT content rules for that object class.
+
+ notAllowedOnRDN: An attempt was made to modify the object entryÆs
+ distinguished name
+
+ objectClassModsProhibited: The modification attempted to change an
+ entryÆs object class which is not allowed.
+
+6.4.3 Attribute Errors
+
+ noSuchAttribute: the attribute to be modified does not exist in the
+ target entry.
+
+ undefinedAttributeType: The attribute specified does not exist in the
+ server's defined schema.
+
+ constraintViolation: The modification would create an attribute value
+ outside the normal bounds.
+
+ attributeOrValueExists: The modification would create a value which
+ already exists within the attribute.
+
+ invalidAttributeSyntax: The value specified doesnÆt adhere to the
+ syntax definition for that attribute.
+
+6.4.4 Security Errors
+
+ As stated in Section 6.1.2, strongAuthRequired(8) and
+ confidentialityRequired(13) may be returned for any operation.
+
+ insufficientAccessRights: The requestor does not have sufficient
+ permissions to modify the entry.
+
+6.5 Add Operation Errors
+
+ The superior of the entry must exist for the operation to succeed. If
+ not, a noSuchObject error is returned and the matchedDN field will
+ contain the name of the lowest entry in the directory that was
+ matched.
+
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 19
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ If the add operation succeeds, a result code of success will be
+ returned to the client. If the server does not hold the target entry
+ of the request, a referral(10) may be returned. If the operation
+ fails, the result code will be one of the following from the set of
+ name errors, update errors, attribute errors, security errors,
+ service errors, and general errors.
+
+ The remaining errors listed in this section, are operation-specific.
+ An operation may also result in the return of any of the common
+ errors, as listed in Section 6.1.
+
+6.5.1 Name Errors
+
+ noSuchObject: One or more superiors to the target entry do not exist.
+
+ invalidDNSyntax: the DN provided does not have the correct syntax,
+
+6.5.2 Update Errors
+
+ namingViolation: Either the target entry cannot be created under the
+ specified superior due to DIT structure rules, or the target entry is
+ named by an RDN not permitted by the DIT name form rule for its
+ object class.
+
+ objectClassViolation: An attempt was made to add an entry and one of
+ the following conditions existed: A required attribute was not
+ specified; an attribute was specified which is not permitted by the
+ current object class set in the entry; a structural object class
+ value was not specified; an object class value was specified that
+ doesnÆt exist in the schema.
+
+ entryAlreadyExists: The target entry already exists.
+
+6.5.3 Attribute Errors
+
+ undefinedAttributeType: The attribute specified does not exist in the
+ server's defined schema.
+
+ constraintViolation: The attribute value falls outside the bounds
+ specified by the attribute syntax.
+
+ attributeOrValueExists: A duplicate attribute value appears in the
+ list of attributes for the entry.
+
+ invalidAttributeSyntax: The value specified doesnÆt adhere to the
+ syntax definition for that attribute.
+
+6.5.4 Security Errors
+
+ As stated in Section 6.1.2, strongAuthRequired(8) and
+ confidentialityRequired(13) may be returned for any operation.
+
+
+
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 20
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ insufficientAccessRights: The requestor does not have sufficient
+ permissions to either add the entry or to add one or more of the
+ attributes specified.
+
+6.6 Delete Operation Errors
+
+ If the delete operation succeeds, a result code of success will be
+ returned to the client. If the server does not hold the target entry
+ of the request, a referral(10) may be returned. If the operation
+ fails, the result code will be one of the following from the set of
+ name errors, update errors, security errors, service errors, and
+ general errors.
+
+ The remaining errors listed in this section, are operation-specific.
+ An operation may also result in the return of any of the common
+ errors, as listed in Section 6.1.
+
+6.6.1 Name Errors
+
+ noSuchObject: The target entry does not exist.
+
+ invalidDNSyntax: the DN provided does not have the correct syntax,
+
+6.6.2 Update Errors
+
+ notAllowedOnNonLeaf: The target entry is not a leaf object. Only
+ objects having no subordinate objects in the tree may be deleted.
+
+6.6.3 Security Errors
+
+ As stated in Section 6.1.2, strongAuthRequired(8) and
+ confidentialityRequired(13) may be returned for any operation.
+
+ insufficientAccessRights: The requestor does not have sufficient
+ permissions to delete the entry.
+
+6.7 ModifyDN Operation Errors
+
+ Note that X.500 restricts the ModifyDN operation to only affect
+ entries that are contained within a single server. If the LDAP server
+ is mapped onto DAP, then this restriction will apply, and the
+ resultCode affectsMultipleDSAs will be returned if this error
+ occurred. In general clients MUST NOT expect to be able to perform
+ arbitrary movements of entries and subtrees between servers.
+ [RFC2251, Section 4.9]
+
+ If the Modify DN operation succeeds then a result code of success
+ will be returned to the client. If the server does not hold the
+ target entry of the request, a referral(10) may be returned. If the
+ operation fails then the result code will be one of the following
+ from the set of name errors, update errors, attribute errors,
+ security errors, service errors, and general errors.
+
+
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 21
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ The remaining errors listed in this section, are operation-specific.
+ An operation may also result in the return of any of the common
+ errors, as listed in Section 6.1.
+
+6.7.1 Name Errors
+
+ noSuchObject: the target object does not exist or a new superior
+ object was specified that does not exist.
+
+ invalidDNSyntax: the DN provided does not have the correct syntax.
+
+6.7.2 Update Errors
+
+ namingViolation: Either the target entry cannot be moved to the
+ specified superior due to DIT structure rules, or the target entry is
+ named by an RDN not permitted by the DIT name form rule for its
+ object class.
+
+ objectClassViolation: The client has specified that the old RDN
+ values should be removed from the entry (using the 'deleteOldRdn'
+ parameter) but the removal of these values would violate the entry's
+ schema. [RFC 2251 Section 4.9]
+
+ notAllowedOnNonLeaf: If the server does not permit the ModifyDN
+ operation on non-leaf entries this error will be returned if the
+ client attempts to rename a non-leaf entry
+
+ entryAlreadyExists: The target entry already exists.
+
+ AffectsMultipleDSAs: X.500 restricts the ModifyDN operation to only
+ affect entries that are contained within a single server. If the LDAP
+ server is mapped onto DAP, then this restriction will apply, and the
+ resultCode affectsMultipleDSAs will be returned if this error
+ occurred. In general clients MUST NOT expect to be able to perform
+ arbitrary movements of entries and sub-trees between servers.
+ [RFC2251, Section 4.9]
+
+6.7.3 Attribute Errors
+
+ constraintViolation: The operation would create an attribute value
+ outside the normal bounds.
+
+6.7.4 Security Errors
+
+ As stated in Section 6.1.2, strongAuthRequired(8) and
+ confidentialityRequired(13) may be returned for any operation.
+
+ insufficientAccessRights: The requestor does not have sufficient
+ permissions to either add the entry or to add one or more of the
+ attributes specified.
+
+6.8 Compare Operation Errors
+
+
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 22
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ If there exists a value within the attribute being compared that
+ matches the purported argument and for which compare permissions is
+ granted, the operation returns the value compareTrue in the result,
+ otherwise, the operation returns compareFalse. [X511, Section 9.2.4]
+ If the server does not hold the target entry of the request, a
+ referral(10) may be returned.
+
+ If the compare operation can not be completed, then the server may
+ return one of the following results from the set of name errors,
+ attribute errors, security errors, service errors, and general
+ errors.
+
+ The remaining errors listed in this section are operation-specific.
+ An operation may also result in the return of any of the common
+ errors, as listed in Section 6.1.
+
+6.8.1 Name Errors
+
+ noSuchObject: the entry to be compared does not exist in the
+ directory.
+
+ invalidDNSyntax: the DN provided for the entry to be compared does
+ not have the correct syntax.
+
+6.8.2 Attribute Errors
+
+ noSuchAttribute: the attribute to be compared does not exist in the
+ target entry.
+
+ invalidAttributeSyntax: The value specified doesnÆt adhere to the
+ syntax definition for that attribute.
+
+6.8.3 Security Errors
+
+ As stated in Section 6.1.2, strongAuthRequired(8) and
+ confidentialityRequired(13) may be returned for any operation.
+
+ insufficientAccessRights: If the client does not have read permission
+ for the entry to be compared, or for the attribute then
+ insufficientAccessRights should be returned, [X511, Section 9.2.4]
+
+6.8.4 Example
+
+ The following example is included to demonstrate the expected
+ responses for the compare operation.
+ Given the following entry:
+
+ dn: cn=Foo
+ objectClass: top
+ objectClass: person
+ sn: bar
+ userPassword: xyz
+
+
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 23
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ i) Compare with userPassword=xyz results in a compareTrue because the
+ requested value exists in the entry.
+
+ ii) Compare with userPassword=abc results in a compareFalse because
+ the entry contains a userPassword attribute but the value abc is not
+ present.
+
+ iii) Compare with telephoneNumber=123-456-7890 results in a
+ noSuchAttribute. The attribute telephoneNumber is permissible in the
+ entry based on the schema defined in the server but because it is
+ empty it does not exist in the target entry.
+
+ iv) Compare with ou=myOrg results in noSuchAttribute. The requested
+ attribute is a recognized attribute but it is neither present nor is
+ it valid for the target entry.
+
+ v) Compare with bogusAttr=abc results in noSuchAttribute. The
+ requested attribute is not a recognized attribute nor is it present
+ in the target entry.
+
+ Note that the response for scenarios 3 through 5 is always
+ noSuchAttribute. The semantics of the compare operation is simply
+ "does the target entry contain the specified value?" and so no
+ distinction is made between a request for an unknown, invalid, or,
+ valid but empty attribute. In all cases if the attribute is not
+ present in the entry then the result is noSuchAttribute.
+
+6.9 Extended Operation Errors
+
+ The results returned for an extended operation vary, depending on the
+ particular operation. In any case, extended Operations MAY return any
+ result code (excepting 81-90).
+
+ If the server does not recognize the request name, it MUST return
+ only the response fields from LDAPResult, containing the
+ protocolError result code [RFC2251, Section 4.12]
+
+6.10 Operations with no Server Response
+
+ The LDAP v3 protocol has two client operations for which no server
+ response is returned. Specifically, these are unbindRequest, and
+ abandonRequest. Since no response is returned, there is no need to
+ consider possible result codes for these operations.
+
+6.11 Unsolicited Notification
+
+ In some situations, a server may issue a "response" to a client for
+ which there was no client request. This notification "is used to
+ signal an extraordinary condition in the server or in the connection
+ between the client and the server. The notification is of an
+ advisory nature, and the server will not expect any response to be
+ returned from the client." [RFC2251, Section 4.4]
+
+
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 24
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+ RFC 2251 [RFC2251] describes a notice of disconnection in which a
+ protocolError, strongAuthRequired, or unavailable result code may be
+ returned. The reader is directed there for further information.
+
+6.12 Controls
+
+ Section 4.1.12 of [RFC2251] specifies the syntax for controls that
+ may be sent as part of a request. [RFC2251] defines no specific
+ controls. It should be noted that the semantics of a control may
+ alter the result code that might otherwise have been returned for the
+ requested operation (see Section 5.2.2.4.6 for example).
+
+7. Security Considerations
+
+ This draft is meant to complement and enhance the coverage of result
+ codes for LDAP v3, as described in RFC 2251 [RFC2251]. Section 7 of
+ RFC 2251 [RFC2251] lists a number of security considerations specific
+ to LDAP v3.
+
+ Note that in X.500 if the discloseOnError permission is not granted
+ then many operations will return noSuchObject instead of a more
+ specific error. As there is currently no equivalent for this
+ permission in LDAP, LDAP-only servers should return the appropriate
+ error code in the event of an error.
+
+8. References
+
+ [RFC2026] S. Bradner, "The Internet Standards Process - Revision
+ 3", RFC 2026, October 1996.
+
+ [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate
+ Requirement Levels", RFC 2119, March 1997.
+
+ [RFC2251] M. Wahl, T. Howes, S. Kille, "Lightweight Directory
+ Access Protocol", RFC 2251, December 1997.
+
+ [X511] ITU-T Recommendation X.511, "The Directory: Abstract
+ Service Definition", 1993.
+
+ [TLS] J. Hodges, R.L. Morgan, M. Wahl, "Lightweight Directory
+ Access Protocol (v3): Extension for Transport Layer
+ Security", June 1999. <draft-ietf-ldapext-ldapv3-tls-
+ 05.txt> "work in progress"
+
+ [Net] Netscape Directory SDK 3.0 for C ProgrammerÆs Guide,
+ Chapter 19: Result Codes. Available at Error! Bookmark
+ not defined.
+
+
+9. Acknowledgments
+
+ The production of this document relied heavily on the information
+ available from RFC 2251 [RFC2251] and ITU-T Recommendation X.511
+ [X511].
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 25
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+
+10. Author's Addresses
+
+ Mike Just
+ Entrust Technologies
+ 750 Heron Rd, Tower E
+ Ottawa, Ontario, Canada
+ mike.just@entrust.com
+
+ Kristianne Leclair
+ Entrust Technologies
+ 750 Heron Rd, Tower E
+ Ottawa, Ontario, Canada
+ kristianne.leclair@entrust.com
+
+ Jim Sermersheim
+ Novell
+ 122 East 1700 South
+ Provo, Utah 84606, USA
+ Error! Bookmark not defined.
+
+ Mark Smith
+ Netscape
+ 501 Ellis Street
+ Mountain View, CA 94043
+ Error! Bookmark not defined.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 26
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+
+11 Appendix A: Operation/Response Matrix
+
+
+ Result Codes Operations
+
+ B S M A D M C
+ i e o d e o o
+ n a d d l d m
+ d r i e D p
+ c f t N a
+ h y e r
+ e
+
+ Non-erroneous results
+
+ success (0) X X X X X X
+
+ compareFalse (5) X
+
+ compareTrue (6) X
+
+ referral (10) X X X X X X X
+
+ saslBindInProgress (14) X
+
+ Name errors
+
+ noSuchObject (32) X X X X X X
+
+ aliasProblem (33) X
+
+ invalidDNSyntax (34) X X X X X X X
+
+ Update errors
+
+ namingViolation (64) X X
+
+ objectClassViolation (65) X X X
+
+ notAllowedOnNonLeaf (66) X X
+
+ notAllowedonRDN (67) X
+
+ entryAlreadyExists (68) X X
+
+ objectClassModesProhibite X
+ d (69)
+
+ affectsMultipleDSAs (71) X
+
+ Attribute errors
+
+ noSuchAttribute(16) X X
+
+ undefinedAttributeType X X
+ (17)
+
+ inappropriateMatching X
+ (18)
+
+ constraintViolation (19) X X X
+
+ attributeOrValueExists X X
+ (20)
+
+ invalidAttributeSyntax X X
+ (21)
+
+ Security errors
+
+ authMethodNotSupported X
+ (7)
+
+ strongAuthRequired (8) X X X X X X X
+
+ confidentialityRequred(13 X X X X X X X
+ )
+
+ aliasDereferencingProblem X
+ (36)
+
+ inappropriateAuthenticati X
+ on (48)
+
+
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 27
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+
+ invalidCredentials (49) X
+
+ insufficientAccessRights X X X X X X
+ (50)
+
+ Service errors
+
+ operationsError (1) X X X X X X
+
+ protocolError (2) X X X X X X X
+
+ timeLimitExceeded (3) X X X X X X X
+
+ sizeLimitExceeded (4) X
+
+ adminLimitExceeded (11) X X X X X X X
+
+ unavailableCriticialExten X X X X X X X
+ sion (12)
+
+ busy (51) X X X X X X X
+
+ unavailable (52) X X X X X X X
+
+ unwillingToPerform (53) X X X X X X X
+
+ loopDetect (54) X X X X X X X
+
+ General errors
+
+ other (80) X X X X X X X
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 28
+
+
+ LDAPv3 Result Codes: Definitions and Appropriate Use Apr, 2000
+
+
+12 Full Copyright Statement
+
+ Copyright (C) The Internet Society (Oct 1999). All Rights Reserved.
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET
+ ENGINEERINGTASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED,
+ INCLUDINGBUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+ INFORMATIONHEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+ WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Just, Leclair, Sermersheim, Smith INTERNET-DRAFT 29
+