]> git.sur5r.net Git - openldap/commitdiff
Sync with HEAD
authorKurt Zeilenga <kurt@openldap.org>
Fri, 19 Mar 2004 18:11:08 +0000 (18:11 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Fri, 19 Mar 2004 18:11:08 +0000 (18:11 +0000)
doc/drafts/draft-ietf-ldapbis-authmeth-xx.txt
doc/drafts/draft-ietf-ldapbis-dn-xx.txt
doc/drafts/draft-ietf-ldapbis-filter-xx.txt
doc/drafts/draft-ietf-ldapbis-models-xx.txt
doc/drafts/draft-ietf-ldapbis-protocol-xx.txt
doc/drafts/draft-ietf-ldapbis-roadmap-xx.txt
doc/drafts/draft-ietf-ldapbis-strprep-xx.txt
doc/drafts/draft-ietf-ldapbis-url-xx.txt
doc/drafts/draft-zeilenga-ldup-sync-xx.txt

index e4ed2a4dffa78a066215959ba4e3e595a5605f58..65242f95d36e364bcae2c2fa51458c82d4e9dad5 100644 (file)
@@ -1,13 +1,13 @@
 
 INTERNET-DRAFT                                      Editor: R. Harrison 
-draft-ietf-ldapbis-authmeth-09.txt                         Novell, Inc. 
-Obsoletes: 2251, 2829, 2830                             5 December 2003 
+draft-ietf-ldapbis-authmeth-10.txt                         Novell, Inc. 
+Obsoletes: 2829, 2830                                  10 February 2003 
 Intended Category: Draft Standard                                       
  
  
-                      LDAP: Authentication Methods 
+                     LDAP: Authentication Methods 
                                   and  
-                  Connection Level Security Mechanisms 
+                 Connection Level Security Mechanisms 
  
 Status of this Memo 
  
@@ -17,7 +17,7 @@ Status of this Memo
    This document is intended to be, after appropriate review and 
    revision, submitted to the RFC Editor as a Standard Track document. 
    Distribution of this memo is unlimited.  Technical discussion of 
-   this document will take place on the IETF LDAP Extension Working 
+   this document will take place on the IETF LDAP Revision Working 
    Group mailing list <ietf-ldapbis@OpenLDAP.org>.  Please send 
    editorial comments directly to the author 
    <roger_harrison@novell.com>. 
@@ -46,24 +46,97 @@ Abstract
    security mechanisms of the Lightweight Directory Access Protocol 
    (LDAP).  
  
-   This document details the simple Bind authentication method 
+   This document also details establishment of TLS (Transport Layer 
+   Security) using the Start TLS operation. 
+    
+   This document also details the simple Bind authentication method 
    including anonymous, unauthenticated, and plain-text password 
    methods and the SASL (Simple Authentication and Security Layer) Bind 
-   authentication method including the use of DIGEST-MD5 and EXTERNAL 
-   mechanisms. 
-    
  
-Harrison                  Expires June 2004                  [Page 1] 
+Harrison                  Expires July 2004                  [Page 1] 
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
-   This document also details establishment of TLS (Transport Layer 
-   Security) using the Start TLS operation
+   authentication method including the use of DIGEST-MD5 and EXTERNAL 
+   mechanisms
     
    This document describes various authentication and authorization 
    states through which a connection to an LDAP server may pass and the 
    actions that trigger these state changes. 
  
+Table of Contents 
+    
+   1. Introduction................................................3 
+   1.1. Relationship to Other Documents...........................5 
+   2. Conventions Used in this Document...........................5 
+   2.1. Glossary of Terms.........................................5 
+   2.2. Security Terms and Concepts...............................5 
+   2.3. Keywords..................................................6 
+   3. Start TLS Operation.........................................6 
+   3.1. Sequencing of the Start TLS Operation ....................6 
+   3.1.1. Start TLS Request.......................................6 
+   3.1.2. Start TLS Response......................................7 
+   3.1.3. TLS Version Negotiation.................................7 
+   3.1.4. Discovery of Resultant Security Level...................7 
+   3.1.5. Server Identity Check...................................7 
+   3.1.6. Refresh of Server Capabilities Information..............8 
+   3.2. Effects of TLS on a Client's Authorization Identity.......8 
+   3.2.1. TLS Connection Establishment Effects....................9 
+   3.2.2. Client Assertion of Authorization Identity..............9 
+   3.2.3. TLS Connection Closure Effects..........................9 
+   4. Bind Operation..............................................9 
+   4.1. Simple Authentication.....................................9 
+   4.2. SASL Authentication.......................................9 
+   5. Anonymous LDAP Association on Unbound Connections......... 10 
+   6. Anonymous Authentication ................................. 10 
+   7. Simple Authentication..................................... 10 
+   8. SASL Authentication Profile............................... 11 
+   8.1. SASL Service Name for LDAP.............................. 11 
+   8.2. SASL Authentication Initiation and Protocol Exchange.... 11 
+   8.3. Octet Where Negotiated Security Mechanisms Take Effect.. 12 
+   8.4. Determination of Supported SASL Mechanisms.............. 12 
+   8.5. Rules for Using SASL Security Layers.................... 13 
+   9. SASL EXTERNAL Mechanism................................... 13 
+   9.1. Implicit Assertion...................................... 13 
+   9.2. Explicit Assertion...................................... 14 
+   9.3. SASL Authorization Identity............................. 14 
+   9.4 Authorization Identity Syntax............................ 14 
+   10. SASL DIGEST-MD5 Mechanism................................ 15 
+   11. General Requirements for Password-based Authentication .. 15 
+   12. Invalidated Associations................................. 16 
+   13. TLS Ciphersuites......................................... 16 
+
+Harrison                  Expires July 2004                  [Page 2] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
+   13.1. TLS Ciphersuites Recommendations....................... 17 
+   14. Security Considerations ................................. 18 
+   14.1. Start TLS Security Considerations...................... 18 
+   15. IANA Considerations...................................... 19 
+   Acknowledgements............................................. 19 
+   Normative References......................................... 19 
+   Informative References....................................... 21 
+   Author's Address............................................. 21 
+   Appendix A. LDAP Association State Transition Tables......... 21 
+   A.1. LDAP Association States................................. 21 
+   A.2. Actions that Affect LDAP Association State.............. 22 
+   A.3. Decisions Used in Making LDAP Association State Changes. 22 
+   A.4. LDAP Association State Transition Table................. 22 
+   Appendix B. Example Deployment Scenarios..................... 23 
+   Appendix C. Authentication and Authorization Concepts........ 24 
+   C.1. Access Control Policy................................... 24 
+   C.2. Access Control Factors ................................. 24 
+   C.3. Authentication, Credentials, Identity .................. 25 
+   C.4. Authorization Identity ................................. 25 
+   Appendix D. RFC 2829 Change History ......................... 25 
+   Appendix E. RFC 2830 Change History ......................... 29 
+   Appendix F. RFC 2251 Change History ......................... 30 
+   Appendix G. Change History to Combined Document.............. 30 
+   Appendix H. Issues to be Resolved............................ 41 
+    
+    
 1. Introduction 
     
    The Lightweight Directory Access Protocol (LDAP) [Protocol] is a 
@@ -81,41 +154,48 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    (1) Unauthorized access to directory data via data-retrieval 
        operations, 
  
-   (2) Unauthorized access to reusable client authentication 
+   (2) Unauthorized access to directory data by monitoring others' 
+       access, 
+    
+   (3) Unauthorized access to reusable client authentication 
        information by monitoring others' access, 
+    
+   (4) Unauthorized modification of directory data, 
  
-   (3) Unauthorized access to directory data by monitoring others' 
-       access, 
  
-   (4) Unauthorized modification of directory data, 
+Harrison                  Expires July 2004                  [Page 3] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
    (5) Unauthorized modification of configuration information, 
     
-   (6) Unauthorized or excessive use of resources (denial of service), 
-       and 
+   (6) Denial of Service: Use of resources (commonly in excess) in a 
+       manner intended to deny service to others. and 
  
-   (7) Spoofing of directory: Tricking a client into believing that 
+   (7) Spoofing: Tricking a user or client into believing that 
        information came from the directory when in fact it did not, 
        either by modifying data in transit or misdirecting the client's 
-       connection. Also, tricking a client into sending privileged 
+       connection. Tricking a user or client into sending privileged 
        information to a hostile entity that appears to be the directory 
-       but is not. 
+       server but is not. Tricking a directory server into believing 
+       that information came from a particular client when in fact it 
+       came from a hostile entity. 
+    
+   (8) Hijacking of prototocol sessions. 
  
    Threats (1), (4), (5) and (6) are due to hostile clients. Threats 
    (2), (3) and (7) are due to hostile agents on the path between 
-   client and server or hostile agents posing as a server. 
-   LDAP can be protected with the following security mechanisms: 
-   (1) Client authentication by means of the Secure Authentication and 
-       Security Layer (SASL) [SASL] mechanism set, possibly backed by 
-       the Transport Layer Security (TLS) [TLS] credentials exchange 
-       mechanism, 
+   client and server or hostile agents posing as a server, e.g. IP 
+   spoofing. 
  
-Harrison                  Expires June 2004                  [Page 2] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
+   LDAP offers the following security mechanisms: 
  
+   (1) Authentication by means of the Bind operation.  The Bind 
+       operation provides a simple method which supports anonymous, 
+       unauthenticated, and authenticated with password mechanisms, and 
+       the Secure Authentication and Security Layer (SASL) method which 
+       supports a wide variety of authentication mechanisms and which 
+       may be extended to support additional methods of authentication. 
  
    (2) Client authorization by means of access control based on the 
        requestor's authenticated identity, 
@@ -141,9 +221,13 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    alternatives is not a strategy that is likely to lead to 
    interoperability. In the absence of mandates, clients will be 
    written that do not support any security function supported by the 
-   server, or worse, they will support only mechanisms like the LDAP 
-   simple bind using clear text passwords that provide inadequate 
-   security for most circumstances. 
+Harrison                  Expires July 2004                  [Page 4] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
+   server, or worse, they will support only clear text passwords that 
+   provide inadequate security for most circumstances. 
  
    Given the presence of the Directory, there is a strong desire to see 
    mechanisms where identities take the form of an LDAP distinguished 
@@ -154,13 +238,13 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    carry identities not represented as LDAP DNs that are familiar to 
    the user or that are used in other systems. 
     
-     The set of security mechanisms provided in LDAP and described in 
-     this document is intended to meet the security needs for a wide 
-     range of deployment scenarios and still provide a high degree of 
-     interoperability among various LDAP implementations and 
-     deployments. Appendix A contains example deployment scenarios that 
-     list the mechanisms that might be used to achieve a reasonable 
-     level of security in various circumstances. 
+   The set of security mechanisms provided in LDAP and described in 
+   this document is intended to meet the security needs for a wide 
+   range of deployment scenarios and still provide a high degree of 
+   interoperability among various LDAP implementations and deployments. 
+   Appendix B contains example deployment scenarios that list the 
+   mechanisms that might be used to achieve a reasonable level of 
+   security in various circumstances. 
     
 1.1. Relationship to Other Documents 
  
@@ -169,12 +253,6 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
     
    This document obsoletes RFC 2829. 
     
-
-Harrison                  Expires June 2004                  [Page 3] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
    Sections 2 and 4 of RFC 2830 are obsoleted by [Protocol].  The 
    remainder of RFC 2830 is obsoleted by this document.  
     
@@ -193,7 +271,8 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
      - "connection" and "LDAP connection" both refer to the underlying 
        transport protocol connection between two protocol peers.  
       
-     - "TLS connection" refers to a TLS-protected LDAP connection.  
+     - "TLS connection" refers to a TLS-protected [TLS] LDAP 
+       connection.  
       
      - "association" and "LDAP association" both refer to the 
        association of the LDAP connection and its current 
@@ -201,39 +280,254 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
     
 2.2. Security Terms and Concepts 
     
+Harrison                  Expires July 2004                  [Page 5] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
    In general, security terms in this document are used consistently 
-   with the definitions provided in [RFC2828]. In addition, several 
+   with the definitions provided in [Glossary]. In addition, several 
    terms and concepts relating to security, authentication, and 
-   authorization are presented in Appendix B of this document. While 
+   authorization are presented in Appendix C of this document. While 
    the formal definition of these terms and concepts is outside the 
    scope of this document, an understanding of them is prerequisite to 
    understanding much of the material in this document. Readers who are 
    unfamiliar with security-related concepts are encouraged to review 
-   Appendix B before reading the remainder of this document. 
+   Appendix C before reading the remainder of this document. 
  
 2.3. Keywords 
     
    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]. 
+   document are to be interpreted as described in RFC 2119 [Keyword]. 
+3. Start TLS Operation 
+    
+   The Start Transport Layer Security (Start TLS) operation defined in 
+   section 4.13 of [Protocol] provides the ability to establish [TLS] 
+   on an LDAP connection. 
+    
+3.1. Sequencing of the Start TLS Operation 
+   This section describes the overall procedures clients and servers 
+   must follow for TLS establishment. These procedures take into 
+   consideration various aspects of the overall security of the LDAP 
+   association including discovery of resultant security level and 
+   assertion of the client's authorization identity. 
+   Note that the precise effects, on a client's authorization identity, 
+   of establishing TLS on an LDAP connection are described in detail in 
+   section 3.2. 
+3.1.1. Start TLS Request  
+   A client may send the Start TLS extended request at any time after 
+   establishing an LDAP connection, except: 
+    
+      - when TLS is currently established on the connection, 
+      - when a multi-stage SASL negotiation is in progress on the 
+        connection, or 
+      - when there are outstanding LDAP operations on the connection. 
+    
+   The result of violating any of these requirements is a resultCode of 
+   operationsError, as described in [Protocol] section 4.13.2.2. Client 
+   implementers should note that it is possible to receive a resultCode 
+   of success for a Start TLS operation that is sent on a connection 
+   with outstanding LDAP operations if the server has sufficient time 
+   to process them prior to its receiving the Start TLS request. 
+   Implementors of clients should ensure that they do not inadvertently 
+   depend upon this race condition. 
+    
+
+Harrison                  Expires July 2004                  [Page 6] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
+   There is no requirement that the client have or have not already 
+   performed a Bind operation (section 4) before sending a Start TLS 
+   operation request. 
+    
+   If the client did not establish a TLS connection before sending some 
+   other request, and the server requires the client to establish a TLS 
+   connection before performing that request, the server MUST reject 
+   that request by sending a resultCode of confidentialityRequired or 
+   strongAuthRequired. 
+    
+   An LDAP server which requests that clients provide their certificate 
+   during TLS negotiation MAY use a local security policy to determine 
+   whether to successfully complete TLS negotiation if the client did 
+   not present a certificate which could be validated. 
+3.1.2. Start TLS Response 
+   The server will return an extended response with the resultCode of 
+   success if it is willing and able to negotiate TLS.  It will return 
+   other resultCode values (documented in [Protocol] section 4.13.2.2) 
+   if it is unwilling or unable to do so. 
+    
+   In the successful case, the client (which has ceased to transfer 
+   LDAP requests on the connection) MUST either begin a TLS negotiation 
+   or close the connection. The client will send PDUs in the TLS Record 
+   Protocol directly over the underlying transport connection to the 
+   server to initiate [TLS] negotiation. 
+3.1.3. TLS Version Negotiation 
+   Negotiating the version of TLS to be used is a part of the TLS 
+   Handshake Protocol [TLS]. Please refer to that document for details. 
+3.1.4. Discovery of Resultant Security Level 
+   After a TLS connection is established on an LDAP connection, both 
+   parties must individually decide whether or not to continue based on 
+   the security level achieved. Ascertaining the TLS connection's 
+   security level is implementation dependent and accomplished by 
+   communicating with one's respective local TLS implementation. 
+   If the client or server decides that the level of authentication or 
+   security is not high enough for it to continue, it SHOULD gracefully 
+   close the TLS connection immediately after the TLS negotiation has 
+   completed (see [Protocol] section 4.13.3.1 and section 3.2.3 below). 
+   If the client decides to continue, it may gracefully close the TLS 
+   connection and attempt to Start TLS again, it may send an unbind 
+   request, or it may send any other LDAP request. 
+3.1.5. Server Identity Check 
+   The client MUST check its understanding of the server's hostname 
+   against the server's identity as presented in the server's 
+   Certificate message in order to prevent man-in-the-middle attacks. 
+Harrison                  Expires July 2004                  [Page 7] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
+   Matching is performed according to these rules: 
+    
+     - The client MUST use the server provided by the user (or other 
+       trusted entity) as the value to compare against the server name 
+       as expressed in the server's certificate. A hostname derived 
+       from the user input is to be considered provided by the user 
+       only if derived in a secure fashion (e.g., DNSSEC). 
+    
+     - If a subjectAltName extension of type dNSName is present in the 
+       certificate, it SHOULD be used as the source of the server's 
+       identity. 
+         
+     - Matching is case-insensitive. 
+    
+     - The "*" wildcard character is allowed.  If present, it applies 
+       only to the left-most name component. 
+    
+       For example, *.bar.com would match a.bar.com and b.bar.com, but 
+       it would not match a.x.bar.com nor would it match bar.com.  If 
+       more than one identity of a given type is present in the 
+       certificate (e.g. more than one dNSName name), a match in any 
+       one of the set is considered acceptable. 
+    
+   If the hostname does not match the dNSName-based identity in the 
+   certificate per the above check, user-oriented clients SHOULD either 
+   notify the user (clients may give the user the opportunity to 
+   continue with the connection in any case) or terminate the 
+   connection and indicate that the server's identity is suspect. 
+   Automated clients SHOULD close the connection, returning and/or 
+   logging an error indicating that the server's identity is suspect. 
+    
+   Beyond the server identity checks described in this section, clients 
+   SHOULD be prepared to do further checking to ensure that the server 
+   is authorized to provide the service it is observed to provide. The 
+   client may need to make use of local policy information in making 
+   this determination. 
+3.1.6. Refresh of Server Capabilities Information 
+   Upon TLS session establishment, the client SHOULD discard or refresh 
+   all information about the server it obtained prior to the initiation 
+   of the TLS negotiation and not obtained through secure mechanisms. 
+   This protects against active-intermediary attacks that may have 
+   altered any server capabilities information retrieved prior to TLS 
+   establishment.  
+    
+   The server may advertise different capabilities after TLS 
+   establishment. In particular, the value of supportedSASLMechanisms 
+   may be different after TLS has been negotiated (specifically, the 
+   EXTERNAL and PLAIN [PLAIN] mechanisms are likely to be listed only 
+   after a TLS negotiation has been performed). 
+    
+3.2. Effects of TLS on a Client's Authorization Identity 
+Harrison                  Expires July 2004                  [Page 8] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
+   This section describes the effects on a client's authorization 
+   identity brought about by establishing TLS on an LDAP connection. 
+   The default effects are described first, and next the facilities for 
+   client assertion of authorization identity are discussed including 
+   error conditions. Finally, the effects of closing the TLS connection 
+   are described. 
+   Authorization identities and related concepts are described in 
+   Appendix C. 
+3.2.1. TLS Connection Establishment Effects 
+    
+   The decision to keep or invalidate the established authentication 
+   and authorization identities in place after TLS closure is a matter 
+   of local server policy.  
+3.2.2. Client Assertion of Authorization Identity 
+    
+   After successfully establishing a TLS session, a client may request 
+   that its credentials exchanged during the TLS establishment be 
+   utilized to authenticate the LDAP association and thus determine the 
+   client's authorization status. The client accomplishes this via an 
+   LDAP Bind request specifying a SASL mechanism of EXTERNAL [SASL] 
+   (section 9). LDAP server implementations SHOULD support this 
+   authentication method. 
+    
+3.2.3. TLS Connection Closure Effects 
+    
+   The decision to keep or invalidate the established authentication 
+   and authorization identities in place after TLS closure is a matter 
+   of local server policy. 
  
-3. Bind Operation 
+4. Bind Operation 
      
    The Bind operation defined in section 4.2 of [Protocol] allows 
    authentication information to be exchanged between the client and 
-   server to establish a new LDAP association. The new LDAP association 
-   is established upon successful completion of the authentication 
-   exchange. 
+   server to establish a new LDAP association.  
     
-3.1. Implied Anonymous Bind on LDAP Association  
+   Upon receipt of a Bind request, the LDAP association is moved to an 
+   anonymous state and only upon successful completion of the 
+   authentication exchange (and the Bind operation) is the association 
+   moved to an authenticated state. 
+    
+4.1. Simple Authentication  
+    
+   The simple authentication choice of the Bind Operation provides 
+   minimal facilities for establishing an anonymous association 
+   (section 6) or for establishing an LDAP association based upon 
+   credentials consisting of a name (in the form of an LDAP 
+   distinguished name [LDAPDN]) and a password (section 7). 
+    
+4.2. SASL Authentication  
     
-   Prior to the successful completion of a Bind operation and during 
-   any subsequent authentication exchange, the session has an anonymous 
  
-Harrison                  Expires June 2004                  [Page 4
+Harrison                  Expires July 2004                  [Page 9
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
+   The sasl authentication choice of the Bind Operation provides 
+   facilities for authenticating via SASL mechanisms (sections 8-10). 
+    
+5. Anonymous LDAP Association on Unbound Connections 
+    
+   Prior to the successful completion of a Bind operation and during 
+   any subsequent authentication exchange, the session has an anonymous 
    LDAP association. Among other things this implies that the client 
    need not send a Bind Request in the first PDU of the connection. The 
    client may send any operation request prior to binding, and the 
@@ -241,21 +535,65 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    bind operation. This authentication state on an LDAP association is 
    sometimes referred to as an implied anonymous bind. 
  
-3.2. Simple Authentication  
+6. Anonymous Authentication 
+   Directory operations that modify entries or access protected 
+   attributes or entries generally require client authentication. 
+   Clients that do not intend to perform any of these operations 
+   typically use anonymous authentication. 
+    
+   An LDAP client may explicitly establish an anonymous association by 
+   sending a Bind Request with the simple authentication choice 
+   containing a value--construed as the password--of zero length. A 
+   bind request where both the name and password are of zero length is 
+   said to be an anonymous bind. A bind request where the name, a DN, 
+   is of non-zero length, and the password is of zero length is said to 
+   be an unauthenticated bind. Both variations produce an anonymous 
+   association. 
+    
+   Unauthenticated binds can have significant security issues (see 
+   section 14). Servers SHOULD by default reject unauthenticated bind 
+   requests with a resultCode of invalidCredentials, and clients may 
+   need to actively detect situations where they would make an 
+   unauthenticated bind request. 
+    
+   An LDAP server may use other information about the client provided 
+   by the lower layers or external means to grant or deny access even 
+   to anonymously authenticated clients. 
+    
+   LDAP implementations MUST support anonymous authentication. 
+7. Simple Authentication 
+   An LDAP client may establish an LDAP association by sending a Bind 
+   Request with a name value consisting of an LDAP distinguished name 
+   [LDAPDN] and specifying the simple authentication choice with a 
+   password value.  
     
-   The simple authentication choice provides minimal facilities for 
-   establishing an anonymous association or for establishing an LDAP 
-   association based upon credentials consisting of a name (in the form 
-   of an [LDAPDN] and a password. 
+   DSAs that map the DN sent in the bind request to a directory entry 
+   with an associated set of one or more passwords will compare the 
+   presented password to the set of passwords associated with that 
+   entry. If the presented password matches any member of that set, 
+
  
-   The simple authentication choice provides two different methods 
-   for establishing an anonymous association: anonymous bind and 
-   unauthenticated bind (see section 5.1). 
+Harrison                  Expires July 2004                 [Page 10] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
-   The simple authentication choice provides one method for 
-   establishing a non-anonymous association: simple password bind.  
+   then the server will respond with a success resultCode, otherwise 
+   the server will respond with an invalidCredentials resultCode. 
     
-3.3. SASL Authentication Profile 
+   The simple authentication choice is not suitable for authentication 
+   in environments where there is no network or transport layer 
+   confidentiality. LDAP implementations SHOULD support authentication 
+   with the "simple" authentication choice when the connection is 
+   protected against eavesdropping using TLS, as defined in section 4. 
+   LDAP implementations SHOULD NOT support authentication with the 
+   "simple" authentication choice unless the data on the connection is 
+   protected using TLS or other data confidentiality and data integrity 
+   protection. 
+8. SASL Authentication Profile 
     
    LDAP allows authentication via any SASL mechanism [SASL]. As LDAP 
    includes native anonymous and plaintext authentication methods, the 
@@ -267,12 +605,12 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    protocol ([SASL] section 5). This section explains how each of these 
    profiling requirements are met by LDAP. 
     
-3.3.1. SASL Service Name for LDAP 
+8.1. SASL Service Name for LDAP 
  
    The SASL service name for LDAP is "ldap", which has been registered 
    with the IANA as a GSSAPI service name. 
     
-3.3.2. SASL authentication initiation and protocol exchange 
+8.2. SASL Authentication Initiation and Protocol Exchange 
     
    SASL authentication is initiated via an LDAP bind request 
    ([Protocol] section 4.2) with the following parameters: 
@@ -288,19 +626,19 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
     
    In general, a SASL authentication protocol exchange consists of a 
    series of server challenges and client responses, the contents of 
-Harrison                  Expires June 2004                  [Page 5] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
    which are specific to and defined by the SASL mechanism. Thus for 
    some SASL authentication mechanisms, it may be necessary for the 
    client to respond to one or more server challenges by invoking the 
    BindRequest multiple times. A challenge is indicated by the server 
    sending a BindResponse with the resultCode set to 
    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. 
+Harrison                  Expires July 2004                 [Page 11] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
     
    To the encapsulating protocol, these challenges and responses are 
    opaque binary tokens of arbitrary length. LDAP servers use the 
@@ -336,10 +674,10 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    mechanisms which are defined to have the server send additional data 
    along with the indication of successful completion. 
  
-3.3.3. Octet where negotiated security mechanisms take effect 
+8.3. Octet Where Negotiated Security Mechanisms Take Effect 
  
-   When negotiated, SASL security layers take effect following the 
-   transmission by the server and reception by the client of the fina
+   SASL security layers take effect following the transmission by the 
+   server and reception by the client of the final successfu
    BindResponse in the exchange. 
  
    Once a SASL security layer providing integrity or confidentiality 
@@ -347,20 +685,24 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    is installed (i.e. at the first octet following the final 
    BindResponse of the bind operation that caused the new layer to take 
    effect). 
+         
+8.4. Determination of Supported SASL Mechanisms 
+    
+   Clients may determine the SASL mechanisms a server supports by  
+   reading the 'supportedSASLMechanisms ' attribute from the root DSE 
+   (DSA-Specific Entry) ([Models] section 5.1).  The values of this 
+   attribute, if any, list the mechanisms the server supports in the 
+   current LDAP session state. 
  
-Harrison                  Expires June 2004                  [Page 6
+Harrison                  Expires July 2004                 [Page 12
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
-         
-3.3.4. Determination of supported SASL mechanisms 
-    
-   An LDAP client may determine the SASL mechanisms a server supports 
-   by performing a search request on the root DSE, requesting the 
-   supportedSASLMechanisms attribute. The values of this attribute, if 
-   any, list the mechanisms the server supports. 
     
-3.3.5. Rules for using SASL security layers 
+   LDAP servers SHOULD allow an anonymously-bound client to retrieve 
+   the supportedSASLMechanisms attribute of the root DSE. 
+8.5. Rules for Using SASL Security Layers 
     
    If a SASL security layer is negotiated, the client SHOULD discard 
    information about the server it obtained prior to the initiation of 
@@ -378,12 +720,12 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    and servers should allow the user to specify what mechanisms are 
    acceptable and allow only those mechanisms to be used. 
  
-3.3.6. Use of EXTERNAL SASL Mechanism 
+9. SASL EXTERNAL Mechanism 
     
    A client can use the EXTERNAL SASL [SASL] mechanism to request the 
    LDAP server to make use of security credentials exchanged by a lower 
    security layer (such as by TLS authentication or IP-level security 
-   [RFC2401]).  
+   [SecArch]).  
     
    If the client's authentication credentials have not been established 
    at a lower security layer, the SASL EXTERNAL bind MUST fail with a 
@@ -399,37 +741,37 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    with its authenticated TLS credentials. The former is known as an 
    implicit assertion, and the latter as an explicit assertion. 
     
-3.3.6.1. Implicit Assertion 
+9.1. Implicit Assertion 
     
    An implicit authorization identity assertion is performed by 
    invoking a Bind request of the SASL form using the EXTERNAL 
-   mechanism name that SHALL NOT include the optional credentials octet 
+   mechanism name that does not include the optional credentials octet 
    string (found within the SaslCredentials sequence in the Bind 
    Request). The server will derive the client's authorization identity 
-Harrison                  Expires June 2004                  [Page 7] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
    from the authentication identity supplied by the security layer 
    (e.g., a public key certificate used during TLS establishment) 
    according to local policy. The underlying mechanics of how this is 
    accomplished are implementation specific. 
+Harrison                  Expires July 2004                 [Page 13] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
     
-3.3.6.2. Explicit Assertion 
+9.2. Explicit Assertion 
     
    An explicit authorization identity assertion is performed by 
    invoking a Bind request of the SASL form using the EXTERNAL 
-   mechanism name that SHALL include the credentials octet string. This 
+   mechanism name that includes the credentials octet string. This 
    string MUST be constructed as documented in section 3.4.1. 
     
-   The server MUST that the client's authentication identity as 
+   The server MUST verify that the client's authentication identity as 
    supplied in its TLS credentials is permitted to be mapped to the 
    asserted authorization identity. The server MUST reject the Bind 
    operation with an invalidCredentials resultCode in the Bind response 
    if the client is not so authorized. 
  
-3.3.6.3. SASL Authorization Identity 
+9.3. SASL Authorization Identity 
  
    When the EXTERNAL SASL mechanism is being negotiated, if the 
    SaslCredentials credentials field is present, it contains an 
@@ -438,7 +780,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    authorization identity is represented in the authzId form described 
    below. 
  
-3.3.6.4 Authorization Identity Syntax 
+9.4 Authorization Identity Syntax 
     
    The authorization identity is a string of [UTF-8] encoded [Unicode] 
    characters corresponding to the following [ABNF] grammar: 
@@ -465,14 +807,15 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
     
    The dnAuthzId choice allows clients to assert authorization 
    identities in the form of a distinguished name to be matched in 
+   accordance with the distinguishedNameMatch matching rule [Syntaxes]. 
+   The decision to allow or disallow an authentication identity to have 
+   access to the requested authorization identity is a matter of local 
+
  
-Harrison                  Expires June 2004                  [Page 8
+Harrison                  Expires July 2004                 [Page 14
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
-   accordance with the distinguishedName matching rule [Syntaxes]. The 
-   decision to allow or disallow an authentication identity to have 
-   access to the requested authorization identity is a matter of local 
    policy ([SASL] section 4.2). For this reason there is no requirement 
    that the asserted dn be that of an entry in directory. 
     
@@ -480,7 +823,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    to assert an authorization identity to a local directory but do not 
    have that identity in distinguished name form. The value contained 
    within a uAuthzId MUST be prepared using [SASLPrep] before being 
-   compared octet-wise. The format of utf8string is defined as only a 
+   compared octet-wise. The format of userid is defined as only a 
    sequence of [UTF-8] encoded [Unicode] characters, and further 
    interpretation is subject to prior agreement between the client and 
    server. 
@@ -490,293 +833,51 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    email address. A uAuthzId SHOULD NOT be assumed to be globally 
    unique. 
  
-4. Start TLS Operation 
+10. SASL DIGEST-MD5 Mechanism 
     
-   The Start Transport Layer Security (Start TLS) operation defined in 
-   section 4.13 of [Protocol] provides the ability to establish [TLS] 
-   on an LDAP association. 
-    
-4.1. Sequencing of the Start TLS Operation 
-   This section describes the overall procedures clients and servers 
-   must follow for TLS establishment. These procedures take into 
-   consideration various aspects of the overall security of the LDAP 
-   association including discovery of resultant security level and 
-   assertion of the client's authorization identity. 
-   Note that the precise effects, on a client's authorization identity, 
-   of establishing TLS on an LDAP association are described in detail 
-   in section 4.2. 
-4.1.1. Start TLS Request  
-   The client MAY send the Start TLS extended request at any time after 
-   establishing an LDAP connection, except: 
-    
-      - when TLS is currently established on the connection, 
-      - when a multi-stage SASL negotiation is in progress on the 
-        connection, or 
-      - when there are one or more outstanding LDAP operations on the 
-        connection. 
-    
-   The result of violating any of these requirements is a resultCode of 
-   operationsError, as described in [Protocol] section 4.13.2.2. Client 
-   implementers should note that it is possible to receive a resultCode 
-   of success for a Start TLS operation that is sent on a connection 
-   with outstanding LDAP operations and the server has sufficient time 
-Harrison                  Expires June 2004                  [Page 9] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
-   to process them prior to its receiving the Start TLS request. 
-   Implementors of clients should ensure that they do not inadvertently 
-   depend upon this race condition. 
-    
-   In particular, there is no requirement that the client have or have 
-   not already performed a Bind operation before sending a Start TLS 
-   operation request. The client may have already performed a Bind 
-   operation when it sends a Start TLS request, or the client might 
-   have not yet bound. 
-    
-   If the client did not establish a TLS connection before sending any 
-   other requests, and the server requires the client to establish a 
-   TLS connection before performing a particular request, the server 
-   MUST reject that request by sending a resultCode of 
-   confidentialityRequired or strongAuthRequired. 
-4.1.2. Start TLS Response 
-   The server will return an extended response with the resultCode of 
-   success if it is willing and able to negotiate TLS.  It will return 
-   other resultCode values (documented in [Protocol] section 4.13.2.2) 
-   if it is unwilling or unable to do so. 
-    
-   In the successful case, the client (which has ceased to transfer 
-   LDAP requests on the connection) MUST either begin a TLS negotiation 
-   or close the connection. The client will send PDUs in the TLS Record 
-   Protocol directly over the underlying transport connection to the 
-   server to initiate [TLS] negotiation. 
-4.1.3. TLS Version Negotiation 
-   Negotiating the version of TLS or SSL to be used is a part of the 
-   [TLS] Handshake Protocol. Please refer to that document for details. 
-4.1.4. Discovery of Resultant Security Level 
-   After a TLS connection is established on an LDAP association, both 
-   parties must individually decide whether or not to continue based on 
-   the security level achieved. Ascertaining the TLS connection's 
-   security level is implementation dependent and accomplished by 
-   communicating with one's respective local TLS implementation. 
-   If the client or server decides that the level of authentication or 
-   security is not high enough for it to continue, it SHOULD gracefully 
-   close the TLS connection immediately after the TLS negotiation has 
-   completed (see [Protocol] section 4.13.3.1 and section 4.2.3 below). 
-   If the client decides to continue, it may gracefully close the TLS 
-   connection and attempt to Start TLS again, it may send an unbind 
-   request, or it may send any other LDAP request. 
-4.1.5. Server Identity Check 
-
-
-Harrison                  Expires June 2004                 [Page 10] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
-   The client MUST check its understanding of the server's hostname 
-   against the server's identity as presented in the server's 
-   Certificate message in order to prevent man-in-the-middle attacks. 
-   Matching is performed according to these rules: 
-    
-     - The client MUST use the server provided by the user (or other 
-       trusted entity) as the value to compare against the server name 
-       as expressed in the server's certificate. A hostname derived 
-       from the user input is to be considered provided by the user 
-       only if derived in a secure fashion (e.g., DNSSEC). 
-    
-     - If a subjectAltName extension of type dNSName is present in the 
-       certificate, it SHOULD be used as the source of the server's 
-       identity. 
-         
-     - Matching is case-insensitive. 
-    
-     - The "*" wildcard character is allowed.  If present, it applies 
-       only to the left-most name component. 
-    
-       For example, *.bar.com would match a.bar.com and b.bar.com, but 
-       it would not match a.x.bar.com nor would it match bar.com.  If 
-       more than one identity of a given type is present in the 
-       certificate (e.g. more than one dNSName name), a match in any 
-       one of the set is considered acceptable. 
-    
-   If the hostname does not match the dNSName-based identity in the 
-   certificate per the above check, user-oriented clients SHOULD either 
-   notify the user (clients may give the user the opportunity to 
-   continue with the connection in any case) or terminate the 
-   connection and indicate that the server's identity is suspect. 
-   Automated clients SHOULD close the connection, returning and/or 
-   logging an error indicating that the server's identity is suspect. 
-    
-   Beyond the server identity checks described in this section, clients 
-   SHOULD be prepared to do further checking to ensure that the server 
-   is authorized to provide the service it is observed to provide. The 
-   client may need to make use of local policy information in making 
-   this determination. 
-4.1.6. Refresh of Server Capabilities Information 
-   Upon TLS session establishment, the client SHOULD discard or refresh 
-   all information about the server it obtained prior to the initiation 
-   of the TLS negotiation and not obtained through secure mechanisms. 
-   This protects against active-intermediary attacks that may have 
-   altered any server capabilities information retrieved prior to TLS 
-   establishment.  
-    
-   The server may advertise different capabilities after TLS 
-   establishment. In particular, the value of supportedSASLMechanisms 
-   may be different after TLS has been negotiated (specifically, the 
-
-Harrison                  Expires June 2004                 [Page 11] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
-   EXTERNAL and PLAIN [PLAIN] mechanisms are likely to be listed only 
-   after a TLS negotiation has been performed). 
-    
-4.2. Effects of TLS on a Client's Authorization Identity 
-   This section describes the effects on a client's authorization 
-   identity brought about by establishing TLS on an LDAP association. 
-   The default effects are described first, and next the facilities for 
-   client assertion of authorization identity are discussed including 
-   error conditions. Finally, the effects of closing the TLS connection 
-   are described. 
-   Authorization identities and related concepts are described in 
-   Appendix B. 
-4.2.1. TLS Connection Establishment Effects 
-    
-   The decision to keep or invalidate the established authentication 
-   and authorization identities in place after TLS is negotiated is a 
-   matter of local server policy. If a server chooses to invalidate 
-   established authentication and authorization identities after TLS is 
-   negotiated, it MUST reply to subsequent valid operation requests 
-   until the next TLS closure or successful bind request with a 
-   resultCode of strongAuthRequired to indicate that the client needs 
-   to bind to reestablish its authentication. If the client attempts to 
-   bind using a method the server is unwilling to support, it responds 
-   to the with a resultCode of authMethodNotSupported (per [Protocol]) 
-   to indicate that a different authentication method should be used.  
-4.2.2. Client Assertion of Authorization Identity 
+   LDAP servers that implement any authentication method or mechanism 
+   other than simple anonymous bind MUST implement the SASL 
+   DIGEST-MD5 mechanism [DIGEST-MD5].  This provides client 
+   authentication with protection against passive eavesdropping attacks 
+   but does not provide protection against active intermediary attacks.  
+   DIGEST-MD5 also provides data integrity and data confidentiality 
+   capabilities. 
     
-   After successfully establishing a TLS session, a client may request 
-   that its credentials exchanged during the TLS establishment be 
-   utilized to determine the client's authorization status. The client 
-   accomplishes this via an LDAP Bind request specifying a SASL 
-   mechanism of EXTERNAL [SASL]. See section 3.3.6 for additional 
-   details. 
     
-4.2.3. TLS Connection Closure Effects 
+   Support for subsequent authentication ([DIGEST-MD5] section 2.2) is 
+   OPTIONAL in clients and servers. 
     
-   The decision to keep or invalidate the established authentication 
-   and authorization identities in place after TLS closure is a matter 
-   of local server policy. If a server chooses to invalidate 
-   established authentication and authorization identities after TLS is 
-   negotiated, it MUST reply to subsequent valid operation requests 
-   until the next TLS closure or successful bind request with a 
-   resultCode of strongAuthRequired to indicate that the client needs 
-   to bind to reestablish its authentication. If the client attempts to 
-   bind using a method the server is unwilling to support, it responds 
-   to the with a resultCode of authMethodNotSupported (per [Protocol]) 
-   to indicate that a different authentication method should be used. 
-5. Anonymous Authentication 
-Harrison                  Expires June 2004                 [Page 12] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
-   Directory operations that modify entries or access protected 
-   attributes or entries generally require client authentication. 
-   Clients that do not intend to perform any of these operations 
-   typically use anonymous authentication. 
-   LDAP implementations MUST support anonymous authentication, as 
-   defined in section 5.1. 
-   LDAP implementations MAY support anonymous authentication with TLS, 
-   as defined in section 5.2. 
-   While there may be access control restrictions to prevent access to 
-   directory entries, an LDAP server SHOULD allow an anonymously-bound 
-   client to retrieve the supportedSASLMechanisms attribute of the root 
-   DSE. 
-   An LDAP server may use other information about the client provided 
-   by the lower layers or external means to grant or deny access even 
-   to anonymously authenticated clients. 
-5.1. Anonymous Authentication Procedure 
-   Prior to successfully completing a Bind operation, the LDAP 
-   association is anonymous. See section 3.1. 
+   Implementers must take care to ensure that they maintain the 
+   semantics of the DIGEST-MD5 specification even when handling data 
+   that has different semantics in the LDAP protocol. 
+   For example, the SASL DIGEST-MD5 authentication mechanism utilizes 
+   realm and username values ([DIGEST-MD5] section 2.1) which are 
+   syntactically simple strings and semantically simple realm and 
+   username values. These values are not LDAP DNs, and there is no 
+   requirement that they be represented or treated as such. Username 
+   and realm values that look like LDAP DNs in form, e.g. <cn=bob, 
+   dc=example,dc=com>, are syntactically allowed, however DIGEST-MD5 
+   treats them as simple strings for comparison purposes. To illustrate 
+   further, the two DNs <cn=Bob,dc=example,dc=com> (upper case "B") and 
+   <cn=bob,dc=example,dc=com> (lower case "b") are equivalent when 
+   being compared semantically as LDAP DNs because the cn attribute is 
+   defined to be case insensitive, however the two values are not 
+   equivalent if they represent username values in DIGEST-MD5 because 
+   [SASLPrep] semantics are used by DIGEST-MD5.  
  
-   An LDAP client may also explicitly establish an anonymous 
-   association by sending a Bind Request with the simple authentication 
-   option and a password of zero length. A bind request where both the 
-   name and password are of zero length is said to be an anonymous 
-   bind. A bind request where the name, a DN, is of non-zero length, 
-   and the password is of zero length is said to be an unauthenticated 
-   bind. Both variations produce an anonymous association. 
+11. General Requirements for Password-based Authentication 
     
-   Unauthenticated binds can have significant security issues (see 
-   section 10). Servers SHOULD by default reject unauthenticated bind 
-   requests with a resultCode of invalidCredentials, and clients may 
-   need to actively detect situations where they would make an 
-   unauthenticated bind request. 
-5.2. Anonymous Authentication and TLS 
-   An LDAP client may use the Start TLS operation (section 5) to 
-   negotiate the use of [TLS] security. If the client has not bound 
-   beforehand, then until the client uses the EXTERNAL SASL mechanism 
-   to negotiate the recognition of the client's certificate, the client 
-   is anonymously authenticated. 
-   Recommendations on TLS ciphersuites are given in section 9. 
-   An LDAP server which requests that clients provide their certificate 
-   during TLS negotiation MAY use a local security policy to determine 
-   whether to successfully complete TLS negotiation if the client did 
-   not present a certificate which could be validated. 
+   The transmission of passwords in the clear--typically for 
+   authentication or modification--poses a significant security risk. 
+   This risk can be avoided by using SASL authentication [SASL] 
  
-Harrison                  Expires June 2004                 [Page 13
+Harrison                  Expires July 2004                 [Page 15
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
-6. Password-based Authentication 
-    
-   This section discusses various options for performing password-based 
-   authentication to LDAP compliant servers and the environments 
-   suitable for their use. 
-    
-   The transmission of passwords in the clear--typically for 
-   authentication or modification--poses a significant security risk. 
-   This risk can be avoided by using SASL bind [SASL] mechanisms that 
-   do not transmit passwords in the clear and by negotiating transport 
-   or session layer confidentiality services before transmitting 
-   password values. 
+   mechanisms that do not transmit passwords in the clear or by 
+   negotiating transport or session layer confidentiality services 
+   before transmitting password values. 
     
    To mitigate the security risks associated with the use of passwords, 
    a server implementation MUST implement a configuration that at the 
@@ -797,285 +898,25 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
         including a userPassword value, etc.), even if the password 
         value is correct. 
  
-6.1. Simple Authentication 
-   The LDAP "simple" authentication choice is not suitable for 
-   authentication in environments where there is no network or 
-   transport layer confidentiality. LDAP implementations SHOULD support 
-   authentication with the "simple" authentication choice when the 
-   connection is protected against eavesdropping using TLS, as defined 
-   in section 4. LDAP implementations SHOULD NOT support authentication 
-   with the "simple" authentication choice unless the data on the 
-   connection is protected using TLS or other data confidentiality and 
-   data integrity protection. 
-6.2. Digest Authentication 
-    
-   LDAP servers that implement any authentication method or mechanism 
-   (other than simple anonymous bind) MUST implement the SASL 
-   DIGEST-MD5 mechanism [DIGEST-MD5].  This provides client 
-   authentication with protection against passive eavesdropping 
-   attacks, but does not provide protection against active intermediary 
-   attacks.  DIGEST-MD5 also provides data integrity and data 
-   confidentiality capabilities. 
-    
-Harrison                  Expires June 2004                 [Page 14] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
-    
-   Support for subsequent authentication is OPTIONAL in clients and 
-   servers. 
-    
-   Implementors must take care to ensure that they maintain the 
-   semantics of the DIGEST-MD5 specification even when handling data 
-   that has different semantics in the LDAP protocol. 
-   For example, the SASL DIGEST-MD5 authentication mechanism utilizes 
-   realm and username values ([DigestAuth section 2.1) which are 
-   syntactically simple strings and semsantically simple realm and 
-   username values. These values are not LDAP DNs, and there is no 
-   requirement that they be represented or treated as such. Username 
-   and realm values that look like LDAP DNs in form, e.g. <cn=bob, 
-   dc=example,dc=com>, are syntactically allowed, however DIGEST-MD5 
-   treats them as simple strings for comparison purposes. To illustrate 
-   further, the two DNs <cn=Bob,dc=example,dc=com> (upper case "B") and 
-   <cn=bob,dc=example,dc=com> (lower case "b") are equivalent when 
-   being compared semantically as LDAP DNs because the cn attribute is 
-   defined to be case insensitive, however the two values are not 
-   equivalent if they represent username values in DIGEST-MD5 because 
-   [SASLPrep] semantics are used by DIGEST-MD5.  
-6.3. simple authentication choice under TLS encryption 
-    
-   Following the negotiation of an appropriate TLS ciphersuite 
-   providing connection confidentiality, a client MAY authenticate to a 
-   directory that supports the simple authentication choice by 
-   performing a simple bind operation 
-    
-   Simple authentication with TLS encryption protection is performed as 
-   follows:   
-    
-      1. The client will use the Start TLS operation [Protocol] to 
-        negotiate the use of TLS security [TLS] on the connection to 
-        the LDAP server. The client need not have bound to the 
-        directory beforehand. 
-      
-         For the subsequent authentication procedure to be performed 
-         securely, the client and server MUST negotiate a ciphersuite 
-         which contains a bulk encryption algorithm of appropriate 
-         strength. Recommendations on cipher suites are given in 
-         section 9. 
-    
-      2. Following the successful completion of TLS negotiation, the 
-         client MUST send an LDAP bind request with the version number 
-         of 3, the name field containing a DN, and the simple 
-         authentication choice, containing a password. 
-    
-6.3.1. simple Authentication Choice  
-   DSAs that map the DN sent in the bind request to a directory entry 
-   with an associated set of one or more passwords will compare the 
-   presented password to the set of passwords associated with that 
-   entry. If the presented password matches any member of that set, 
-Harrison                  Expires June 2004                 [Page 15] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
-   then the server will respond with a success resultCode, otherwise 
-   the server will respond with an invalidCredentials resultCode. 
-    
-6.4. Other authentication choices with TLS 
-    
-   It is also possible, following the negotiation of TLS, to perform a 
-   SASL authentication that does not involve the exchange of plaintext 
-   reusable passwords. In this case the client and server need not 
-   negotiate a ciphersuite that provides confidentiality if the only 
-   service required is data integrity. 
-    
-7. Certificate-based authentication 
-   LDAP server implementations SHOULD support authentication via a 
-   client certificate in TLS, as defined in section 7.1. 
-7.1. Certificate-based authentication with TLS 
-   A user who has a public/private key pair in which the public key has 
-   been signed by a Certification Authority may use this key pair to 
-   authenticate to the directory server if the user's certificate is 
-   requested by the server. The user's certificate subject field SHOULD 
-   be the name of the user's directory entry, and the Certification 
-   Authority that issued the user's certificate must be sufficiently 
-   trusted by the directory server in order for the server to process 
-   the certificate. The means by which servers validate certificate 
-   paths is outside the scope of this document. 
-   A server MAY support mappings for certificates in which the subject 
-   field name is different from the name of the user's directory entry. 
-   A server which supports mappings of names MUST be capable of being 
-   configured to support certificates for which no mapping is required. 
-   The client will use the Start TLS operation [Protocol] to negotiate 
-   the use of TLS security [TLS] on the connection to the LDAP server. 
-   The client need not have bound to the directory beforehand. 
-   In the TLS negotiation, the server MUST request a certificate. The 
-   client will provide its certificate to the server, and the server 
-   MUST perform a private key-based encryption, proving it has the 
-   private key associated with the certificate. 
-   In deployments that require protection of sensitive data in transit, 
-   the client and server MUST negotiate a ciphersuite that contains a 
-   bulk encryption algorithm of appropriate strength. Recommendations 
-   of cipher suites are given in section 9. 
-   The server MUST verify that the client's certificate is valid. The 
-   server will normally check that the certificate is issued by a known 
-   certification authority (CA), and that none of the certificates on 
-   the client's certificate chain are invalid or revoked. There are 
-   several procedures by which the server can perform these checks. 
+12. Invalidated Associations 
  
-
-Harrison                  Expires June 2004                 [Page 16] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
-   Following the successful completion of TLS negotiation, the client 
-   will send an LDAP bind request with the SASL EXTERNAL mechanism. 
-8. LDAP Association State Transition Tables 
-    
-   To comprehensively diagram the various authentication and TLS states 
-   through hich an LDAP association may pass, this section provides a 
-   state transition table to represent a state diagram for the various 
-   states through which an LDAP association may pass during the course 
-   of its existence and the actions that cause these changes in state. 
-    
-8.1. LDAP Association States 
-    
-   The following table lists the valid LDAP association states and 
-   provides a description of each state. The ID for each state is used 
-   in the state transition table in section 8.4. 
-   ID State Description 
-   -- -------------------------------------------------------------- 
-   S1 Anonymous 
-          no Authentication ID is associated with the LDAP connection 
-          no Authorization ID is in force 
-   S2 Authenticated 
-          Authentication ID = I 
-          Authorization ID = X 
-   S3 Authenticated SASL EXTERNAL, implicit authorization ID 
-          Authentication ID = J 
-          Authorization ID = Y 
-   S4 Authenticated SASL EXTERNAL, explicit authorization ID  
-          Authentication ID = J 
-          Authorization ID = Z 
-8.2. Actions that Affect LDAP Association State 
-    
-   The following table lists the actions that can affect the 
-   authentication and authorization state of an LDAP association. The 
-   ID for each action is used in the state transition table in section 
-   8.4. 
-    
-   ID  Action 
-   --  -------------------------------------------------------------- 
-   A1  Client bind request fails 
-   A2  Client successfully performs anonymous simple bind 
-   A3  Client successfully performs unauthenticated simple bind 
-   A4  Client successfully performs simple bind with name and 
-        password OR SASL bind with any mechanism except EXTERNAL using 
-        an authentication ID = I that maps to authorization ID X 
-   A5  Client Binds SASL EXTERNAL with implicit assertion of 
-        authorization ID (section 3.3.6.1)]. The current 
-        authentication ID maps to authorization ID = Y. 
-   A6  Client Binds SASL EXTERNAL with explicit assertion of 
-        authorization ID = Z (section 3.3.6.2)] 
-
-Harrison                  Expires June 2004                 [Page 17] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
-   A7  Client abandons a bind operation, and server processes the 
-        abandon 
-   A8  Client abandons a bind operation, and server does not process 
-        the abandon 
-   A9  Client Start TLS request fails 
-   A10 Client Start TLS request succeeds 
-   A11 Client or Server: graceful TLS closure ([Protocol] section 
-        4.13.3.1.) 
-                                                  
-8.3. Decisions Used in Making LDAP Association State Changes 
-    
-   Certain changes in the authentication and authorization state of an 
-   LDAP association are only allowed if the server can affirmatively 
-   answer a question. These questions are applied as part of the 
-   criteria for allowing or disallowing a state transition in the state 
-   transition table in section 8.4.  
-   ID Decision Question 
-   -- -------------------------------------------------------------- 
-   D1 Are lower-layer credentials available? 
-   D2 Can lower-layer credentials for Auth ID "K" be mapped asserted 
-       AuthZID "L"? 
-8.4. LDAP Association State Transition Table 
-    
-   The LDAP Association table below lists the valid authentication and 
-   authorization states for an LDAP association and the actions that 
-   could affect them. For any given row in the table, the Current State 
-   column gives the state of an LDAP association, the Action column 
-   gives an action that could affect the state of an LDAP assocation, 
-   and the Next State column gives the resulting state of an LDAP 
-   association after the action occurs. 
-    
-   S1, the initial state for the state machine described in this table, 
-   is the authentication state when an LDAP connection is initially 
-   established. 
-   Current            Next    
-    State  Action     State  Comment 
-   ------- -------    -----  --------------------------------------- 
-     Any   A1          S1    [Protocol] section 4.2.1 
-     Any   A2          S1    Section 6 
-     Any   A3          S1    Section 6 
-     Any   A4          S2    Sections 6.1, 6.2 
-     Any   A5,         S1    Failed bind, section 3.3.6 
-            D1=no 
-     Any   A5,         S3     
-            D1=yes 
-     Any   A6,         S1    failed bind, section 3.3.6 
-            D1=no 
-     Any   A6,         S1    failed bind, section 3.3.6.2 
-            D1=yes,  
-            D2=no 
-Harrison                  Expires June 2004                 [Page 18] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
-     Any   A6,         S4     
-            D1=yes, 
-            D2=yes 
-     Any   A7          S1    [Protocol] section 4.2.1. Clients 
-                               cannot detect this state. 
-     Any   A8          no    [Protocol] section 4.2.1. Clients 
-                      change  cannot detect this state.  
-     Any   A9          no    [Protocol] section 4.13.2.2 
-                      change 
-     Any   A10         no    Section 4.2.1 
-                      change 
-     Any   A11         S1    Section 4.2.3 
+   The server may, at any time, invalidate the association, e.g. if the 
+   established security association between the client and server has 
+   unexpectedly failed or been compromised.  The association remains 
+   invalidated until the next successful bind request.  While the 
+   association is invalidated, the server may reject any operation 
+   request other than Bind, Unbind, and Start TLS by responding with a 
+   resultCode of strongAuthRequired to indicate that the client needs 
+   to bind to reestablish its authentication state before performing 
+   the requested operation. 
  
-9. TLS Ciphersuites 
+13. TLS Ciphersuites 
  
-   A client or server that supports TLS MUST support 
-   TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA and MAY support other ciphersuites 
-   offering equivalent or better protection. 
+        A client or server that supports TLS MUST support 
+        TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA. Servers SHOULD NOT support 
+        weaker ciphersuites unless other data integrity and 
+        confidentiality protection (such as a SASL security layer) is 
+        in place 
     
    Several issues should be considered when selecting TLS ciphersuites 
    that are appropriate for use in a given circumstance. These issues 
@@ -1087,6 +928,12 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
        some TLS ciphersuites provide no confidentiality protection 
        while other ciphersuites that do provide confidentiality 
        protection may be vulnerable to being cracked using brute force 
+
+Harrison                  Expires July 2004                 [Page 16] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
        methods, especially in light of ever-increasing CPU speeds that 
        reduce the time needed to successfully mount such attacks. 
       
@@ -1102,7 +949,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
        data, unless the network configuration is such that the danger 
        of a man-in-the-middle attack is tolerable. 
  
-9.1. TLS Ciphersuites Recommendations 
+13.1. TLS Ciphersuites Recommendations 
     
    As of the writing of this document, the following recommendations 
    regarding TLS ciphersuites are applicable. Because circumstances are 
@@ -1110,12 +957,6 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    but is hoped that it will serve as a useful starting point for 
    implementers.  
     
-
-Harrison                  Expires June 2004                 [Page 19] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
    The following ciphersuites defined in [TLS] MUST NOT be used for 
    confidentiality protection of passwords or data: 
  
@@ -1147,16 +988,18 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
          TLS_DH_anon_WITH_DES_CBC_SHA 
          TLS_DH_anon_WITH_3DES_EDE_CBC_SHA 
  
-    
  
-10. Security Considerations 
+Harrison                  Expires July 2004                 [Page 17] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
     
-   Security issues are discussed throughout this memo; the 
-   (unsurprising) conclusion is that mandatory security is important 
-   and that session confidentiality protection is required when 
-   snooping is a problem. 
+14. Security Considerations 
     
-   Servers are encouraged to prevent modifications by anonymous users.  
+   Security issues are discussed throughout this memo; the unsurprising 
+   conclusion is that mandatory security is important and that session 
+   confidentiality protection is required when snooping is a problem. 
     
    Servers can minimize denial of service attacks by timing out idle 
    connections, and returning the unwillingToPerform resultCode rather 
@@ -1170,11 +1013,6 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    Operational experience shows that clients can (and frequently do) 
    misuse unauthenticated bind (see section 5.1).  For example, a 
    client program might make a decision to grant access to non-
-Harrison                  Expires June 2004                 [Page 20] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
    directory information on the basis of completing a successful bind 
    operation. Some LDAP server implementations will return a success 
    response to an unauthenticated bind thus leaving the client with the 
@@ -1188,12 +1026,12 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    Access control SHOULD always be applied when reading sensitive 
    information or updating directory information. 
  
-   A connection on which the client has not performed the Start TLS 
-   operation or negotiated a suitable SASL mechanism for connection 
-   integrity and encryption services is subject to man-in-the-middle 
-   attacks to view and modify information in transit. 
+   A connection on which the client has not established connection  
+   integrity and privacy services (e.g via Start TLS, IPSec or a 
+   suitable SASL mechanism) is subject to man-in-the-middle attacks to 
+   view and modify information in transit. 
     
-10.1. Start TLS Security Considerations 
+14.1. Start TLS Security Considerations 
     
    The goals of using the TLS protocol with LDAP are to ensure 
    connection confidentiality and integrity, and to optionally provide 
@@ -1205,35 +1043,36 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
     
    Once established, TLS only provides for and ensures confidentiality 
    and integrity of the operations and data in transit over the LDAP 
-   association--and only if the implementations on the client and 
-   server support and negotiate it. The use of TLS does not provide or 
-   ensure for confidentiality and/or non-repudiation of the data housed 
-   by an LDAP-based directory server. Nor does it secure the data from 
+   connection--and only if the implementations on the client and server 
+   support and negotiate it. The use of TLS does not provide or ensure 
+   for confidentiality and/or non-repudiation of the data housed by an 
+
+Harrison                  Expires July 2004                 [Page 18] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
+   LDAP-based directory server. Nor does it secure the data from 
    inspection by the server administrators.  
      
    The level of security provided though the use of TLS depends 
    directly on both the quality of the TLS implementation used and the 
    style of usage of that implementation. Additionally, an active-
    intermediary attacker can remove the Start TLS extended operation 
-   from the supportedExtension attribute of the root DSE. Therefore, 
-   both parties SHOULD independently ascertain and consent to the 
-   security level achieved once TLS is established and before beginning 
-   use of the TLS connection. For example, the security level of the 
-   TLS connection might have been negotiated down to plaintext. 
+   from the supported attribute of the root DSE. Therefore, both 
+   parties SHOULD independently ascertain and consent to the security 
+   level achieved once TLS is established and before beginning use of 
+   the TLS connection. For example, the security level of the TLS 
+   connection might have been negotiated down to plaintext. 
     
    Clients SHOULD either warn the user when the security level achieved 
-   does not provide confidentiality and/or integrity protection, or be 
-   configurable to refuse to proceed without an acceptable level of 
-   security. 
+   does not provide data confidentiality and/or integrity protection, 
+   or be configurable to refuse to proceed without an acceptable level 
+   of security. 
     
    Client and server implementors SHOULD take measures to ensure proper 
    protection of credentials and other confidential data where such 
    measures are not otherwise provided by the TLS implementation. 
-Harrison                  Expires June 2004                 [Page 21] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
     
    Server implementors SHOULD allow for server administrators to elect 
    whether and when connection confidentiality and/or integrity is 
@@ -1243,7 +1082,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    Additional security considerations relating to the EXTERNAL 
    mechanism to negotiate TLS can be found in [SASL] and [TLS]. 
     
-11. IANA Considerations 
+15. IANA Considerations 
     
    The following IANA considerations apply to this document: 
     
@@ -1266,76 +1105,85 @@ Acknowledgements
     
 Normative References 
  
-   [RFC2119] Bradner, S., "Key Words for use in RFCs to Indicate 
-       Requirement Levels", BCP 14, RFC 2119, March 1997. 
-    
-   [ABNF] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax 
-       Specifications: ABNF", RFC 2234, November 1997. 
+
  
+Harrison                  Expires July 2004                 [Page 19] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
+   [ABNF]       Crocker, D., Ed. and P. Overell, "Augmented BNF for 
+                Syntax Specifications: ABNF", RFC 2234, November 1997. 
+    
    [DIGEST-MD5] Leach, P. C. Newman, and A. Melnikov, "Using Digest 
-      Authentication as a SASL Mechanism", draft-ietf-sasl-rfc2831bis-
-      xx.txt, a work in progress.  
+                Authentication as a SASL Mechanism", draft-ietf-sasl-
+                rfc2831bis-xx.txt, a work in progress.  
     
-   [LDAPDN] Zeilenga, Kurt D. (editor), "LDAP: String Representation of 
-      Distinguished Names", draft-ietf-ldapbis-dn-xx.txt, a work in 
-      progress. 
+   [Keyword]    Bradner, S., "Key Words for use in RFCs to Indicate 
+                Requirement Levels", BCP 14, RFC 2119, March 1997. 
     
-   [Models] Zeilenga, Kurt D. (editor), "LDAP: Directory Information 
-       Models", draft-ietf-ldapbis-models-xx.txt, a work in progress. 
+   [LDAPDN]     Zeilenga, Kurt D. (editor), "LDAP: String 
+                Representation of Distinguished Names", draft-ietf-
+                ldapbis-dn-xx.txt, a work in progress. 
     
-   [Protocol] Sermersheim, J., "LDAP: The Protocol", draft-ietf-
-       ldapbis-protocol-xx.txt, a work in progress. 
+   [Models]     Zeilenga, Kurt D. (editor), "LDAP: Directory 
+                Information Models", draft-ietf-ldapbis-models-xx.txt, 
+                a work in progress. 
     
-   [Roadmap] K. Zeilenga, "LDAP: Technical Specification Road Map", 
-       draft-ietf-ldapbis-roadmap-xx.txt, a work in progress. 
-Harrison                  Expires June 2004                 [Page 22] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
+   [Protocol]   Sermersheim, J., "LDAP: The Protocol", draft-ietf-
+                ldapbis-protocol-xx.txt, a work in progress. 
     
-   [SASL] Melnikov, A. (editor), "Simple Authentication and Security 
-       Layer (SASL)", draft-ietf-sasl-rfc2222bis-xx.txt, a work in 
-       progress. 
+   [Roadmap]    K. Zeilenga, "LDAP: Technical Specification Road Map", 
+                draft-ietf-ldapbis-roadmap-xx.txt, a work in progress. 
     
-   [SASLPrep] Zeilenga, K., "Stringprep profile for user names and 
-       passwords", draft-ietf-sasl-saslprep-xx.txt, (a work in 
-       progress)
+   [SASL]       Melnikov, A. (editor), "Simple Authentication and 
+                Security Layer (SASL)", draft-ietf-sasl-rfc2222bis-
+                xx.txt, a work in progress
     
-   [StringPrep]  Hoffman P. and M. Blanchet, "Preparation of 
-       Internationalized Strings ('stringprep')", draft-hoffman-
-       rfc3454bis-xx.txt, a work in progress.  
+   [SASLPrep]   Zeilenga, K., "Stringprep profile for user names and 
+                passwords", draft-ietf-sasl-saslprep-xx.txt, (a work in 
+                progress). 
     
-   [Syntaxes] Legg, S. (editor), "LDAP: Syntaxes and Matching Rules", 
-       draft-ietf-ldapbis-syntaxes-xx.txt, a work in progress. 
+   [StringPrep] Hoffman P. and M. Blanchet, "Preparation of 
+                Internationalized Strings ('stringprep')", draft-
+                hoffman-rfc3454bis-xx.txt, a work in progress.  
     
-   [TLS] Dierks, T. and C. Allen. "The TLS Protocol Version 1.1", 
-       draft-ietf-tls-rfc2246-bis-xx.txt, a work in progress. 
-   [UTF-8] Yergeau, F., "UTF-8, a transformation format of ISO 10646", 
-       RFC 3629, STD 63, November 2003. 
+   [Syntaxes]   Legg, S. (editor), "LDAP: Syntaxes and Matching Rules", 
+                draft-ietf-ldapbis-syntaxes-xx.txt, a work in progress. 
+    
+   [TLS]        Dierks, T. and C. Allen. "The TLS Protocol Version 
+                1.1", draft-ietf-tls-rfc2246-bis-xx.txt, a work in 
+                progress. 
     
-   [Unicode] The Unicode Consortium, "The Unicode Standard, Version 
-       3.2.0" is defined by "The Unicode Standard, Version 3.0" 
-       (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5), as 
-       amended by the "Unicode Standard Annex #27: Unicode 3.1" 
-       (http://www.unicode.org/reports/tr27/) and by the Ã¶Unicode 
-       Standard Annex #28: Unicode 3.2" 
-       (http://www.unicode.org/reports/tr28/). 
+   [UTF-8]      Yergeau, F., "UTF-8, a transformation format of ISO 
+                10646", RFC 3629, STD 63, November 2003. 
+    
+   [Unicode]    The Unicode Consortium, "The Unicode Standard, Version 
+                3.2.0" is defined by "The Unicode Standard, Version 
+                3.0" (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-
+                61633-5), as amended by the "Unicode Standard Annex 
+                #27: Unicode 3.1" 
+                (http://www.unicode.org/reports/tr27/) and by the 
+                "Unicode Standard Annex #28: Unicode 3.2" 
+                (http://www.unicode.org/reports/tr28/). 
+Harrison                  Expires July 2004                 [Page 20] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
 Informative References 
  
-   [ANONYMOUS] Zeilenga, K.,"Anonymous SASL Mechanism", draft-zeilenga-
-       sasl-anon-xx.txt, a work in progress. 
+   [ANONYMOUS]  Zeilenga, K.,"Anonymous SASL Mechanism", draft-
+                zeilenga-sasl-anon-xx.txt, a work in progress. 
     
-   [PLAIN] Zeilenga, K.,"Plain SASL Mechanism", draft-zeilenga-sasl-
-       plain-xx.txt, a work in progress
+   [Glossary]   Shirey, R., "Internet Security Glossary", RFC 2828, May 
+                2000
     
-    [RFC2828] Shirey, R., "Internet Security Glossary", RFC 2828, May 
-       2000
+   [PLAIN]      Zeilenga, K.,"Plain SASL Mechanism", draft-zeilenga-
+                sasl-plain-xx.txt, a work in progress
     
-   [RFC2401] Kent, S. and R. Atkinson, "Security Architecture for the 
-       Internet Protocol", RFC 2401, November 1998. 
+   [SecArch]    Kent, S. and R. Atkinson, "Security Architecture for 
+                the Internet Protocol", RFC 2401, November 1998. 
  
  
 Author's Address 
@@ -1344,15 +1192,140 @@ Author's Address
    Novell, Inc. 
    1800 S. Novell Place 
    Provo, UT 84606 
+   USA 
    +1 801 861 2642 
    roger_harrison@novell.com 
  
+Appendix A. LDAP Association State Transition Tables 
+    
+   This section provides a state transition table to represent a state 
+   diagram for the various authentication and TLS states through which 
+   an LDAP association may pass during the course of its existence and 
+   the actions that cause these changes in state.   
+    
+   This section is based entirely on information found in this document 
+   and other documents that are part of the LDAP Technical 
+   Specification [Roadmap]. As such, it is strictly informational in 
+   nature. 
+    
+A.1. LDAP Association States 
+    
+   The following table lists the valid LDAP association states and 
+   provides a description of each state. The ID for each state is used 
+   in the state transition table in section A.4. 
+    
+   ID State Description 
+   -- -------------------------------------------------------------- 
+   S1 Anonymous 
+          no Authentication ID is associated with the LDAP connection 
+          no Authorization ID is in force 
+   S2 Authenticated 
+          Authentication ID = I 
+          Authorization ID = X 
+   S3 Authenticated SASL EXTERNAL, implicit authorization ID 
  
-Harrison                  Expires June 2004                 [Page 23
+Harrison                  Expires July 2004                 [Page 21
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
-Appendix A. Example Deployment Scenarios 
+          Authentication ID = J 
+          Authorization ID = Y 
+   S4 Authenticated SASL EXTERNAL, explicit authorization ID  
+          Authentication ID = J 
+          Authorization ID = Z 
+A.2. Actions that Affect LDAP Association State 
+    
+   The following table lists the actions that can affect the 
+   authentication and authorization state of an LDAP association. The 
+   ID for each action is used in the state transition table in section 
+   A.4. 
+    
+   ID  Action 
+   --  -------------------------------------------------------------- 
+   A1  Client bind request fails 
+   A2  Client successfully performs anonymous simple bind 
+   A3  Client successfully performs unauthenticated simple bind 
+   A4  Client successfully performs simple bind with name and 
+        password OR SASL bind with any mechanism except EXTERNAL using 
+        an authentication ID = I that maps to authorization ID X 
+   A5  Client Binds SASL EXTERNAL with implicit assertion of 
+        authorization ID (section 3.3.6.1)]. The current 
+        authentication ID maps to authorization ID = Y. 
+   A6  Client Binds SASL EXTERNAL with explicit assertion of 
+        authorization ID = Z (section 3.3.6.2)] 
+   A7  Client abandons a bind operation, and server processes the 
+        abandon 
+   A8  Client abandons a bind operation, and server does not process 
+        the abandon 
+   A9  Client Start TLS request fails 
+   A10 Client Start TLS request succeeds 
+   A11 Client or Server: graceful TLS closure ([Protocol] section 
+        4.13.3.1.) 
+                                                  
+A.3. Decisions Used in Making LDAP Association State Changes 
+    
+   Certain changes in the authentication and authorization state of an 
+   LDAP association are only allowed if the server can affirmatively 
+   answer a question. These questions are applied as part of the 
+   criteria for allowing or disallowing a state transition in the state 
+   transition table in section A.4.  
+    
+   ID Decision Question 
+   -- -------------------------------------------------------------- 
+   D1 Are lower-layer credentials available? 
+   D2 Can lower-layer credentials for Auth ID "K" be mapped to 
+       asserted AuthZID "L"? 
+    
+A.4. LDAP Association State Transition Table 
+    
+   The LDAP Association table below lists the valid authentication and 
+   authorization states for an LDAP association and the actions that 
+Harrison                  Expires July 2004                 [Page 22] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
+   could affect them. For any given row in the table, the Current State 
+   column gives the state of an LDAP association, the Action column 
+   gives an action that could affect the state of an LDAP assocation, 
+   and the Next State column gives the resulting state of an LDAP 
+   association after the action occurs. 
+    
+   S1, the initial state for the state machine described in this table, 
+   is the authentication state when an LDAP connection is initially 
+   established. 
+    
+   Current            Next    
+    State  Action    State  Comment 
+   ------- -------   -----  --------------------------------------- 
+     Any   A1          S1    [Protocol] section 4.2.1 
+     Any   A2          S1    Section 6 
+     Any   A3          S1    Section 6 
+     Any   A4          S2    Sections 6.1, 6.2 
+     Any   A5,         S1    Failed bind, section 3.3.6 
+            D1=no 
+     Any   A5,         S3     
+            D1=yes 
+     Any   A6,         S1    failed bind, section 3.3.6 
+            D1=no 
+     Any   A6,         S1    failed bind, section 3.3.6.2 
+            D1=yes,  
+            D2=no 
+     Any   A6,         S4     
+            D1=yes, 
+            D2=yes 
+     Any   A7          S1    [Protocol] section 4.2.1. Clients 
+                               cannot detect this state. 
+     Any   A8          no    [Protocol] section 4.2.1. Clients 
+                      change  cannot detect this state.  
+     Any   A9          no    [Protocol] section 4.13.2.2 
+                      change 
+     Any   A10         no    Section 4.2.1 
+                      change 
+     Any   A11         S1    Section 4.2.3 
+Appendix B. Example Deployment Scenarios 
  
    The following scenarios are typical for LDAP directories on the 
    Internet, and have different security requirements. (In the 
@@ -1366,6 +1339,11 @@ Appendix A. Example Deployment Scenarios
    (1) A read-only directory, containing no sensitive data, accessible 
        to "anyone", and TCP connection hijacking or IP spoofing is not 
        a problem. Anonymous authentication, described in section 7, is 
+Harrison                  Expires July 2004                 [Page 23] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
        suitable for this type of deployment, and requires no additional 
        security functions except administrative service limits. 
  
@@ -1391,30 +1369,22 @@ Appendix A. Example Deployment Scenarios
    (5) A directory containing sensitive data. This scenario requires 
        data confidentiality protection AND secure authentication. 
  
-Appendix B. Authentication and Authorization: Definitions and Concepts 
+Appendix C. Authentication and Authorization Concepts 
  
    This appendix defines basic terms, concepts, and interrelationships 
    regarding authentication, authorization, credentials, and identity. 
    These concepts are used in describing how various security 
    approaches are utilized in client authentication and authorization. 
  
-B.1. Access Control Policy 
+C.1. Access Control Policy 
  
    An access control policy is a set of rules defining the protection 
    of resources, generally in terms of the capabilities of persons or 
-   other entities accessing those resources. A common expression of an 
-   access control policy is an access control list. Security objects 
-   and mechanisms, such as those described here, enable the expression 
-   of access control policies and their enforcement. Access control 
-Harrison                  Expires June 2004                 [Page 24] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
+   other entities accessing those resources. Security objects and 
+   mechanisms, such as those described here, enable the expression of 
+   access control policies and their enforcement.        
  
-   policies are typically expressed in terms of access control factors 
-   as described below. 
-B.2. Access Control Factors 
+C.2. Access Control Factors 
  
    A request, when it is being processed by a server, may be associated 
    with a wide variety of security-related factors (section 4.2 of 
@@ -1428,10 +1398,15 @@ B.2. Access Control Factors
  
    Access control policies are expressed in terms of access control 
    factors. E.g., a request having ACFs i,j,k can perform operation Y 
+Harrison                  Expires July 2004                 [Page 24] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
    on resource Z. The set of ACFs that a server makes available for 
    such expressions is implementation-specific. 
  
-B.3. Authentication, Credentials, Identity 
+C.3. Authentication, Credentials, Identity 
  
    Authentication credentials are the evidence supplied by one party to 
    another, asserting the identity of the supplying party (e.g. a user) 
@@ -1448,7 +1423,7 @@ B.3. Authentication, Credentials, Identity
    mechanism may constrain the form of authentication identities used 
    with it. 
  
-B.4. Authorization Identity 
+C.4. Authorization Identity 
  
    An authorization identity is one kind of access control factor. It 
    is the name of the user or other entity that requests that 
@@ -1465,28 +1440,28 @@ B.4. Authorization Identity
    privileges of the identity for which they are proxying [SASL]. Also, 
    the form of authentication identity supplied by a service like TLS 
    may not correspond to the authorization identities used to express a 
-Harrison                  Expires June 2004                 [Page 25] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
    server's access control policy, requiring a server-specific mapping 
    to be done. The method by which a server composes and validates an 
    authorization identity from the authentication credentials supplied 
    by a client is implementation-specific. 
  
-Appendix C. RFC 2829 Change History 
+Appendix D. RFC 2829 Change History 
     
    This appendix lists the changes made to the text of RFC 2829 in 
    preparing this document. 
     
-C.0. General Editorial Changes 
+D.0. General Editorial Changes 
    Version -00 
     
      - Changed other instances of the term LDAP to LDAP where v3 of the 
        protocol is implied. Also made all references to LDAP use the 
        same wording. 
     
+Harrison                  Expires July 2004                 [Page 25] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
      - Miscellaneous grammatical changes to improve readability. 
       
      - Made capitalization in section headings consistent. 
@@ -1496,44 +1471,39 @@ C.0. General Editorial Changes
      - Changed title to reflect inclusion of material from RFC 2830 and 
        2251. 
     
-C.1. Changes to Section 1 
+D.1. Changes to Section 1 
     
    Version -01 
     
      - Moved conventions used in document to a separate section. 
     
-C.2. Changes to Section 2 
+D.2. Changes to Section 2 
     
    Version -01 
     
      - Moved section to an appendix. 
     
-C.3. Changes to Section 3 
+D.3. Changes to Section 3 
     
    Version -01 
     
      - Moved section to an appendix. 
     
-C.4 Changes to Section 4 
+D.4 Changes to Section 4 
     
    Version -00 
     
      - Changed "Distinguished Name" to "LDAP distinguished name". 
  
-C.5. Changes to Section 5 
+D.5. Changes to Section 5 
     
    Version -00 
     
-Harrison                  Expires June 2004                 [Page 26] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
      - Added the following sentence: "Servers SHOULD NOT allow clients 
        with anonymous authentication to modify directory entries or 
        access sensitive information in directory entries." 
     
-C.5.1. Changes to Section 5.1 
+D.5.1. Changes to Section 5.1 
     
    Version -00 
     
@@ -1546,8 +1516,13 @@ C.5.1. Changes to Section 5.1
      - Brought text describing procedure for performing an anonymous 
        bind from section 4.2 of RFC 2251 bis.  This text will be 
        removed from the draft standard version of that document.  
+Harrison                  Expires July 2004                 [Page 26] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
     
-C.6. Changes to Section 6. 
+D.6. Changes to Section 6. 
     
    Version -00 
       
@@ -1568,7 +1543,7 @@ C.6. Changes to Section 6.
        implementations MUST support authentication with a password...") 
        to section on Digest Authentication (Now section 6.2). 
       
-C.6.1. Changes to Section 6.1. 
+D.6.1. Changes to Section 6.1. 
     
    Version -00 Renamed section to 6.2 
     
@@ -1576,18 +1551,12 @@ C.6.1. Changes to Section 6.1.
        DIGEST-MD5 SASL mechanism is required for all conforming LDAP 
        implementations 
     
-C.6.2. Changes to Section 6.2 
+D.6.2. Changes to Section 6.2 
     
    Version -00 
       
      - Renamed section to 6.3 
     
-
-Harrison                  Expires June 2004                 [Page 27] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
      - Reworded first paragraph to remove reference to user and the 
        userPassword password attribute Made the first paragraph more 
        general by simply saying that if a directory supports simple 
@@ -1604,17 +1573,22 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
        sent in the bind request to a directory entry with a 
        userPassword attribute." 
     
-C.6.3. Changes to section 6.3. 
+D.6.3. Changes to section 6.3. 
     
+Harrison                  Expires July 2004                 [Page 27] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
      Version -00 
       
      - Renamed to section 6.4. 
     
-C.7. Changes to section 7. 
+D.7. Changes to section 7. 
     
    none 
     
-C.7.1. Changes to section 7.1. 
+D.7.1. Changes to section 7.1. 
     
    Version -00 
       
@@ -1622,7 +1596,7 @@ C.7.1. Changes to section 7.1.
        "to have issued the certificate" immediately after 
        "Certification Authority." 
  
-C.8. Changes to section 8. 
+D.8. Changes to section 8. 
  
    Version -00 
       
@@ -1641,12 +1615,7 @@ C.8. Changes to section 8.
        for Other Security Services) to bring material on SASL 
        mechanisms together into one location. 
  
-C.9. Changes to section 9. 
-Harrison                  Expires June 2004                 [Page 28] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
+D.9. Changes to section 9. 
  
    Version -00 
       
@@ -1665,13 +1634,18 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
      - Added section 9.1.1. heading. 
       
      - Added section 9.1.2. heading. 
+Harrison                  Expires July 2004                 [Page 28] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
       
    Version -01 
       
      - Moved entire section 9 to become section 3.5 so that it would be 
        with other SASL material. 
  
-C.10. Changes to Section 10. 
+D.10. Changes to Section 10. 
       
    Version -00 
       
@@ -1686,13 +1660,13 @@ C.10. Changes to Section 10.
        equivalent or better protection," to the last paragraph of the 
        section. 
       
-C.11. Changes to Section 11. 
+D.11. Changes to Section 11. 
       
    Version -01 
       
      - Moved to section 3.6 to be with other SASL material. 
       
-C.12. Changes to Section 12. 
+D.12. Changes to Section 12. 
       
    Version -00 
     
@@ -1701,28 +1675,29 @@ C.12. Changes to Section 12.
        is renumbered to become section 13. 
       
    Version -01 
-Harrison                  Expires June 2004                 [Page 29] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
     
      - Moved to section 3.7 to be with other SASL material. 
       
-C.13. Changes to Section 13 (original section 12). 
+D.13. Changes to Section 13 (original section 12). 
  
    None 
     
-Appendix D. RFC 2830 Change History 
+Appendix E. RFC 2830 Change History 
     
    This appendix lists the changes made to the text of RFC 2830 in 
    preparing this document. 
     
-D.0. General Editorial Changes 
+E.0. General Editorial Changes 
     
      - Material showing the PDUs for the Start TLS response was broken 
        out into a new section. 
       
+
+Harrison                  Expires July 2004                 [Page 29] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
      - The wording of the definition of the Start TLS request and Start 
        TLS response was changed to make them parallel. NO changes were 
        made to the ASN.1 definition or the associated values of the 
@@ -1731,12 +1706,12 @@ D.0. General Editorial Changes
      - A separate section heading for graceful TLS closure was added 
        for parallelism with section on abrupt TLS closure. 
  
-Appendix E. RFC 2251 Change History 
+Appendix F. RFC 2251 Change History 
     
    This appendix lists the changes made to the text of RFC 2251 in 
    preparing this document. 
     
-E.0. General Editorial Changes 
+F.0. General Editorial Changes 
     
      - All material from section 4.2 of RFC 2251 was moved into this 
        document. 
@@ -1753,18 +1728,12 @@ E.0. General Editorial Changes
        the discussion of the Bind operation (primarily sections 4.4 - 
        4.7). 
  
-Appendix F. Change History to Combined Document 
+Appendix G. Change History to Combined Document 
     
-F.1. Changes for draft-ldap-bis-authmeth-02 
+G.1. Changes for draft-ldap-bis-authmeth-02 
     
    General 
     
-
-Harrison                  Expires June 2004                 [Page 30] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
      - Added references to other LDAP standard documents, to sections 
        within the document, and fixed broken references. 
       
@@ -1782,6 +1751,12 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
     
    Section 3. 
     
+
+Harrison                  Expires July 2004                 [Page 30] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
      - Brought language in requirement (3) in line with security 
        glossary. 
       
@@ -1818,12 +1793,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
      - Brought security terminology in line with IETF security glossary 
        throughout the appendix. 
     
-F.2. Changes for draft-ldap-bis-authmeth-03 
-Harrison                  Expires June 2004                 [Page 31] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
+G.2. Changes for draft-ldap-bis-authmeth-03 
     
    General 
     
@@ -1831,7 +1801,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
        references to conform to WG chair suggestions for the overall 
        technical specification. 
       
-     - Several issues--G.13, G.14, G.16, G.17--were resolved without 
+     - Several issues--H.13, H.14, H.16, H.17--were resolved without 
        requiring changes to the document. 
     
    Section 3 
@@ -1840,6 +1810,12 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
  
    Section 4 
     
+
+Harrison                  Expires July 2004                 [Page 31] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
      - Removed sections 4.1, 4.2 and parts of section 4.3. This 
        information was being duplicated in the protocol specification 
        and will now reside there permanently. 
@@ -1872,21 +1848,16 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
        information. 
       
  
-F.3. Changes for draft-ldap-bis-authmeth-04 
+G.3. Changes for draft-ldap-bis-authmeth-04 
     
    General 
     
      - Changed references to use [RFCnnnn] format wherever possible. 
        (References to works in progress still use [name] format.) 
-Harrison                  Expires June 2004                 [Page 32] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
      - Various edits to correct typos and bring field names, etc. in 
        line with specification in [Protocol] draft. 
       
-     - Several issues--G.13, G.14, G.16, G.17--were resolved without 
+     - Several issues--H.13, H.14, H.16, H.17--were resolved without 
        requiring changes to the document. 
     
    Section 4.4.1. 
@@ -1899,6 +1870,11 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
      - Removed sections 5.1, 5.2, and 5.4 that will be added to 
        [Protocol]. Renumbered sections to accommodate this change. 
      -  
+Harrison                  Expires July 2004                 [Page 32] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
     
    Section 6 
     
@@ -1908,7 +1884,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
        that actions are in ascending order (makes analyzing the table 
        much more logical). Added action A2 to several states where it 
        was missing and valid. Added actions A7 and A8 placeholders to 
-       states S1, S2, S4 and S5 pending resolution of issue G.28. 
+       states S1, S2, S4 and S5 pending resolution of issue H.28. 
       
    Section 11 
     
@@ -1922,7 +1898,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
      - Verified all normative references and moved informative 
        references to a new section 14. 
       
-F.4. Changes for draft-ldap-bis-authmeth-05 
+G.4. Changes for draft-ldap-bis-authmeth-05 
     
    General 
     
@@ -1937,11 +1913,6 @@ F.4. Changes for draft-ldap-bis-authmeth-05
      - Updated to match current contents of documents. This was needed 
        due to movement of material on Bind and Start TLS operations to  
        [Protocol] in this revision. 
-Harrison                  Expires June 2004                 [Page 33] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
     
    Section 3. 
     
@@ -1957,6 +1928,12 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
        revision of the draft. 
  
       
+
+Harrison                  Expires July 2004                 [Page 33] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
      - Paragraph beginning, " If TLS is negotiated, the client MUST 
        discard all information..." was moved to section 5.1.7 and 
        integrated with related material there. 
@@ -1994,13 +1971,6 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
       
    Section 5.1.7. 
       
-
-
-Harrison                  Expires June 2004                 [Page 34] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
      - Wording from section 3 paragraph beginning " If TLS is 
        negotiated, the client MUST discard all information..." was 
        moved to this section and integrated with existing text. 
@@ -2018,6 +1988,11 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
  
    Section 8.1. 
     
+Harrison                  Expires July 2004                 [Page 34] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
      - Changed term  "data privacy" to "data confidentiality" to be 
        consistent with usage in rest of document.  
     
@@ -2033,12 +2008,12 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
        confidentiality protection" to be consistent with usage in rest 
        of document. 
     
-   Appendix A
+   Appendix B
     
      - Began changes to incorporate information on deployment scenarios 
        removed from section 3. 
  
-F.5. Changes for draft-ldap-bis-authmeth-06 
+G.5. Changes for draft-ldap-bis-authmeth-06 
  
       
    General 
@@ -2055,11 +2030,6 @@ F.5. Changes for draft-ldap-bis-authmeth-06
       
    Section 1 
       
-Harrison                  Expires June 2004                 [Page 35] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
      - Added additional example of spoofing under threat (7). 
       
    Section 2.1 
@@ -2077,6 +2047,11 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
     
      - Began edits to LDAP Association state table to clarify meaning 
        of various states and actions. 
+Harrison                  Expires July 2004                 [Page 35] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
       
      - Added action A9 to cover abandoned bind operation and added 
        appropriate transitions to the state transition table to 
@@ -2098,7 +2073,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
      - Added a clarifying example to the consideration regarding misuse 
        of unauthenticated access.  
  
-F.6. Changes for draft-ldap-bis-authmeth-07 
+G.6. Changes for draft-ldap-bis-authmeth-07 
  
       
    General 
@@ -2114,11 +2089,6 @@ F.6. Changes for draft-ldap-bis-authmeth-07
     
      - Rewrote much of section 3.3 to meet the SASL profile 
        requirements of draft-ietf-sasl-rfc2222bis-xx.txt section 5. 
-Harrison                  Expires June 2004                 [Page 36] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
       
      - Changed treatement of SASL ANONYMOUS and PLAIN mechanisms to 
        bring in line with WG consensus. 
@@ -2136,6 +2106,11 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
        The local policy in place for implicit assertion is adequate. 
     
    Section 7 
+Harrison                  Expires July 2004                 [Page 36] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
     
      - Removed most of section 7.2 as the information is now covered 
        adequately via the new SASL profile in section 3.3. Added note 
@@ -2148,7 +2123,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
        to any member of the set of stored passwords constitutes a 
        successful authentication. 
     
-F.6. Changes for draft-ldap-bis-authmeth-08 
+G.7. Changes for draft-ldap-bis-authmeth-08 
  
       
    General 
@@ -2173,11 +2148,6 @@ F.6. Changes for draft-ldap-bis-authmeth-08
      - Added 1.5 sentences at end of introductory paragraph indicating 
        the effect of the Bind op on the LDAP association. 
       
-Harrison                  Expires June 2004                 [Page 37] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
    Section 3.1 
       
      - Retitled section and clarified wording 
@@ -2195,6 +2165,11 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
       
    Section 3.3.5 
       
+Harrison                  Expires July 2004                 [Page 37] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
      - Changed requirement to discard information about server fetched 
        prior to SASL negotiation from MUST to SHOULD to allow for 
        information obtained through secure mechanisms. 
@@ -2232,11 +2207,6 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    Section 4.1.6  
       
      - Renumbered to 4.1.5. 
-Harrison                  Expires June 2004                 [Page 38] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
      - Updated server identity check rules for server's name based on 
        WG list discussion. 
       
@@ -2254,6 +2224,11 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
  
    Section 10 
       
+Harrison                  Expires July 2004                 [Page 38] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
      - Added security consideration (moved from elsewhere) discouraging 
        use of cleartext passwords on unprotected communication 
        channels. 
@@ -2263,7 +2238,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
      - Added an IANA consideration to update GSSAPI service name 
        registry to point to [Roadmap] and [Authmeth] 
       
-F.7. Changes for draft-ldap-bis-authmeth-09 
+G.8. Changes for draft-ldap-bis-authmeth-09 
  
       
    General 
@@ -2286,16 +2261,11 @@ F.7. Changes for draft-ldap-bis-authmeth-09
       
      - Reworded sentence beginning, "It is also desireable to allow 
        authentication methods to carry identities based on existingù
-       non-LDAP DNùforms..." 
+       non-LDAP DN-forms..." 
      - Clarified relationship of this document to other documents in 
        the LDAP TS. 
     
    Section 3.3.5 
-Harrison                  Expires June 2004                 [Page 39] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
       
      - Removed paragraph beginning,"If the client is configured to 
        support multiple SASL mechanisms..." because the actions 
@@ -2313,6 +2283,11 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
      - Moved most of section 4.2.2, Client Assertion of Authorization 
        Identity, to sections 3.3.6, 3.3.6.1, and 3.3.6.2.  
     
+Harrison                  Expires July 2004                 [Page 39] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
    Section 3.3.6.4 
       
      - Moved some normative comments into text body. 
@@ -2350,11 +2325,6 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
      - Added sentence describing protections provided by DIGEST-MD5 
        method. 
      - Changed DNs in exmple to be dc=example,dc=com. 
-Harrison                  Expires June 2004                 [Page 40] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
     
    Section 10 
       
@@ -2363,12 +2333,31 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
      - Substantial rework of consideration on misuse of unauthenticated 
        bind. 
  
-Appendix G. Issues to be Resolved 
+G.9. Changes for draft-ldap-bis-authmeth-10 
+      
+     - Reorganized content of sections 3-9 to improve document flow and 
+       reduce redundancy. 
+     - Resolved issue of effect of Start TLS and TLS closure on LDAP 
+       association state. 
+     - Made numerous minor wording changes based on WG feedback. 
+     - Updated list of threats for Section 1. 
+Harrison                  Expires July 2004                 [Page 40] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
+     - Recommendation that servers should not support weaker TLS 
+       ciphersuites unless other protection is in place. 
+     - Moved authentication state table to appendix and relettered 
+       appendices. 
+Appendix H. Issues to be Resolved 
     
    This appendix lists open questions and issues that need to be 
    resolved before work on this document is deemed complete. 
  
-G.1. 
+H.1. 
  
    Section 1 lists 6 security mechanisms that can be used by LDAP 
    servers. I'm not sure what mechanism 5, "Resource limitation by 
@@ -2377,7 +2366,7 @@ G.1.
    Status: resolved. Changed wording to "administrative service limits" 
    to clarify meaning. 
  
-G.2. 
+H.2. 
  
    Section 2 paragraph 1 defines the term, "sensitive." Do we want to 
    bring this term and other security-related terms in alignment with 
@@ -2386,7 +2375,7 @@ G.2.
    Status: resolved. WG input at IETF 51 was that we should do this, so 
    the appropriate changes have been made. 
  
-G.3. 
+H.3. 
  
    Section 2, deployment scenario 2: What is meant by the term "secure 
    authentication function?" 
@@ -2396,7 +2385,7 @@ G.3.
    data confidentiality for sensitive authentication information and 
    data integrity for all authentication information. 
  
-G.4. 
+H.4. 
  
    Section 3, deployment scenario 3: What is meant by the phrase, 
    "directory data is authenticated by the server?" 
@@ -2405,19 +2394,18 @@ G.4.
    the identity of the directory server and the integrity of the data 
    sent from that server to the client, and explictly stated such. 
  
-G.5. 
+H.5. 
  
-
+   Section 4 paragraph 3: What is meant by the phrase, "this means that 
+   either this data is useless for faking authentication (like the Unix 
+   "/etc/passwd" file format used to be)?" 
+    
 
  
-Harrison                  Expires June 2004                 [Page 41] 
+Harrison                  Expires July 2004                 [Page 41] 
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
-   Section 4 paragraph 3: What is meant by the phrase, "this means that 
-   either this data is useless for faking authentication (like the Unix 
-   "/etc/passwd" file format used to be)?" 
-    
    Status: resolved. Discussion at IETF 52 along with discussions with 
    the original authors of this material have convinced us that this 
    reference is simply too arcane to be left in place. In -03 the text 
@@ -2426,7 +2414,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    update it in session well protected against snooping, and the 
    reference to /etc/passwd has been removed. 
  
-G.6. 
+H.6. 
  
    Section 4 paragraph 7 begins: "For a directory needing session 
    protection..." Is this referring to data confidentiality or data 
@@ -2435,7 +2423,7 @@ G.6.
    Status: resolved. Changed wording to say, "For a directory needing 
    data security (both data integrity and data confidentiality)..." 
  
-G.7. 
+H.7. 
  
    Section 4 paragraph 8 indicates that "information about the server 
    fetched prior to the TLS negotiation" must be discarded. Do we want 
@@ -2446,7 +2434,7 @@ G.7.
    meeting, this has been changed to explicitly state, "fetched prior 
    to the initiation of the TLS negotiation..." 
  
-G.8. 
+H.8. 
  
    Section 4 paragraph 9 indicates that clients SHOULD check the 
    supportedSASLMechanisms list both before and after a SASL security 
@@ -2467,20 +2455,21 @@ G.8.
     
         Approach 2: Clients MUST check the supportedSASLMechanisms list 
         both before and after SASL negotiation UNLESS they use a 
+        different trusted source to determine available supported SASL 
+        mechanisms. 
+    
+
 
  
-Harrison                  Expires June 2004                 [Page 42] 
+Harrison                  Expires July 2004                 [Page 42] 
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
-        different trusted source to determine available supported SASL 
-        mechanisms. 
-    
    Status: resolved. WG input at IETF 51 was that Approach 1 was 
    probably best. I ended up keeping the basic structure similar to the 
    original to meet this intent. 
  
-G.9. 
+H.9. 
  
    Section 6.3.1 states: "DSAs that map the DN sent in the bind request 
    to a directory entry with a userPassword attribute will... compare 
@@ -2495,7 +2484,7 @@ G.9.
    "user" in referring to the directory entry specified by the DN in 
    the bind request. 
     
-G.10 userPassword and simple bind 
+H.10 userPassword and simple bind 
     
    We need to be sure that we don't require userPassword to be the only 
    attribute used for authenticating via simple bind. (See 2251 sec 4.2 
@@ -2509,7 +2498,7 @@ G.10 userPassword and simple bind
    "user" in referring to the directory entry specified by the DN in 
    the bind request. 
  
-G.11. Meaning of LDAP Association 
+H.11. Meaning of LDAP Association 
     
    The original RFC 2830 uses the term "LDAP association" in describing 
    a connection between an LDAP client and server regardless of the 
@@ -2522,19 +2511,19 @@ G.11. Meaning of LDAP Association
    clarified somewhere in the draft. Added "LDAP association" to a 
    glossary in section 1. 
     
-G.12. Is DIGEST-MD5 mandatory for all implementations? 
+H.12. Is DIGEST-MD5 mandatory for all implementations? 
     
    Reading 2829bis I think DIGEST-MD5 is mandatory ONLY IF your server 
    supports password based authentication...but the following makes it 
    sound mandatory to provide BOTH password authentication AND DIGEST-
+   MD5:  
+    
+   "6.2. Digest authentication  
  
-Harrison                  Expires June 2004                 [Page 43] 
+Harrison                  Expires July 2004                 [Page 43] 
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
-   MD5:  
-    
-   "6.2. Digest authentication  
     
    LDAP implementations MUST support authentication with a password  
    using the DIGEST-MD5 SASL mechanism for password protection, as  
@@ -2549,7 +2538,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    beginning of section 8.2 stating that LDAP server implementations 
    must support this method. 
     
-G.13. Ordering of authentication levels requested 
+H.13. Ordering of authentication levels requested 
  
    Again on the subject of authentication level, is it possible to  
    define an ordering on authentication levels which defines their 
@@ -2564,7 +2553,7 @@ G.13. Ordering of authentication levels requested
    Status: out of scope. This is outside the scope of this document and 
    will not be addressed. 
     
-G.14. Document vulnerabilities of various mechanisms 
+H.14. Document vulnerabilities of various mechanisms 
  
    While I'm here...in 2829, I think it would be good to have some  
    comments or explicit reference to a place where the security 
@@ -2579,7 +2568,7 @@ G.14. Document vulnerabilities of various mechanisms
    Status: out of scope. This is outside the scope of this document and 
    will not be addressed. 
     
-G.15. Include a Start TLS state transition table 
+H.15. Include a Start TLS state transition table 
     
    The pictoral representation it is nominally based on is here (URL 
    possibly folded): 
@@ -2587,13 +2576,13 @@ G.15. Include a Start TLS state transition table
    http://www.stanford.edu/~hodges/doc/LDAPAssociationStateDiagram-
    1999-12-14.html 
  
-Harrison                  Expires June 2004                 [Page 44] 
+   (Source: Jeff Hodges) 
+    
+Harrison                  Expires July 2004                 [Page 44] 
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
-   (Source: Jeff Hodges) 
-    
    Status: Resolved.  
     
    Table provided in -03. Review of content for accuracy in -04. 
@@ -2605,7 +2594,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    were based on suggestions from WG and greatly simplified overall 
    table. 
     
-G.16. Empty sasl credentials question 
+H.16. Empty sasl credentials question 
  
    I spent some more time looking microscopically at ldap-auth-methods 
    and ldap-ext-tls drafts. The drafts say that the credential must 
@@ -2621,7 +2610,7 @@ G.16. Empty sasl credentials question
    discussion at IETF 52 that SASL AuthzID credentials empty and absent 
    are equivalent in the latest SASL ID. This resolves the issue.  
     
-G.17. Hostname check from MUST to SHOULD? 
+H.17. Hostname check from MUST to SHOULD? 
     
    I am uneasy about the hostname check. My experience from PKI with 
    HTTP probably is a contributing factor; we have people using the 
@@ -2645,15 +2634,15 @@ G.17. Hostname check from MUST to SHOULD?
     
    Status: resolved. Based on discussion at IETF 52 ldapbis WG meeting, 
    this text will stand as it is. The check is a MUST, but the behavior 
+   afterward is a SHOULD. This gives server implementations the room to 
+   maneuver as needed. 
+    
  
-Harrison                  Expires June 2004                 [Page 45] 
+Harrison                  Expires July 2004                 [Page 45] 
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
-   afterward is a SHOULD. This gives server implementations the room to 
-   maneuver as needed. 
-    
-G.18. Must SASL DN exist in the directory?  
+H.18. Must SASL DN exist in the directory?  
     
    If the 'dn:' form of sasl creds is used, is it the intention of the 
    draft(ers) that this DN must exist in the directory and the client 
@@ -2678,7 +2667,7 @@ G.18. Must SASL DN exist in the directory?
    policy driven [SASL] section 4.2, and (3) keeping this paragraph is 
    not required for interoperability. 
     
-G.19. DN used in conjunction with SASL mechanism 
+H.19. DN used in conjunction with SASL mechanism 
     
    We need to specify whether the DN field in Bind operation can/cannot 
    be used when SASL mechanism is specified. (source: RL Bob) 
@@ -2691,7 +2680,7 @@ G.19. DN used in conjunction with SASL mechanism
    conflicts with this draft. The editor of [Protocol] has been 
    notified of the discrepancy, and they have been handled. 
     
-G.20. Bind states 
+H.20. Bind states 
     
    Differences between unauthenticated and anonymous. There are four 
    states you can get into. One is completely undefined (this is now 
@@ -2704,13 +2693,14 @@ G.20. Bind states
    called out in [AuthMeth]. State 3 is called out in [Protocol]; this 
    seems appropriate based on review of alternatives. 
  
+H.21. Misuse of unauthenticated access 
+
  
-Harrison                  Expires June 2004                 [Page 46] 
+Harrison                  Expires July 2004                 [Page 46] 
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
-G.21. Misuse of unauthenticated access 
    Add a security consideration that operational experience shows that 
    clients can misuse unauthenticated access (simple bind with name but 
    no password).  Servers SHOULD by default reject authentication 
@@ -2719,17 +2709,17 @@ G.21. Misuse of unauthenticated access
     
    Status: Resolved. Added to security considerations in -03. 
     
-G.22. Need to move Start TLS protocol information to [Protocol] 
+H.22. Need to move Start TLS protocol information to [Protocol] 
  
    Status: Resolved. Removed Sections 5.1, 5.2, and 5.4 for -04 and 
    they are [Protocol] -11. 
  
-G.23. Split Normative and Non-normative references into separate 
+H.23. Split Normative and Non-normative references into separate 
 sections. 
  
    Status: Resolved. Changes made in -04 
  
-G.24. What is the authentication state if a Bind operation is 
+H.24. What is the authentication state if a Bind operation is 
 abandoned? 
  
    Status: Resolved. 
@@ -2745,7 +2735,7 @@ abandoned?
    (6/28/03): The state table in section 6 of [AuthMeth] has been 
    updated to reflect this wording.  
  
-G.25. Difference between checking server hostname and server's 
+H.25. Difference between checking server hostname and server's 
 canonical DNS name in Server Identity Check? 
  
    Section 4.1.6: I now understand the intent of the check (prevent 
@@ -2763,13 +2753,13 @@ canonical DNS name in Server Identity Check?
    (11/21/02): RL Bob Morgan will provide wording that allows 
    derivations of the name that are provided securely. 
     
+   (6/28/03): posted to the WG list asking Bob or any other WG member 
+   who is knowledgeable about the issues involved to help me with 
  
-Harrison                  Expires June 2004                 [Page 47] 
+Harrison                  Expires July 2004                 [Page 47] 
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
-   (6/28/03): posted to the WG list asking Bob or any other WG member 
-   who is knowledgeable about the issues involved to help me with 
    wording or other information I can use to make this change and close 
    the work item. 
     
@@ -2782,7 +2772,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    (e.g., DNSSEC)." 
     
     
-G.26. Server Identity Check using servers located via SRV records 
+H.26. Server Identity Check using servers located via SRV records 
     
    Section 4.1.6: What should be done if the server was found using SRV 
    records based on the "locate" draft/RFC? (Source: Tim Hahn). 
@@ -2793,7 +2783,7 @@ G.26. Server Identity Check using servers located via SRV records
    This is the right location for this information, and the coverage 
    appears to be adequate. 
     
-G.27 Inconsistency in effect of TLS closure on LDAP association. 
+H.27 Inconsistency in effect of TLS closure on LDAP association. 
     
    Section 4.4.1 of authmeth -03 (section 4.1 of RFC2830) states that 
    TLS closure alert will leave the LDAP association intact. Contrast 
@@ -2820,15 +2810,15 @@ G.27 Inconsistency in effect of TLS closure on LDAP association.
    intact. The authentication state table in [AuthMeth] specifies the 
    effect on the LDAP association.  
  
-G.28 Ordering of external sources of authorization identities 
+H.28 Ordering of external sources of authorization identities 
     
+   Section 4.3.2 implies that external sources of authorization 
+   identities other than TLS are permitted. What is the behavior when 
  
-Harrison                  Expires June 2004                 [Page 48] 
+Harrison                  Expires July 2004                 [Page 48] 
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
-   Section 4.3.2 implies that external sources of authorization 
-   identities other than TLS are permitted. What is the behavior when 
    two external sources of authentication credentials are available 
    (e.g. TLS and IPsec are both present (is this possible?)) and a SASL 
    EXTERNAL Bind operation is performed? 
@@ -2837,7 +2827,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    states that the decision to allow or disallow the asserted identity 
    is based on an implementation defined policy. 
     
-G.29 Rewrite of Section 9, TLS Ciphersuites 
+H.29 Rewrite of Section 9, TLS Ciphersuites 
     
    This section contains anachronistic references and needs to be 
    updated/rewritten in a way that provides useful guidance for future 
@@ -2847,14 +2837,14 @@ G.29 Rewrite of Section 9, TLS Ciphersuites
    general issues and considerations involved in selecting TLS 
    ciphersuites. 
     
-G.30 Update to Appendix A, Example Deployment Scenarios 
+H.30 Update to Appendix A, Example Deployment Scenarios 
     
    This section needs to be updated to indicate which security 
    mechanisms and/or combinations of security mechanisms described 
    elsewhere in the document can provide the types of protections 
    suggested in this appendix. 
  
-G.31 Use of PLAIN SASL Mechanism 
+H.31 Use of PLAIN SASL Mechanism 
     
    At least one LDAP server implementer has found the SASL "PLAIN" 
    mechanism useful in authenticating to legacy systems that do not 
@@ -2877,16 +2867,17 @@ G.31 Use of PLAIN SASL Mechanism
    allow any SASL mechanism. 
     
     
-G.32 Clarification on use of SASL mechanisms 
+H.32 Clarification on use of SASL mechanisms 
     
    Section 3.3.1: BTW, what _are_ the "ANONYMOUS" and "PLAIN" SASL 
    mechanisms?  They are not defined in RFC2222.  If you refer to other 
+   SASL mechanisms than those in rfc2222, Maybe you should only list 
+
  
-Harrison                  Expires June 2004                 [Page 49] 
+Harrison                  Expires July 2004                 [Page 49] 
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
-   SASL mechanisms than those in rfc2222, Maybe you should only list 
    which mechanisms _are_used, instead of which ones are _not. (Source: 
    Hallvard Furuseth) 
     
@@ -2906,7 +2897,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
     
     
     
-G.33 Clarification on use of password protection based on AuthZID form 
+H.33 Clarification on use of password protection based on AuthZID form 
     
    Section 3.3.1: "If an authorization identity of a form different 
    from a DN is requested by the client, a mechanism that protects the 
@@ -2920,7 +2911,7 @@ G.33 Clarification on use of password protection based on AuthZID form
    security consideration that covers this issue. 
     
     
-G.34 Clarification on use of matching rules in Server Identity Check 
+H.34 Clarification on use of matching rules in Server Identity Check 
     
    The text in section 4.1.6 isn't explicit on whether all rules apply 
    to both CN and dNSName values.  The text should be clear as to which 
@@ -2928,7 +2919,7 @@ G.34 Clarification on use of matching rules in Server Identity Check
    rules. (Source: Kurt Zeilenga) 
     
     
-G.35 Requested Additions to Security Considerations 
+H.35 Requested Additions to Security Considerations 
     
    Requested to mention hostile servers which the user might have been 
    fooled to into contacting. Which mechanisms that are standardized by 
@@ -2940,8 +2931,9 @@ G.35 Requested Additions to Security Considerations
     
    Requested list of methods that need/don't need the server to know 
    the user's plaintext password. (I say 'know' instead of 'store' 
+
  
-Harrison                  Expires June 2004                 [Page 50] 
+Harrison                  Expires July 2004                 [Page 50] 
 \f
 Internet-Draft       LDAP Authentication Methods      5 December 2003 
  
@@ -2950,7 +2942,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
     
    (Source: Hallvard Furuseth) 
     
-G.36 Add reference to definition of DIGEST-MD5 
+H.36 Add reference to definition of DIGEST-MD5 
     
    Need a reference to the definition of DIGEST-MD5 SASL mechanism in 
    section 7.2 (Source: Hallvard Furuseth) 
@@ -2958,7 +2950,7 @@ G.36 Add reference to definition of DIGEST-MD5
    Status: Resolved. A reference to to the DIGEST-MD5 SASL mechanism, 
    [DigestAuth], is included in the -07 revision. 
     
-G.37 Clarification on procedure for certificate-based authentication 
+H.37 Clarification on procedure for certificate-based authentication 
  
     
    8.1. Certificate-based authentication with TLS states: "Following 
@@ -2967,13 +2959,21 @@ G.37 Clarification on procedure for certificate-based authentication
    immediately following, or just some time later? Should the wording, 
    "the client will send..." actually read, "the client MUST send..."? 
     
-G.38 Effect of Start TLS on authentication state 
+   Status: Resolved. In -10 this text has been absorbed into the SASL 
+   EXTERNAL mechanism section.   
+    
+H.38 Effect of Start TLS on authentication state 
     
    Should the server drop all knowledge of connection, i.e. return to 
    anonymous state, if it gets a Start TLS request on a connection that 
    has successfully bound using the simple method? 
     
-G.39 Be sure that there is a consideration in [SCHEMA] that discusses 
+   Status: Resolved. In -09 the effect on an LDAP association by a 
+   Start TLS operation is made a matter of local policy. This is based 
+   on editorÆs perception of WG consensus gaged by conversations at 
+   IETF 58 and subsequent discussion on the WG  mail list. 
+    
+H.39 Be sure that there is a consideration in [SCHEMA] that discusses 
 multiple password values in userPassword 
  
    Allowing multiple values obviously does raise a number of security 
@@ -2985,12 +2985,17 @@ multiple password values in userPassword
    implementations should be encouraged to provide administrative 
    controls which, if enabled, restrict userPassword to one value. 
     
-G.40. Clarify need to verify mapping between authentication identity 
+H.40. Clarify need to verify mapping between authentication identity 
 and resulting authorization identity on implicit assertion of AuthZID. 
  
    4.2.2.3. Error Conditions 
       
    "For either form of assertion, the server MUST verify that the 
+Harrison                  Expires July 2004                 [Page 51] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
    client's authentication identity as supplied in its TLS credentials 
    is permitted to be mapped to the asserted authorization identity." 
     
@@ -2999,11 +3004,6 @@ and resulting authorization identity on implicit assertion of AuthZID.
    IMHO, the mapping can be done as two steps: 
    a). deriving LDAP authentication identity from TLS credentials; If t 
    this steps fails, EXTERNAL mechanism returns failure. 
-Harrison                  Expires June 2004                 [Page 51] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
    b). verify that the authorization identity is allowed for the 
    derived authentication identity. This is always "noop" for the 
    implicit case. 
@@ -3017,7 +3017,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    This text has been moved to apply only to the explicit assertion 
    case. 
     
-G.41. Section 7.2 contains unnecessary and misleading detail. 
+H.41. Section 7.2 contains unnecessary and misleading detail. 
     
    " I am not sure why this section is required in the document. 
    DIGEST-MD5 is defined in a separate document and there should be 
@@ -3037,7 +3037,7 @@ G.41. Section 7.2 contains unnecessary and misleading detail.
    rfc2831bis. I then dramatically reduced the material in section 7.2 
    to a bare minimum and let the SASL profile stand on its own.   
  
-G.42. Does change for G.41 cause interoperability issue? 
+H.42. Does change for H.41 cause interoperability issue? 
     
    There is one issue with the way the authmeth draft is currently 
    written that changes the SASL DIGEST-MD5 behavior on the way the 
@@ -3049,20 +3049,20 @@ G.42. Does change for G.41 cause interoperability issue?
     
    Status: Resolved 
     
+
+Harrison                  Expires July 2004                 [Page 52] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
    (10/08/03) This item was discussed on the WG list between 5/2/03 and 
    5/9/03. Consensus apppears to support the notion that RFC 2829 was 
    in error and that the semantics of RFC 2831 are correct and should 
    be reflected in authmeth. This is already the case as of the -07 
    draft. 
  
-G.43. DIGEST-MD5 Realms recommendations for LDAP 
+H.43. DIGEST-MD5 Realms recommendations for LDAP 
     
-
-Harrison                  Expires June 2004                 [Page 52] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
    From http://www.ietf.org/internet-drafts/draft-ietf-sasl-rfc2222bis-
    02.txt: A protocol profile SHOULD provide a guidance how realms are 
    to be constructed and used in the protocol and MAY further restrict 
@@ -3108,7 +3108,12 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    submissions to provide guidance on the use of realm and realm values 
    in LDAP. 
     
-G.44. Use of DNs in usernames and realms in DIGEST-MD5 
+H.44. Use of DNs in usernames and realms in DIGEST-MD5 
+Harrison                  Expires July 2004                 [Page 53] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
     
    In reading the discussion on the mailing list, I reach the following 
    conclusions: 
@@ -3117,11 +3122,6 @@ G.44. Use of DNs in usernames and realms in DIGEST-MD5
    these strings allows strings that look like DNs in form, however, 
    DIGEST-MD5 treats them a simple strings for comparision purposes. 
    For example, the DNs cn=roger, o=US and cn=roger,o=us are equivalent 
-Harrison                  Expires June 2004                 [Page 53] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
    when being compared semantically as DNs, however, these would be 
    considered two different username values in DIGEST-MD5 because 
    simple octet-wise semantics (rather than DN semantics) are used to 
@@ -3132,7 +3132,7 @@ Internet-Draft       LDAP Authentication Methods      5 December 2003
    In -07 revision I added notes to implementors expressing this issue 
    in section 7.2.  
     
-G.45: Open Issue: Is Simple+TLS mandatory to implement? 
+H.45: Open Issue: Is Simple+TLS mandatory to implement? 
     
    Going forward, it would be much better to clarify that simple 
    +TLS is to be used for DN/password credentials and DIGEST-MD5 
@@ -3168,6 +3168,11 @@ Intellectual Property Rights
    IETF's procedures with respect to rights in standards-track and 
    standards-related documentation can be found in BCP-11.  Copies of 
    claims of rights made available for publication and any assurances 
+Harrison                  Expires July 2004                 [Page 54] 
+\f
+Internet-Draft       LDAP Authentication Methods      5 December 2003 
    of licenses to be made available, or the result of an attempt made 
    to obtain a general license or permission for the use of such 
    proprietary rights by implementors or users of this specification 
@@ -3176,11 +3181,6 @@ Intellectual Property Rights
    The IETF invites any interested party to bring to its attention any 
    copyrights, patents or patent applications, or other proprietary 
    rights which may cover technology that may be required to practice 
-Harrison                  Expires June 2004                 [Page 54] 
-\f
-Internet-Draft       LDAP Authentication Methods      5 December 2003 
    this standard.  Please address the information to the IETF Executive 
    Director. 
  
@@ -3218,14 +3218,6 @@ Full Copyright
 
 
 
-
-
-
-
-
-
-
-
 
 
 
@@ -3236,6 +3228,6 @@ Full Copyright
 
 
  
-Harrison                  Expires June 2004                 [Page 55] 
+Harrison                  Expires July 2004                 [Page 55] 
 \f
 
index da95fd3f3f0b88fffbb7f0006a019bb097f2bb63..49b4a0b8d8fcb9b0e94b7aadbfe6d765746a2676 100644 (file)
@@ -6,13 +6,13 @@
 
 INTERNET-DRAFT                           Editor: Kurt D. Zeilenga
 Intended Category: Standard Track                OpenLDAP Foundation
-Expires in six months                            27 October 2003
+Expires in six months                            15 February 2004
 Obsoletes: 2253
 
 
 
             LDAP: String Representation of Distinguished Names
-                      <draft-ietf-ldapbis-dn-12.txt>
+                      <draft-ietf-ldapbis-dn-13.txt>
 
 
 
@@ -42,7 +42,7 @@ Status of Memo
   Internet-Draft Shadow Directories can be accessed at
   <http://www.ietf.org/shadow.html>.
 
-  Copyright (C) The Internet Society (2003).  All Rights Reserved.
+  Copyright (C) The Internet Society (2004).  All Rights Reserved.
 
   Please see the Full Copyright section near the end of this document
   for more information.
@@ -57,7 +57,7 @@ Status of Memo
 
 Zeilenga                LDAP: Distinguished Names               [Page 1]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-dn-13.txt       15 Febrary 2004
 
 
 Abstract
@@ -70,13 +70,6 @@ Abstract
   names, while being able to represent any distinguished name.
 
 
-Conventions
-
-  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 BCP 14 [RFC2119].
-
-
 1.  Background and Intended Usage
 
   In X.500-based directory systems [X.500], including those accessed
@@ -109,25 +102,39 @@ Conventions
   from its ASN.1 structured representation to a string, all algorithms
   MUST produce strings which adhere to the requirements of Section 3.
 
+  This document does not define a canonical string representation for
+  DNs.  Comparison of DNs for equality is to be performed in accordance
+  with the distinguishedNameMatch matching rule [Syntaxes].
+
+  This document is an integral part of the LDAP Technical Specification
+  [Roadmap].  This document obsoletes RFC 2253.  Changes since RFC 2253
+
 
 
 Zeilenga                LDAP: Distinguished Names               [Page 2]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-dn-13.txt       15 Febrary 2004
 
 
-  This document does not define a canonical string representation for
-  DNs.  Comparison of DNs for equality is to be performed in accordance
-  with the distinguishedNameMatch matching rule [Syntaxes].
+  are summarized in Appendix B.
 
-  This document is an integral part of the LDAP Technical Specification
-  [Roadmap].
+  This specification assumes familiarity with X.500 [X.500] and the
+  concept of Distinguished Name [X.501][Models].
 
-  This document obsoletes RFC 2253.  Changes since RFC 2253 are
-  summarized in Appendix B.
 
-  This specification assumes familiarity with X.500 [X.500], and the
-  concept of Distinguished Name [X.501][Models].
+1.1. Conventions
+
+  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 BCP 14 [RFC2119].
+
+  Character names in this document use the notation for code points and
+  names from the Unicode Standard [Unicode].  For example, the letter
+  "a" may be represented as either <U+0061> or <LATIN SMALL LETTER A>.
+
+  Note: a glossary of terms used in Unicode can be found in [Glossary].
+  Information on the Unicode character encoding model can be found in
+  [CharModel].
 
 
 2.  Converting DistinguishedName from ASN.1 to a String
@@ -148,15 +155,23 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
 
   This section defines the RECOMMENDED algorithm for converting a
   distinguished name from an ASN.1 structured representation to an UTF-8
-  [UTF-8] encoded Universal Character Set (UCS) [ISO10646] character
-  string representation.  Other documents may describe other algorithms
-  for converting a distinguished name to a string, but only strings
-  which conform to the grammar defined in Section 3 MUST be produced by
-  LDAP implementations.
+  [RFC3629] encoded Unicode [Unicode] character string representation.
+  Other documents may describe other algorithms for converting a
+  distinguished name to a string, but only strings which conform to the
+  grammar defined in Section 3 SHALL be produced by LDAP
+  implementations.
 
 
 2.1. Converting the RDNSequence
 
+
+
+
+Zeilenga                LDAP: Distinguished Names               [Page 3]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-dn-13.txt       15 Febrary 2004
+
+
   If the RDNSequence is an empty sequence, the result is the empty or
   zero length string.
 
@@ -165,15 +180,8 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
   2.2), starting with the last element of the sequence and moving
   backwards toward the first.
 
-
-
-Zeilenga                LDAP: Distinguished Names               [Page 3]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
-
-
   The encodings of adjoining RelativeDistinguishedNames are separated by
-  a comma ("," U+002C) character.
+  a comma (',' U+002C) character.
 
 
 2.2.  Converting RelativeDistinguishedName
@@ -183,14 +191,14 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
   AttributeTypeAndValue (according to Section 2.3), in any order.
 
   Where there is a multi-valued RDN, the outputs from adjoining
-  AttributeTypeAndValues are separated by a plus sign ("+" U+002B)
+  AttributeTypeAndValues are separated by a plus sign ('+' U+002B)
   character.
 
 
 2.3.  Converting AttributeTypeAndValue
 
   The AttributeTypeAndValue is encoded as the string representation of
-  the AttributeType, followed by an equals ("=" U+003D) character,
+  the AttributeType, followed by an equals ('=' U+003D) character,
   followed by the string representation of the AttributeValue.  The
   encoding of the AttributeValue is given in Section 2.4.
 
@@ -210,37 +218,38 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
 2.4.  Converting an AttributeValue from ASN.1 to a String
 
   If the AttributeType is of the dotted-decimal form, the AttributeValue
-  is represented by an number sign ("#" U+0023) character followed by
+  is represented by an number sign ('#' U+0023) character followed by
   the hexadecimal encoding of each of the octets of the BER encoding of
-  the X.500 AttributeValue.  This form is also used when the syntax of
-  the AttributeValue does not have a native string encoding defined for
-  it or the native string encoding is not restricted to UTF-8 encoded
-  UCS (or a subset of UCS) characters.  This form may also be used in
-  other cases, such as when a reversible string representation is
-  desired (see Section 5.2).
-
-  Otherwise, if the AttributeValue is of a syntax which has a native
 
 
 
 Zeilenga                LDAP: Distinguished Names               [Page 4]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
-
+INTERNET-DRAFT        draft-ietf-ldapbis-dn-13.txt       15 Febrary 2004
 
-  string encoding, the value is converted first to a UTF-8 encoded UCS
-  string according to its syntax specification (see for example Section
-  6 of [Syntaxes]).  If that UTF-8 encoded UCS string does not have any
-  of the following characters which need escaping, then that string can
-  be used as the string representation of the value.
 
-      - a space (" " U+0020) or number sign ("#" U+0023) occurring at
+  the X.500 AttributeValue.  This form is also used when the syntax of
+  the AttributeValue does not have a LDAP-specific [Syntaxes, Section
+  3.1] string encoding defined for it or the LDAP-specific string
+  encoding is not restricted to UTF-8 encoded Unicode characters.  This
+  form may also be used in other cases, such as when a reversible string
+  representation is desired (see Section 5.2).
+
+  Otherwise, if the AttributeValue is of a syntax which has a
+  LDAP-specific string encoding, the value is converted first to a UTF-8
+  encoded Unicode string according to its syntax specification (see
+  [Syntaxes, Section 3.3] for examples).  If that UTF-8 encoded Unicode
+  string does not have any of the following characters which need
+  escaping, then that string can be used as the string representation of
+  the value.
+
+      - a space (' ' U+0020) or number sign ('#' U+0023) occurring at
         the beginning of the string;
 
-      - a space (" " U+0020) character occurring at the end of the
+      - a space (' ' U+0020) character occurring at the end of the
         string;
 
-      - one of the characters """, "+", ",", ";", "<", ">",  or "\"
+      - one of the characters '"', '+', ',', ';', '<', '>',  or '\'
         (U+0022, U+002B, U+002C, U+003B, U+003C, U+003E, or U+005C
         respectively);
 
@@ -253,11 +262,11 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
   character.  Alternatively, if and only if the character to be escaped
   is one of
 
-      " ", """, "#", "+", ",", ";", "<", "=", ">", or "\"
+      ' ', '"', '#', '+', ',', ';', '<', '=', '>', or '\'
       (U+0020, U+0022, U+0023, U+002B, U+002C, U+003B,
        U+003C, U+003D, U+003E, U+005C respectively)
 
-  it can be prefixed by a backslash ("\" U+0005C).
+  it can be prefixed by a backslash ('\' U+0005C).
 
   Examples of the escaping mechanism are shown in Section 4.
 
@@ -265,34 +274,31 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
 3. Parsing a String back to a Distinguished Name
 
   The string representation of Distinguished Names is restricted to
-  UTF-8 [UTF-8] encoded characters from the Universal Character Set
-  (UCS) [ISO10646].  The structure of this string representation is
-  specified using the following Augmented BNF [RFC2234] grammar:
-
-      distinguishedName = [ relativeDistinguishedName
-          *( COMMA relativeDistinguishedName ) ]
-
-      relativeDistinguishedName = attributeTypeAndValue
-          *( PLUS attributeTypeAndValue )
-
-      attributeTypeAndValue = attributeType EQUALS attributeValue
+  UTF-8 [RFC3629] encoded Unicode [Unicode] characters.  The structure
+  of this string representation is specified using the following
 
 
 
 Zeilenga                LDAP: Distinguished Names               [Page 5]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-dn-13.txt       15 Febrary 2004
 
 
-      attributeType = descr / numericoid
+  Augmented BNF [RFC2234] grammar:
 
+      distinguishedName = [ relativeDistinguishedName
+          *( COMMA relativeDistinguishedName ) ]
+      relativeDistinguishedName = attributeTypeAndValue
+          *( PLUS attributeTypeAndValue )
+      attributeTypeAndValue = attributeType EQUALS attributeValue
+      attributeType = descr / numericoid
       attributeValue = string / hexstring
 
-      ; The UTF-8 string shall not contain NULL, ESC, or
-      ; one of escaped, shall not start with SHARP or SPACE,
-      ; and shall must not end with SPACE.
+      ; The following characters are to be escaped when they appear
+      ; in the value to be encoded: ESC, one of <escaped>, leading
+      ; SHARP or SPACE, trailing SPACE, and NULL.
       string     = [ (leadchar / pair)
-                     [ *( stringchar / pair ) ( trailchar / pair ) ] ]
+                   [ *( stringchar / pair ) ( trailchar / pair ) ] ]
 
       leadchar   = LUTF1 / UTFMB
       LUTF1      = %x01-1F / %x21 / %x24-2A / %x2D-3A /
@@ -307,13 +313,9 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
                    %x3D / %x3F-5B / %x5D-7F
 
       pair       = ESC ( ESC / special / hexpair )
-
       special    = escaped / SPACE / SHARP / EQUALS
-
       escaped    = DQUOTE / PLUS / COMMA / SEMI / LANGLE / RANGLE
-
       hexstring  = SHARP 1*hexpair
-
       hexpair    = HEX HEX
 
   where the productions <descr>, <numericoid>, <COMMA>, <DQUOTE>,
@@ -330,15 +332,15 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
   appearing in the <string> as follows:
       replace <ESC><ESC> with <ESC>;
       replace <ESC><special> with <special>;
-      replace <ESC><hexpair> with the octet indicated by the <hexpair>.
-
 
 
 
 Zeilenga                LDAP: Distinguished Names               [Page 6]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-dn-13.txt       15 Febrary 2004
+
 
+      replace <ESC><hexpair> with the octet indicated by the <hexpair>.
 
   If in <hexstring> form, a BER representation can be obtained from
   converting each <hexpair> of the <hexstring> to the octet indicated by
@@ -366,56 +368,53 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
       DC      domainComponent (0.9.2342.19200300.100.1.25)
       UID     userId (0.9.2342.19200300.100.1.1)
 
-      Implementations MAY recognize other DN string representations
-      (such as that described in RFC 1779).  However, as there is no
-      requirement that alternative DN string representations to be
-      recognized (and, if so, how), implementations SHOULD only generate
-      DN strings in accordance with Section 2 of this document.
+  Implementations MAY recognize other DN string representations (such as
+  that described in RFC 1779).  However, as there is no requirement that
+  alternative DN string representations to be recognized (and, if so,
+  how), implementations SHOULD only generate DN strings in accordance
+  with Section 2 of this document.
 
 
 4.  Examples
 
-      This notation is designed to be convenient for common forms of
-      name.  This section gives a few examples of distinguished names
-      written using this notation.  First is a name containing three
-      relative distinguished names (RDNs):
-
-          UID=jsmith,DC=example,DC=net
+  This notation is designed to be convenient for common forms of name.
+  This section gives a few examples of distinguished names written using
+  this notation.  First is a name containing three relative
+  distinguished names (RDNs):
 
-      Here is an example name containing three RDNs, in which the first
-      RDN is multi-valued:
+      UID=jsmith,DC=example,DC=net
 
-          OU=Sales+CN=J. Smith,DC=example,DC=net
+  Here is an example name containing three RDNs, in which the first RDN
+  is multi-valued:
 
-      This example shows the method of escaping of a comma in a common
+      OU=Sales+CN=J. Smith,DC=example,DC=net
 
 
 
 Zeilenga                LDAP: Distinguished Names               [Page 7]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-dn-13.txt       15 Febrary 2004
 
 
-      name:
+  This example shows the method of escaping of a comma in a common name:
 
-          CN=John Smith\, III,DC=example,DC=net
+      CN=John Smith\, III,DC=example,DC=net
 
-      An example name in which a value contains a carriage return
-      character:
+  An example name in which a value contains a carriage return character:
 
-          CN=Before\0dAfter,DC=example,DC=net
+      CN=Before\0dAfter,DC=example,DC=net
 
-      An example name in which an RDN was of an unrecognized type.  The
-      value is the BER encoding of an OCTET STRING containing two octets
-      0x48 and 0x69.
+  An example name in which an RDN was of an unrecognized type.  The
+  value is the BER encoding of an OCTET STRING containing two octets
+  0x48 and 0x69.
 
-          1.3.6.1.4.1.1466.0=#04024869,DC=example,DC=com
+      1.3.6.1.4.1.1466.0=#04024869,DC=example,DC=com
 
-      Finally, an example of an RDN commonName value consisting of 5
-      letters:
+  Finally, an example of an RDN commonName value consisting of 5
+  letters:
 
-      Unicode Letter Description       UCS code   UTF-8   Escaped
-      -------------------------------  --------   ------  --------
+      Unicode Character                Code       UTF-8   Escaped
+      -------------------------------  ------     ------  --------
       LATIN CAPITAL LETTER L           U+004C     0x4C    L
       LATIN SMALL LETTER U             U+0075     0x75    u
       LATIN SMALL LETTER C WITH CARON  U+010D     0xC48D  \C4\8D
@@ -444,15 +443,15 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
 
     - the common name of the object (i.e. a person's full name)
     - an email or TCP/IP address
+    - its physical location (country, locality, city, street address)
 
 
 
 Zeilenga                LDAP: Distinguished Names               [Page 8]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-dn-13.txt       15 Febrary 2004
 
 
-    - its physical location (country, locality, city, street address)
     - organizational attributes (such as department name or affiliation)
 
   Most countries have privacy laws regarding the publication of
@@ -470,9 +469,9 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
   For example, a distinguished name consisting of one RDN with one AVA,
   in which the type is commonName and the value is of the TeletexString
   choice with the letters 'Sam' would be represented in LDAP as the
-  string CN=Sam.  Another distinguished name in which the value is still
-  'Sam' but of the PrintableString choice would have the same
-  representation CN=Sam.
+  string <CN=Sam>.  Another distinguished name in which the value is
+  still 'Sam' but of the PrintableString choice would have the same
+  representation <CN=Sam>.
 
   Applications which require the reconstruction of the DER form of the
   value SHOULD NOT use the string representation of attribute syntaxes
@@ -500,15 +499,14 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
 
   [X.501]       International Telecommunication Union -
                 Telecommunication Standardization Sector, "The Directory
+                -- Models," X.501(1993) (also ISO/IEC 9594-2:1994).
 
 
 
 Zeilenga                LDAP: Distinguished Names               [Page 9]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
-
+INTERNET-DRAFT        draft-ietf-ldapbis-dn-13.txt       15 Febrary 2004
 
-                -- Models," X.501(1993) (also ISO/IEC 9594-2:1994).
 
   [X.680]       International Telecommunication Union -
                 Telecommunication Standardization Sector, "Abstract
@@ -521,9 +519,16 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
   [RFC2234]     Crocker, D. and P. Overell, "Augmented BNF for Syntax
                 Specifications: ABNF", RFC 2234, November 1997.
 
-  [UTF-8]       Yergeau, F., "UTF-8, a transformation format of ISO
-                10646", draft-yergeau-rfc2279bis-xx.txt, a work in
-                progress.
+  [RFC3329]     Yergeau, F., "UTF-8, a transformation format of ISO
+                10646", RFC 3329 (also STD 64), November 2003.
+
+  [Unicode]     The Unicode Consortium, "The Unicode Standard, Version
+                3.2.0" is defined by "The Unicode Standard, Version 3.0"
+                (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5),
+                as amended by the "Unicode Standard Annex #27: Unicode
+                3.1" (http://www.unicode.org/reports/tr27/) and by the
+                "Unicode Standard Annex #28: Unicode 3.2"
+                (http://www.unicode.org/reports/tr28/).
 
   [Models]      Zeilenga, K. (editor), "LDAP: Directory Information
                 Models", draft-ietf-ldapbis-models-xx.txt, a work in
@@ -543,11 +548,6 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
                 draft-ietf-ldapbis-user-schema-xx.txt, a work in
                 progress.
 
-  [ISO10646]    International Organization for Standardization,
-                "Universal Multiple-Octet Coded Character Set (UCS) -
-                Architecture and Basic Multilingual Plane", ISO/IEC
-                10646-1 : 1993.
-
   [REGISTRY]    IANA, Object Identifier Descriptors Registry,
                 <http://www.iana.org/...>.
 
@@ -561,7 +561,7 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
 
 Zeilenga                LDAP: Distinguished Names              [Page 10]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-dn-13.txt       15 Febrary 2004
 
 
   [X.500]       International Telecommunication Union -
@@ -582,6 +582,14 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
   [BCP64bis]    Zeilenga, K., "IANA Considerations for LDAP", draft-
                 ietf-ldapbis-bcp64-xx.txt, a work in progress.
 
+  [CharModel]   Whistler, K. and M. Davis, "Unicode Technical Report
+                #17, Character Encoding Model", UTR17,
+                <http://www.unicode.org/unicode/reports/tr17/>, August
+                2000.
+
+  [Glossary]    The Unicode Consortium, "Unicode Glossary",
+                <http://www.unicode.org/glossary/>.
+
 
 
 Appendix A.   Presentation Issues
@@ -601,8 +609,16 @@ Appendix A.   Presentation Issues
   to users.  This section is not comprehensive, it does not discuss all
   presentation issues which implementors may face.
 
-  Not all user interfaces are capable of displaying the full set of UCS
-  characters.  Some UCS characters are not displayable.
+  Not all user interfaces are capable of displaying the full set of
+  Unicode characters.  Some Unicode characters are not displayable.
+
+
+
+
+Zeilenga                LDAP: Distinguished Names              [Page 11]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-dn-13.txt       15 Febrary 2004
+
 
   It is recommended that human interfaces use the optional hex pair
   escaping mechanism (Section 2.3) to produce a string representation
@@ -612,24 +628,16 @@ Appendix A.   Presentation Issues
   demonstrated in the final example of Section 4).
 
   When a DN string is displayed in free form text, it is often necessary
-
-
-
-Zeilenga                LDAP: Distinguished Names              [Page 11]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
-
-
   to distinguish the DN string from surrounding text.  While this is
   often done with white space (as demonstrated in Section 4), it is
   noted that DN strings may end with white space.  Careful readers of
-  Section 3 will note that characters "<" (U+003C) and ">" (U+003E) may
+  Section 3 will note that characters '<' (U+003C) and '>' (U+003E) may
   only appear in the DN string if escaped.  These characters are
   intended to be used in free form text to distinguish a DN string from
   surrounding text.  For example, <CN=Sam\ > distinguished the string
   representation of the DN comprised of one RDN consisting of the AVA:
-  the commonName (CN) value "Sam " from the surrounding text.  It should
-  be noted to the user that the wrapping "<" and ">" characters are not
+  the commonName (CN) value 'Sam ' from the surrounding text.  It should
+  be noted to the user that the wrapping '<' and '>' characters are not
   part of the DN string.
 
   DN strings can be quite long.  It is often desirable to line-wrap
@@ -660,6 +668,14 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
           objectClass: person
 
 
+
+
+
+Zeilenga                LDAP: Distinguished Names              [Page 12]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-dn-13.txt       15 Febrary 2004
+
+
 Appendix B. Changes made since RFC 2253
 
   This appendix is provided for informational purposes only, it is not a
@@ -667,15 +683,8 @@ Appendix B. Changes made since RFC 2253
 
   The following substantive changes were made to RFC 2253:
     - Removed IESG Note.  The IESG Note has been addressed.
+    - Replaced all references to ISO 10646-1 with [Unicode].
     - Clarified (in Section 1) that this document does not define a
-
-
-
-Zeilenga                LDAP: Distinguished Names              [Page 12]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
-
-
       canonical string representation.
     - Revised specification (in Section 2) to allow short names of any
       registered attribute type to appear in string representations of
@@ -691,8 +700,8 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
     - Updated Section 2.3 to indicate attribute type name strings are
       case insensitive.
     - Updated Section 2.4 to allow hex pair escaping of all characters
-      and clarified escaping for when multiple octet UTF-8 characters
-      are present.
+      and clarified escaping for when multiple octet UTF-8 echodings are
+      present.
     - Rewrote Section 3 to use ABNF as defined in RFC 2234.
     - Rewrote Section 3 ABNF to be consistent with 2.4.
     - Updated Section 3 to describe how to parse elements of the
@@ -715,6 +724,14 @@ Intellectual Property Rights
   might not be available; neither does it represent that it has made any
   effort to identify any such rights.  Information on the IETF's
   procedures with respect to rights in standards-track and
+
+
+
+Zeilenga                LDAP: Distinguished Names              [Page 13]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-dn-13.txt       15 Febrary 2004
+
+
   standards-related documentation can be found in BCP-11.  Copies of
   claims of rights made available for publication and any assurances of
   licenses to be made available, or the result of an attempt made to
@@ -724,14 +741,6 @@ Intellectual Property Rights
 
   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
-
-
-
-Zeilenga                LDAP: Distinguished Names              [Page 13]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
-
-
   rights which may cover technology that may be required to practice
   this standard.  Please address the information to the IETF Executive
   Director.
@@ -740,11 +749,11 @@ INTERNET-DRAFT        draft-ietf-ldapbis-dn-12.txt       27 October 2003
 
 Full Copyright
 
-  Copyright (C) The Internet Society (2003). All Rights Reserved.
+  Copyright (C) The Internet Society (2004). 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 implmentation may be prepared, copied, published and
+  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
@@ -765,15 +774,6 @@ Full Copyright
 
 
 
-
-
-
-
-
-
-
-
-
 
 
 
index 8ef1d3ed2a5c280f2e9a5aae3a20e442c5ee9e26..a82828c4d3a545fdb01a766da9fc0d352977530a 100644 (file)
@@ -1,18 +1,13 @@
 
-
-
-
-
-
 Network Working Group                                 M. Smith, Editor
-Request for Comments: DRAFT              Netscape Communications Corp.
+Request for Comments: DRAFT                        Pearl Crescent, LLC
 Obsoletes: RFC 2254                                           T. Howes
-Expires: 25 April 2004                                   Opsware, Inc.
-                                                       25 October 2003
+Expires: 13 August 2004                                  Opsware, Inc.
+                                                      13 February 2004
 
 
              LDAP: String Representation of Search Filters
-                   <draft-ietf-ldapbis-filter-05.txt>
+                   <draft-ietf-ldapbis-filter-06.txt>
 
 
 
@@ -41,7 +36,7 @@ Expires: 25 April 2004                                   Opsware, Inc.
    Revision (ldapbis) Working Group mailing list <ietf-
    ldapbis@openldap.org>.
 
-   Copyright (C) The Internet Society (2003).  All Rights Reserved.
+   Copyright (C) The Internet Society (2004).  All Rights Reserved.
 
 2.  Abstract
 
@@ -57,7 +52,7 @@ Expires: 25 April 2004                                   Opsware, Inc.
 
 Smith & Howes      Intended Category: Standards Track           [Page 1]
 \f
-INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
+INTERNET-DRAFT   LDAP: String Repres. of Search Filters 13 February 2004
 
 
 3.  Table of Contents
@@ -74,9 +69,9 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
 10.    Informative References.........................................8
 11.    Intellectual Property Rights...................................8
 12.    Acknowledgments................................................8
-13.    Authors' Address...............................................8
+13.    Authors' Addresses.............................................9
 14.    Full Copyright Statement.......................................9
-15.    Appendix A: Changes Since RFC 2254.............................9
+15.    Appendix A: Changes Since RFC 2254.............................10
 15.1.     Technical Changes...........................................10
 15.2.     Editorial Changes...........................................10
 16.    Appendix B: Changes Since Previous Document Revision...........11
@@ -113,12 +108,12 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
 
 Smith & Howes      Intended Category: Standards Track           [Page 2]
 \f
-INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
+INTERNET-DRAFT   LDAP: String Repres. of Search Filters 13 February 2004
 
 
         Filter ::= CHOICE {
-                and                [0] SET SIZE (1..MAX) OF Filter,
-                or                 [1] SET SIZE (1..MAX) OF Filter,
+                and                [0] SET SIZE (1..MAX) OF filter Filter,
+                or                 [1] SET SIZE (1..MAX) OF filter Filter,
                 not                [2] Filter,
                 equalityMatch      [3] AttributeValueAssertion,
                 substrings         [4] SubstringFilter,
@@ -130,9 +125,8 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
 
         SubstringFilter ::= SEQUENCE {
                 type    AttributeDescription,
-                -- at least one must be present,
                 -- initial and final can occur at most once
-                substrings    SEQUENCE OF CHOICE {
+                substrings    SEQUENCE SIZE (1..MAX) OF substring CHOICE {
                         initial        [0] AssertionValue,
                         any            [1] AssertionValue,
                         final          [2] AssertionValue } }
@@ -148,7 +142,7 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
                 dnAttributes    [4] BOOLEAN DEFAULT FALSE }
 
         AttributeDescription ::= LDAPString
-                                 -- Constrained to attributedescription
+                                 -- Constrained to <attributedescription>
                                  -- [Models]
 
         AttributeValue ::= OCTET STRING
@@ -158,32 +152,31 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
         AssertionValue ::= OCTET STRING
 
         LDAPString ::= OCTET STRING -- UTF-8 encoded,
-                                    -- ISO 10646 characters
+                                    -- [ISO10646] characters
 
-   where the LDAPString above is limited to the UTF-8 encoding [UTF-8]
-   of the ISO 10646 character set [ISO10646].  The AttributeDescription
-   is a string representation of the attribute description and is
-   defined in [Protocol].  The AttributeValue and AssertionValue OCTET
+   The AttributeDescription is a string representation of the attribute
+   description and is defined in [Protocol].  The AttributeValue and
+   AssertionValue OCTET STRING have the form defined in [Syntaxes].  The
+   Filter is encoded for transmission over a network using the Basic
+   Encoding Rules defined in [X.690], with simplifications described in
 
 
 
 Smith & Howes      Intended Category: Standards Track           [Page 3]
 \f
-INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
+INTERNET-DRAFT   LDAP: String Repres. of Search Filters 13 February 2004
 
 
-   STRING have the form defined in [Syntaxes].  The Filter is encoded
-   for transmission over a network using the Basic Encoding Rules
-   defined in [ASN.1], with simplifications described in [Protocol].
+   [Protocol].
 
 6.  String Search Filter Definition
 
    The string representation of an LDAP search filter is a string of
-   UTF-8 encoded ISO 10646-1 characters that is defined by the following
-   grammar, following the ABNF notation defined in [RFC2234].  The
-   productions used that are not defined here are defined in section 1.3
-   (Common ABNF Productions) of [Models] unless otherwise noted.  The
-   filter format uses a prefix notation.
+   UTF-8[RFC3629] encoded ISO 10646-1 characters that is defined by the
+   following grammar, following the ABNF notation defined in [RFC2234].
+   The productions used that are not defined here are defined in section
+   1.4 (Common ABNF Productions) of [Models] unless otherwise noted.
+   The filter format uses a prefix notation.
 
       filter         = LPAREN filtercomp RPAREN
       filtercomp     = and / or / not / item
@@ -220,16 +213,16 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
       UTF1SUBSET     = %x01-27 / %x2B-5B / %x5D-7F
                           ; UTF1SUBSET excludes 0x00 (NUL), LPAREN,
                           ; RPAREN, ASTERISK, and ESC.
+      EXCLAMATION    = %x21 ; exclamation mark ("!")
+      AMPERSAND      = %x26 ; ampersand (or AND symbol) ("&")
 
 
 
 Smith & Howes      Intended Category: Standards Track           [Page 4]
 \f
-INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
+INTERNET-DRAFT   LDAP: String Repres. of Search Filters 13 February 2004
 
 
-      EXCLAMATION    = %x21 ; exclamation mark ("!")
-      AMPERSAND      = %x26 ; ampersand (or AND symbol) ("&")
       ASTERISK       = %x2A ; asterisk ("*")
       COLON          = %x3A ; colon (":")
       VERTBAR        = %x7C ; vertical bar (or pipe) ("|")
@@ -264,9 +257,9 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
    As indicated by the valueencoding rule, implementations MUST escape
    all octets greater than 0x7F that are not part of a valid UTF-8
    encoding sequence when they generate a string representation of a
-   search filter.  Implementations SHOULD accept as input a string that
-   includes invalid UTF-8 octet sequences. This is necessary because RFC
-   2254 did not clearly define the term "string representation" (and in
+   search filter.  Implementations SHOULD accept as input strings that
+   are not valid UTF-8 strings. This is necessary because RFC 2254 did
+   not clearly define the term "string representation" (and in
    particular did not mention that the string representation of an LDAP
    search filter is a string of UTF-8 encoded ISO 10646-1 characters).
 
@@ -276,16 +269,16 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
    this notation.
 
         (cn=Babs Jensen)
+        (!(cn=Tim Howes))
+        (&(objectClass=Person)(|(sn=Jensen)(cn=Babs J*)))
 
 
 
 Smith & Howes      Intended Category: Standards Track           [Page 5]
 \f
-INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
+INTERNET-DRAFT   LDAP: String Repres. of Search Filters 13 February 2004
 
 
-        (!(cn=Tim Howes))
-        (&(objectClass=Person)(|(sn=Jensen)(cn=Babs J*)))
         (o=univ*of*mich*)
         (seeAlso=)
 
@@ -303,10 +296,11 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
    The second example demonstrates use of a MatchingRuleAssertion form
    without a matchingRule.
 
-   The third example illustrates the use of the ":dn" notation to
+   The third example illustrates the use of the ":oid" notation to
    indicate that matching rule "2.4.6.8.10" should be used when making
    comparisons, and that the attributes of an entry's distinguished name
-   should be considered part of the entry when evaluating the match.
+   should be considered part of the entry when evaluating the match
+   (indicated by the use of ":dn").
 
    The fourth example denotes an equality match, except that DN
    components should be considered part of the entry when doing the
@@ -332,15 +326,15 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
    The first example shows the use of the escaping mechanism to
    represent parenthesis characters. The second shows how to represent a
    "*" in an assertion value, preventing it from being interpreted as a
+   substring indicator. The third illustrates the escaping of the
 
 
 
 Smith & Howes      Intended Category: Standards Track           [Page 6]
 \f
-INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
+INTERNET-DRAFT   LDAP: String Repres. of Search Filters 13 February 2004
 
 
-   substring indicator. The third illustrates the escaping of the
    backslash character.
 
    The fourth example shows a filter searching for the four-byte value
@@ -366,44 +360,46 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
 
 9.  Normative References
 
-   [ASN.1] Specification of ASN.1 encoding rules: Basic, Canonical, and
-   Distinguished Encoding Rules, ITU-T Recommendation X.690, 1994.
+[AuthMeth]  Harrison, R. (editor), "LDAP: Authentication Methods and
+            Connection Level Security Mechanisms", draft-ietf-ldapbis-
+            authmeth-xx.txt, a work in progress.
 
-   [AuthMeth] Harrison, R. (editor), "LDAP: Authentication Methods and
-   Connection Level Security Mechanisms", draft-ietf-ldapbis-authmeth-
-   xx.txt, a work in progress.
+[ISO10646]  Universal Multiple-Octet Coded Character Set (UCS) -
+            Architecture and Basic Multilingual Plane, ISO/IEC 10646-1,
+            1993.
 
-   [ISO10646] Universal Multiple-Octet Coded Character Set (UCS) -
-   Architecture and Basic Multilingual Plane, ISO/IEC 10646-1, 1993.
+[Models]    Zeilenga, K. (editor), "LDAP: Directory Information Models",
+            draft-ietf-ldapbis-models-xx.txt, a work in progress.
 
-   [Models] Zeilenga, K. (editor), "LDAP: Directory Information Models",
-   draft-ietf-ldapbis-models-xx.txt, a work in progress.
+[Protocol]  draft-ietf-ldapbis-protocol-xx.txt, a work in progress.
 
-   [Protocol] Sermersheim, J. (editor), "LDAP: The Protocol", draft-
-   ietf-ldapbis-protocol-xx.txt, a work in progress.
+[RFC2119]   S. Bradner, "Key words for use in RFCs to Indicate
+            Requirement Levels", BCP 14 (also RFC 2119), March 1997.
 
-   [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate
-   Requirement Levels", BCP 14 (also RFC 2119), March 1997.
+[RFC2234]   Crocker, D., Overell, P., "Augmented BNF for Syntax
+            Specifications: ABNF", RFC 2234, November 1997.
+
+[RFC3629]   Yergeau, F., "UTF-8, a transformation format of ISO 10646",
+            RFC 3629, November 2003.
 
-   [RFC2234] Crocker, D., Overell, P., "Augmented BNF for Syntax
-   Specifications:  ABNF", RFC 2234, November 1997.
 
 
 
 
 Smith & Howes      Intended Category: Standards Track           [Page 7]
 \f
-INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
+INTERNET-DRAFT   LDAP: String Repres. of Search Filters 13 February 2004
 
 
-   [Roadmap] Zeilenga, K. (editor), "LDAP: Technical Specification Road
-   Map", draft-ietf-ldapbis-roadmap-xx.txt, a work in progress.
+[Roadmap]   Zeilenga, K. (editor), "LDAP: Technical Specification Road
+            Map", draft-ietf-ldapbis-roadmap-xx.txt, a work in progress.
 
-   [Syntaxes] Dally, K. (editor), "LDAP: Syntaxes", draft-ietf-ldapbis-
-   syntaxes-xx.txt, a work in progress.
+[Syntaxes]  Dally, K. (editor), "LDAP: Syntaxes", draft-ietf-ldapbis-
+            syntaxes-xx.txt, a work in progress.
 
-   [UTF-8] Yergeau, F., "UTF-8, a transformation format of ISO 10646",
-   draft-yergeau-rfc2279bis-xx.txt, a work in progress.
+[X.690]     Specification of ASN.1 encoding rules: Basic, Canonical, and
+            Distinguished Encoding Rules, ITU-T Recommendation X.690,
+            1994.
 
 10.  Informative References
 
@@ -441,23 +437,25 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
    acknowledged.
 
 
-13.  Authors' Address
 
-   Mark Smith, Editor
+
 
 
 
 Smith & Howes      Intended Category: Standards Track           [Page 8]
 \f
-INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
+INTERNET-DRAFT   LDAP: String Repres. of Search Filters 13 February 2004
 
 
-   Netscape Communications Corp.
-   360 W. Caribbean Drive
-   Sunnyvale, CA 94089
+13.  Authors' Addresses
+
+   Mark Smith, Editor
+   Pearl Crescent, LLC
+   447 Marlpool Dr.
+   Saline, MI 48176
    USA
-   +1 650 937-3477
-   MarkCSmithWork@aol.com
+   +1 734 944-2856
+   mcs@pearlcrescent.com
 
    Tim Howes
    Opsware, Inc.
@@ -469,7 +467,7 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
 
 14.  Full Copyright Statement
 
-   Copyright (C) The Internet Society (2003). All Rights Reserved.
+   Copyright (C) The Internet Society (2004). 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
@@ -496,18 +494,17 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
 
 
-15.  Appendix A: Changes Since RFC 2254
-
-
 
 
 
 
 Smith & Howes      Intended Category: Standards Track           [Page 9]
 \f
-INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
+INTERNET-DRAFT   LDAP: String Repres. of Search Filters 13 February 2004
 
 
+15.  Appendix A: Changes Since RFC 2254
+
 15.1.  Technical Changes
 
    The following technical changes were made to the contents of the
@@ -554,16 +551,16 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
 
    "Abstract" section: separated from introductory material.
 
-   "Introduction" section: new section; separated from the Abstract.
-   Updated second paragraph to indicate that RFC 2254 is replaced by
 
 
 
 Smith & Howes      Intended Category: Standards Track          [Page 10]
 \f
-INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
+INTERNET-DRAFT   LDAP: String Repres. of Search Filters 13 February 2004
 
 
+   "Introduction" section: new section; separated from the Abstract.
+   Updated second paragraph to indicate that RFC 2254 is replaced by
    this document (instead of RFC 1960). Added reference to the [Roadmap]
    document.
 
@@ -579,8 +576,9 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
 
    "Examples" section: added four additional examples: (seeAlso=),
    (cn:=Betty Rubble), (:1.2.3:=Wilma Flintstone), and
-   (1.3.6.1.4.1.1466.0=\04\02\48\69). Replaced one occurrence of "a
-   value" with "an assertion value".
+   (1.3.6.1.4.1.1466.0=\04\02\48\69).  Replaced one occurrence of "a
+   value" with "an assertion value".  Corrected the description of this
+   example: (sn:dn:2.4.6.8.10:=Barney Rubble).
 
    "Security Considerations" section: added references to [Protocol] and
    [AuthMeth].
@@ -604,54 +602,51 @@ INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
 16.  Appendix B: Changes Since Previous Document Revision
 
    This appendix lists all changes relative to the previously published
-   revision, draft-ietf-ldapbis-filter-04.txt.  Note that when
+   revision, draft-ietf-ldapbis-filter-05.txt.  Note that when
    appropriate these changes are also included in Appendix A, but are
    also included here for the benefit of the people who have already
-   reviewed draft-ietf-ldapbis-filter-04.txt.  This section will be
+   reviewed draft-ietf-ldapbis-filter-05.txt.  This section will be
    removed before this document is published as an RFC.
 
 
 
-
-
-
 Smith & Howes      Intended Category: Standards Track          [Page 11]
 \f
-INTERNET-DRAFT   LDAP: String Repres. of Search Filters  25 October 2003
+INTERNET-DRAFT   LDAP: String Repres. of Search Filters 13 February 2004
 
 
 16.1.  Technical Changes
 
-   "Examples" section: Removed the (:=Fred Flintstone) example which is
-   not allowed by the protocol.
+   None.
 
 
 16.2.  Editorial Changes
 
-   "String Search Filter Definition" section: Revised the last two
-   sentences in this section to improve clarity (the updated text now
-   begins with the text "Implementations SHOULD accept as input a string
-   that includes...."
-
-   Replaced all occurrences of "asterix" with the correctly spelled
-   "asterisk."
-
-   "Normative References" section: changed UTF-8 reference to point to
-   the UTF-8 Internet Draft.
-
-   "Intellectual Property Rights" section: added.
-
-   Author's Addresses section: New email address for Mark Smith.
+   "LDAP Search Filter Definition" section: changed the LDAPv3 search
+   filter ABNF so it matches that used in the latest revision of
+   [Protocol] and removed the following redundant descriptive text:
+   "where the LDAPString above is limited to the UTF-8 encoding [UTF-8]
+   of the ISO 10646 character set [ISO10646]."
 
-   "Full Copyright Statement" section: updated text to match latest IETF
-   guidelines.
+   "String Search Filter Definition" section: Corrected section
+   reference to [Models] and replaced this sentence: "Implementations
+   SHOULD accept as input a string that includes invalid UTF-8 octet
+   sequences." with the following: "Implementations SHOULD accept as
+   input strings that are not valid UTF-8 strings."
 
+   "Examples" section: Corrected the description of this example:
+   (sn:dn:2.4.6.8.10:=Barney Rubble).
 
-This Internet Draft expires on 25 April 2004.
+   "Normative References" section: changed UTF-8 reference to point to
+   RFC 3629, replaced [ASN.1] with [X.690] for consistency, and indented
+   the reference descriptions to enhance readability.
 
+   Authors' Addresses section: New contact information for Mark Smith.
 
+   Updated the copyright year to 2004.
 
 
+This Internet Draft expires on 13 August 2004.
 
 
 
@@ -673,3 +668,4 @@ This Internet Draft expires on 25 April 2004.
 
 Smith & Howes      Intended Category: Standards Track          [Page 12]
 \f
+
index 90b60485344764c608e082be5e65232ebc975854..a6fb726a061044df2732992778c882516fc94fe5 100644 (file)
@@ -6,13 +6,13 @@
 
 INTERNET-DRAFT                              Editor: Kurt D. Zeilenga
 Intended Category: Standard Track                OpenLDAP Foundation
-Expires in six months                                27 October 2003
+Expires in six months                               15 February 2004
 Obsoletes: RFC 2251, RFC 2252, RFC 2256
 
 
 
                     LDAP: Directory Information Models
-                    <draft-ietf-ldapbis-models-09.txt>
+                    <draft-ietf-ldapbis-models-10.txt>
 
 
 
@@ -25,7 +25,7 @@ Status of this Memo
   Distribution of this memo is unlimited.  Technical discussion of this
   document will take place on the IETF LDAP Revision Working Group
   mailing list <ietf-ldapbis@openldap.org>.  Please send editorial
-  comments directly to the author <Kurt@OpenLDAP.org>.
+  comments directly to the editor <Kurt@OpenLDAP.org>.
 
   Internet-Drafts are working documents of the Internet Engineering Task
   Force (IETF), its areas, and its working groups.  Note that other
@@ -40,7 +40,7 @@ Status of this Memo
   Internet-Draft Shadow Directories can be accessed at
   <http://www.ietf.org/shadow.html>.
 
-  Copyright (C) The Internet Society (2003).  All Rights Reserved.
+  Copyright (C) The Internet Society (2004).  All Rights Reserved.
 
   Please see the Full Copyright section near the end of this document
   for more information.
@@ -57,7 +57,7 @@ Abstract
 
 Zeilenga                       LDAP Models                      [Page 1]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
 
 Table of Contents
@@ -80,43 +80,40 @@ Table of Contents
   3.       Directory Administrative and Operational Information  17
   3.1.     Subtrees
   3.2.     Subentries
-  3.3.     The 'objectClass' attribute                           18
-  3.4.     Operational attributes
+  3.3.     The 'objectClass' attribute
+  3.4.     Operational attributes                                18
   4.       Directory Schema                                      21
   4.1.     Schema Definitions                                    22
   4.2.     Subschema Subentries                                  31
-  4.3.     'extensibleObject'                                    34
-  4.4.     Subschema Discovery                                   35
+  4.3.     'extensibleObject'                                    35
+  4.4.     Subschema Discovery
   5.       DSA (Server) Informational Model
   5.1.     Server-specific Data Requirements                     36
   6.       Other Considerations                                  39
   6.1.     Preservation of User Information
-  6.2.     Short Names
-  6.3.     Cache and Shadowing                                   40
+  6.2.     Short Names                                           40
+  6.3.     Cache and Shadowing
   7.       Implementation Guidelines
   7.1.     Server Guidelines
   7.2.     Client Guidelines                                     41
   8.       Security Considerations
-  9.       IANA Considerations
-  10.      Acknowledgments                                       42
-  11.      Author's Address
-  12.      References                                            43
+  9.       IANA Considerations                                   42
+  10.      Acknowledgments                                       43
+  11.      Editor's Address
+  12.      References
   12.1.    Normative References
-  12.2.    Informative References                                44
+  12.2.    Informative References                                45
   Appendix A.  Changes
-  A.1      Changes to RFC 2251                                   44
-  A.2      Changes to RFC 2252                                   46
-  A.3      Changes to RFC 2256                                   48
-  Intellectual Property Rights
+  Intellectual Property Rights                                   49
+  Full Copyright
 
 
 
-Zeilenga                       LDAP Models                      [Page 2]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
 
-  Full Copyright                                                 49
+Zeilenga                       LDAP Models                      [Page 2]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
 
 1. Introduction
@@ -150,10 +147,10 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   Section 4 discusses the subschema information model and subschema
   discovery.  Section 5 discusses the DSA (Server) Informational Model.
 
-  Other X.500 information models, such as access control, collective
-  attribute, distribution knowledge, and replication knowledge
-  information models, may be adapted for use in LDAP.  Specification of
-  how these models apply to LDAP is left to future documents.
+  Other X.500 information models, such as access control distribution
+  knowledge, and replication knowledge information models, may be
+  adapted for use in LDAP.  Specification of how these models apply to
+  LDAP is left to future documents.
 
 
 1.1. Relationship to Other LDAP Specifications
@@ -164,16 +161,16 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
   This document obsoletes RFC 2251 sections 3.2 and 3.4, as well as
   portions of sections 4 and 6.  Appendix A.1 summaries changes to these
+  sections.  The remainder of RFC 2251 is obsoleted by the [Protocol],
+  [AuthMeth], and [Roadmap] documents.
+
 
 
 
 Zeilenga                       LDAP Models                      [Page 3]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
-  sections.  The remainder of RFC 2251 is obsoleted by the [Protocol],
-  [AuthMeth], and [Roadmap] documents.
 
   This document obsoletes RFC 2252 sections 4, 5 and 7.  Appendix A.2
   summaries changes to these sections.  The remainder of RFC 2252 is
@@ -186,7 +183,7 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
 1.2. Relationship to X.501
 
-  This document includes material, with and without adaptation, from the
+  This document includes material, with and without adaptation, from
   [X.501].  The material in this document takes precedence over that in
   [X.501].
 
@@ -213,49 +210,46 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
       keystring = leadkeychar *keychar
       leadkeychar = ALPHA
       keychar = ALPHA / DIGIT / HYPHEN
+      number  = DIGIT / ( LDIGIT 1*DIGIT )
 
-      number = DIGIT / ( LDIGIT 1*DIGIT )
-
-      ALPHA  = %x41-5A / %x61-7A   ; "A"-"Z" / "a"-"z"
-      DIGIT  = %x30 / LDIGIT       ; "0"-"9"
-      LDIGIT = %x31-39             ; "1"-"9"
+      ALPHA   = UALPHA / %x61-7A    ; "A"-"Z" / "a"-"z"
+      UALPHA  = %x41-5A             ; "A"-"Z"
+      DIGIT   = %x30 / LDIGIT       ; "0"-"9"
+      LDIGIT  = %x31-39             ; "1"-"9"
+      HEX     = DIGIT / %x41-46 / %x61-66 ; "0"-"9" / "A"-"F" / "a"-"f"
 
+      SP      = 1*SPACE  ; one or more " "
+      WSP     = 0*SPACE  ; zero or more " "
 
 
 
 Zeilenga                       LDAP Models                      [Page 4]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
-      HEX     = DIGIT / %x41-46 / %x61-66 ; 0-9 / A-F / a-f
-
-      SP     = 1*SPACE  ; one or more " "
-      WSP    = 0*SPACE  ; zero or more " "
-
-      NULL   = %x00 ; null (0)
-      SPACE  = %x20 ; space (" ")
-      DQUOTE = %x22 ; quote (""")
-      SHARP  = %x23 ; octothorpe (or sharp sign) ("#")
-      DOLLAR = %x24 ; dollar sign ("$")
-      SQUOTE = %x27 ; single quote ("'")
-      LPAREN = %x28 ; left paren ("(")
-      RPAREN = %x29 ; right paren (")")
-      PLUS   = %x2B ; plus sign ("+")
-      COMMA  = %x2C ; comma (",")
-      HYPHEN = %x2D ; hyphen ("-")
-      DOT    = %x2E ; period (".")
-      SEMI   = %x3B ; semicolon (";")
-      LANGLE = %x3C ; left angle bracket ("<")
-      EQUALS = %x3D ; equals sign ("=")
-      RANGLE = %x3E ; right angle bracket (">")
-      X      = %x58 ; uppercase x ("X")
-      ESC    = %x5C ; backslash ("\")
-      USCORE = %x5F ; underscore ("_")
-      LCURLY = %x7B ; left curly brace "{"
-      RCURLY = %x7D ; right curly brace "}"
-
-      ; Any UTF-8 character
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
+      NULL    = %x00 ; null (0)
+      SPACE   = %x20 ; space (" ")
+      DQUOTE  = %x22 ; quote (""")
+      SHARP   = %x23 ; octothorpe (or sharp sign) ("#")
+      DOLLAR  = %x24 ; dollar sign ("$")
+      SQUOTE  = %x27 ; single quote ("'")
+      LPAREN  = %x28 ; left paren ("(")
+      RPAREN  = %x29 ; right paren (")")
+      PLUS    = %x2B ; plus sign ("+")
+      COMMA   = %x2C ; comma (",")
+      HYPHEN  = %x2D ; hyphen ("-")
+      DOT     = %x2E ; period (".")
+      SEMI    = %x3B ; semicolon (";")
+      LANGLE  = %x3C ; left angle bracket ("<")
+      EQUALS  = %x3D ; equals sign ("=")
+      RANGLE  = %x3E ; right angle bracket (">")
+      ESC     = %x5C ; backslash ("\")
+      USCORE  = %x5F ; underscore ("_")
+      LCURLY  = %x7B ; left curly brace "{"
+      RCURLY  = %x7D ; right curly brace "}"
+
+      ; Any UTF-8 [UTF-8] encoded UCS [ISO10646] character
       UTF8    = UTF1 / UTFMB
       UTFMB   = UTF2 / UTF3 / UTF4
       UTF0    = %x80-BF
@@ -266,30 +260,29 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
       UTF4    = %xF0 %x90-BF 2(UTF0) / %xF1-F3 3(UTF0) /
                 %xF4 %x80-8F 2(UTF0)
 
-      ; Any octet
-      OCTET   = %x00-FF
+      OCTET   = %x00-FF ; Any octet
 
   Object identifiers (OIDs) [X.680] are represented in LDAP using a dot-
   decimal format conforming to the ABNF:
 
-      numericoid = number *( DOT number )
+      numericoid = number 1*( DOT number )
 
   Short names, also known as descriptors, are used as more readable
   aliases for object identifiers.  Short names are case insensitive and
+  conform to the ABNF:
 
+      descr = keystring
 
+  Where either an object identifier or a short name may be specified,
+  the following production is used:
 
-Zeilenga                       LDAP Models                      [Page 5]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
 
-  conform to the ABNF:
 
-      descr = keystring
+Zeilenga                       LDAP Models                      [Page 5]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
-  Where either an object identifier or a short name may be specified,
-  the following production is used:
 
       oid = descr / numericoid
 
@@ -301,10 +294,8 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   identify multiple kinds of objects or when an unambiguous short name
   (descriptor) is not available.
 
-  When the <descr> form is used, the representation SHALL be considered
-  invalid if the usage is not restricted as discussed above or the
-  implementation cannot determine unambiguously which object identifier
-  the <descr> refers to.
+  Implementations SHOULD treat short names (descriptors) used in an
+  unambiguous manner (as discussed above) as unrecognized.
 
   Short Names (descriptors) are discussed further in Section 6.2.
 
@@ -333,13 +324,6 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   provides alternative naming.  A subentry holds administrative and/or
   operational information.
 
-
-
-Zeilenga                       LDAP Models                      [Page 6]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
   The set of entries representing the DIB are organized hierarchically
   in a tree structure known as the Directory Information Tree (DIT).
 
@@ -348,6 +332,14 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   Section 2.3 discusses the structure of entries.
   Section 2.4 discusses object classes.
   Section 2.5 discusses attribute descriptions.
+
+
+
+Zeilenga                       LDAP Models                      [Page 6]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
   Section 2.6 discusses alias entries.
 
 
@@ -389,19 +381,21 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   immediate subordinates of the entry's immediate superior (i.e., all
   siblings).
 
+  The following are examples of string representations of RDNs [LDAPDN]:
 
-
-Zeilenga                       LDAP Models                      [Page 7]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
-  The following are example string representations of RDNs [LDAPDN]:
       UID=12345
       OU=Engineering
       CN=Kurt Zeilenga+L=Redwood Shores
 
   The last is an example of a multi-valued RDN.  That is, an RDN
+
+
+
+Zeilenga                       LDAP Models                      [Page 7]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
   composed of multiple AVAs.
 
 
@@ -410,7 +404,7 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   An entry's fully qualified name, known as its Distinguished Name (DN)
   [X.501], is the concatenation of its RDN and its immediate superior's
   DN.  A Distinguished Name unambiguously refers to an entry in the
-  tree.  The following are example string representations of DNs
+  tree.  The following are examples of string representations of DNs
   [LDAPDN]:
 
       UID=nobody@example.com,DC=example,DC=com
@@ -427,7 +421,7 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 2.3. Structure of an Entry
 
   An entry consists of a set of attributes which hold information about
-  the object which entry represents.  Some attributes represent user
+  the object which the entry represents.  Some attributes represent user
   information and are called user attributes.  Other attributes
   represent operational and/or administrative information and are called
   operational attributes.
@@ -445,21 +439,22 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   subtypes and other functions.  No two values of an attribute may be
   equivalent.
 
+  Two values are considered equivalent if they would match according to
+  the equality matching rule of the attribute type.  If the attribute
+  type is defined with no equality matching rule, two values are
+  equivalent if and only if they are identical.
+
+
 
 
 Zeilenga                       LDAP Models                      [Page 8]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
 
-  Two values are considered equivalent if they would match according to
-  the equality matching rule of the attribute type.  If the attribute
-  type is defined with no equality matching rule, two values are
-  equivalent if and only if they are identical.
-
-  For example, the 'givenName' attribute can have can have more than one
+  For example, a 'givenName' attribute can have can have more than one
   value, they must be Directory Strings, and they are case insensitive.
-  The 'givenName' attribute cannot hold both "John" and "JOHN" as these
+  A 'givenName' attribute cannot hold both "John" and "JOHN" as these
   are equivalent values per the equality matching rule of the attribute
   type.
 
@@ -500,19 +495,19 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
   Each object class identifies the set of attributes required to be
   present in entries belonging to the class and the set of attributes
+  allowed to be present in entries belonging to the class.  As an entry
+  of a class must meet the requirements of each class it belongs to, it
+  can be said that an object class inherits the sets of allowed and
+  required attributes from its superclasses.  A subclass can identify an
+  attribute allowed by its superclass as being required.  If an
 
 
 
 Zeilenga                       LDAP Models                      [Page 9]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
 
-  allowed to be present in entries belonging to the class.  As an entry
-  of a class must meet the requirements of each class it belongs to, it
-  can be said that an object class inherits the sets of allowed and
-  required attributes from its superclasses.  A subclass can identify an
-  attribute allowed by its superclass as being required.  If an
   attribute is a member of both sets, it is required to be present.
 
   Each object class is defined to be one of three kinds of object
@@ -537,6 +532,9 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   'top' abstract object class.  Auxiliary object classes do not
   necessarily derive from 'top'.
 
+  The following is the object class definition (see Section 4.1.1) for
+  the 'top' object class:
+
       ( 2.5.6.0 NAME 'top' ABSTRACT MUST objectClass )
 
   All entries belong to the 'top' abstract object class.
@@ -557,15 +555,15 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
       This structural object class is referred to as the structural
       object class of the entry.
 
+      Structural object classes are related to associated entries:
+
 
 
 Zeilenga                       LDAP Models                     [Page 10]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
 
-      Structural object classes are related to associated entries:
-
         - an entry conforming to a structural object class shall
           represent the real-world object constrained by the object
           class;
@@ -586,21 +584,20 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   Structural object classes cannot subclass auxiliary object classes.
 
   Each entry is said to belong to its structural object class as well as
-  all classes in its structural object class's superclass chain, which
-  always includes 'top'.
+  all classes in its structural object class's superclass chain.
 
 
 2.4.3. Auxiliary Object Classes
 
   Auxiliary object classes are used augment the characteristics of
   entries.  They are commonly used to augment the sets of attributes
-  required and allowed attributes to be present in an entry.  They can
-  be used to describe entries or classes of entries.
+  required and allowed to be present in an entry.  They can be used to
+  describe entries or classes of entries.
 
   Auxiliary object classes cannot subclass structural object classes.
 
   An entry can belong to any subset of the set of auxiliary object
-  classes allowed by the DIT content rule associated with structural
+  classes allowed by the DIT content rule associated with the structural
   object class of the entry.  If no DIT content rule is associated with
   the structural object class of the entry, the entry cannot belong to
   any auxiliary object class.
@@ -612,25 +609,22 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 2.5. Attribute Descriptions
 
   An attribute description is composed of an attribute type (see Section
+  2.5.1) and a set of zero or more attribute options (see Section
+  2.5.2).
+
 
 
 
 Zeilenga                       LDAP Models                     [Page 11]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
-  2.5.1) and a set of zero or more attribute options (see Section
-  2.5.2).
 
   An attribute description is represented by the ABNF:
 
       attributedescription = attributetype options
-
       attributetype = oid
-
       options = *( SEMI option )
-
       option = 1*keychar
 
   where <attributetype> identifies the attribute type and each <option>
@@ -645,11 +639,11 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
       cn;lang-de;lang-en
       owner
 
-  An attribute description which consisting of an unrecognized attribute
-  type is to be treated as unrecognized.  Servers SHALL treat an
-  attribute description with an unrecognized attribute option as
-  unrecognized.  Clients MAY treat an unrecognized attribute option as a
-  tagging option (see Section 2.5.2.1).
+  An attribute description with an unrecognized attribute type is to be
+  treated as unrecognized.  Servers SHALL treat an attribute description
+  with an unrecognized attribute option as unrecognized.  Clients MAY
+  treat an unrecognized attribute option as a tagging option (see
+  Section 2.5.2.1).
 
   All attributes of an entry must have distinct attribute descriptions.
 
@@ -662,25 +656,28 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
   The attribute type indicates whether the attribute is a user attribute
   or an operational attribute.  If operational, the attribute type
-  indicates the operational usage and whether the attribute can
-  modifiable by users or not.  Operational attributes discussed in
+  indicates the operational usage and whether the attribute is
+  modifiable by users or not.  Operational attributes are discussed in
   Section 3.4.
 
-  An attribute type (a subtype) may derive from another attribute type
-  (a direct supertype).   The subtype inherits the matching rules and
+  An attribute type (a subtype) may derive from a more generic attribute
+  type (a direct supertype).  The following restrictions apply to
+  subtyping:
+    - a subtype must have the same usage as its direct supertype,
+    - a subtype's syntax must be the same, or a refine of, its
+      supertype's syntax, and
+    - a subtype must be collective [RFC3671] if its supertype is
+      collective.
 
 
 
 Zeilenga                       LDAP Models                     [Page 12]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
-  syntax of its supertype.  An attribute type cannot be a subtype of an
-  attribute of different usage.
 
   An attribute description consisting of a subtype and no options is
-  said to the direct description subtype of the attribute description
+  said to be the direct description subtype of the attribute description
   consisting of the subtype's direct supertype and no options.
 
   Each attribute type is identified by an object identifier (OID) and,
@@ -725,22 +722,23 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   any number of tagging options.  Tagging options are never mutually
   exclusive.
 
+  An attribute description with N tagging options is a direct
+  (description) subtype of all attribute descriptions of the same
+
 
 
 Zeilenga                       LDAP Models                     [Page 13]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
 
-  An attribute description with N tagging options is considered a direct
-  (description) subtype of all attribute descriptions of the same
   attribute type and all but one of the N options.  If the attribute
-  type has a supertype, then the attribute description is also
-  considered a direct (description) subtype of the attribute description
-  of the supertype and the N tagging options.  That is,
-  'cn;lang-de;lang-en' is considered a direct subtype of 'cn;lang-de',
-  'cn;lang-en', and 'name;lang-de;lang-en' ('cn' is a subtype of 'name',
-  both are defined in [Schema]).
+  type has a supertype, then the attribute description is also a direct
+  (description) subtype of the attribute description of the supertype
+  and the N tagging options.  That is, 'cn;lang-de;lang-en' is a direct
+  (description) subtype of 'cn;lang-de', 'cn;lang-en', and
+  'name;lang-de;lang-en' ('cn' is a subtype of 'name', both are defined
+  in [Schema]).
 
 
 2.5.3. Attribute Description Hierarchies
@@ -780,31 +778,31 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
       modification of entry content.
 
       An attribute value stored in a object or alias entry is of
+      precisely one attribute description.  The description is indicated
+      when the value is originally added to the entry.
 
 
 
 Zeilenga                       LDAP Models                     [Page 14]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
-      precisely one attribute description.  The description is indicated
-      when the value is originally added to the entry.
-
-  For the purpose of subschema administration of the entry, a required
-  attribute specification is fulfilled if the entry contains a value of
-  an attribute description belonging to an attribute hierarchy if the
-  attribute type of that description is the same as the required
-  attribute's type.  That is, a "MUST name" specification is fulfilled
-  by 'name' or 'name;x-tag-option', but is not fulfilled by 'CN' nor by
-  'CN;x-tag-option'.  Likewise, an entry may contain a value of an
-  attribute description belonging to an attribute hierarchy if the
-  attribute type of that description is either explicitly included in
-  the definition of an object class to which the entry belongs or
-  allowed by the DIT content rule applicable to that entry.  That is,
-  'name' and 'name;x-tag-option' are allowed by "MAY name" (or by "MUST
-  name"), but 'CN' and 'CN;x-tag-option' are not allowed by "MAY name"
-  (nor by "MUST name").
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
+  For the purpose of subschema administration of the entry, a
+  specification that an attribute is required is fulfilled if the entry
+  contains a value of an attribute description belonging to an attribute
+  hierarchy where the attribute type of that description is the same as
+  the required attribute's type.  That is, a "MUST name" specification
+  is fulfilled by 'name' or 'name;x-tag-option', but is not fulfilled by
+  'CN' nor by 'CN;x-tag-option' (even though 'CN' is a subtype of
+  'name').  Likewise, an entry may contain a value of an attribute
+  description belonging to an attribute hierarchy where the attribute
+  type of that description is either explicitly included in the
+  definition of an object class to which the entry belongs or allowed by
+  the DIT content rule applicable to that entry.  That is, 'name' and
+  'name;x-tag-option' are allowed by "MAY name" (or by "MUST name"), but
+  'CN' and 'CN;x-tag-option' are not allowed by "MAY name" (nor by "MUST
+  name").
 
   For the purposes of other policy administration, unless stated
   otherwise in the specification of the particular administrative model,
@@ -837,14 +835,15 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
       name of some object.  The distinguished name of the alias entry is
       thus also a name for this object.
 
+          NOTE - The name within the 'aliasedObjectName' is said to be
+
 
 
 Zeilenga                       LDAP Models                     [Page 15]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
 
-          NOTE - The name within the 'aliasedObjectName' is said to be
                  pointed to by the alias.  It does not have to be the
                  distinguished name of any entry.
 
@@ -892,21 +891,21 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   points to.  The 'aliasedObjectName' attribute is known as the
   'aliasedEntryName' attribute in X.500.
 
+      ( 2.5.4.1 NAME 'aliasedObjectName'
 
 
 
 Zeilenga                       LDAP Models                     [Page 16]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
 
-      ( 2.5.4.1 NAME 'aliasedObjectName'
         EQUALITY distinguishedNameMatch
         SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
         SINGLE-VALUE )
 
   The 'distinguishedNameMatch' matching rule and the DistinguishedName
-  (1.3.6.1.4.1.1466.115.121.1.12) syntax is defined in [Syntaxes].
+  (1.3.6.1.4.1.1466.115.121.1.12) syntax are defined in [Syntaxes].
 
 
 3. Directory Administrative and Operational Information
@@ -929,10 +928,7 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
       lower boundary, possibly extending to leaves.  A subtree is always
       defined within a context which implicitly bounds the subtree.  For
       example, the vertex and lower boundaries of a subtree defining a
-      replicated area are bounded by a naming context.  Similarly, the
-      scope of a subtree defining a specific administrative area is
-      limited to the context of an enclosing autonomous administrative
-      area.
+      replicated area are bounded by a naming context.
 
 
 3.2. Subentries
@@ -941,24 +937,23 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   to hold information associated with a subtree or subtree refinement"
   [X.501].  Subentries are used in Directory to hold for administrative
   and operational purposes as defined in [X.501].  Their use in LDAP is
-  not detailed in this technical specification, but may be detailed in
-  future documents.
+  detailed in [RFC3672].
 
   The term "(sub)entry" in this specification indicates that servers
-  implementing X.500(93) models are, in accordance with X.500(93), to
-  use a subentry and that other servers are to use an object entry
-  belonging to the appropriate auxiliary class normally used with the
+  implementing X.500(93) models are, in accordance with X.500(93) as
+  described in [RFC3672], to use a subentry and that other servers are
+  to use an object entry belonging to the appropriate auxiliary class
+  normally used with the subentry (e.g., 'subschema' for subschema
+  subentries) to mimic the subentry.  This object entry's RDN SHALL be
+  formed from a value of the 'cn' (commonName) attribute [Schema] (as
+  all subentries are named with 'cn').
+
 
 
 
 Zeilenga                       LDAP Models                     [Page 17]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
-  subentry (e.g., 'subschema' for subschema subentries) to mimic the
-  subentry.  This object entry's RDN SHALL be formed from a value of the
-  'cn' (commonName) attribute [Schema].
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
 
 3.3. The 'objectClass' attribute
@@ -969,11 +964,11 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
         EQUALITY objectIdentifierMatch
         SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
 
-  The 'objectIdentifierMatch' matching rule and OBJECT IDENTIFIER
-  (1.3.6.1.4.1.1466.115.121.1.38) syntax is defined in [Syntaxes].
+  The 'objectIdentifierMatch' matching rule and the OBJECT IDENTIFIER
+  (1.3.6.1.4.1.1466.115.121.1.38) syntax are defined in [Syntaxes].
 
   The 'objectClass' attribute specifies the object classes of an entry,
-  which (among other things) is used in conjunction with user and system
+  which (among other things) is used in conjunction with the controlling
   schema to determine the permitted attributes of an entry.  Values of
   this attribute can be modified by clients, but the 'objectClass'
   attribute cannot be removed.
@@ -989,7 +984,7 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   a subclass of the class 'x-b', adding 'x-a' to 'objectClass' causes
   'x-b' to be implicitly added (if is not already present).
 
-  Servers SHALL restrict modifications of this attribute to prevent a
+  Servers SHALL restrict modifications of this attribute to prevent
   superclasses of remaining 'objectClass' values from being deleted.
   That is, if the auxiliary class 'x-a' is a subclass of the auxiliary
   class 'x-b' and the 'objectClass' attribute contains 'x-a' and 'x-b',
@@ -1005,27 +1000,27 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   Directory operational attributes, DSA-shared operational attributes,
   and DSA-specific operational attributes."
 
+  A directory operational attribute is used to represent operational
+  and/or administrative information in the Directory Information Model.
+  This includes operational attributes maintained by the server (e.g.
+  'createTimestamp') as well as operational attributes which hold values
+
 
 
 Zeilenga                       LDAP Models                     [Page 18]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
 
-  A directory operational attribute is used to represent operational
-  and/or administrative information in the Directory Information Model.
-  This includes operational attributes maintained by the server (e.g.
-  'createTimestamp') as well as operational attributes which hold values
   administrated by the user (e.g. 'ditContentRules').
 
   A DSA-shared operational attribute is used to represent information of
-  the DSA Information Model.  Its values, if shared between DSAs
-  (servers) are identical (except during periods of transient
-  inconsistency).
+  the DSA Information Model which is shared between DSAs.
 
   A DSA-specific operational attribute is used to represent information
-  of the DSA Information Model.  Its values, if shared between DSAs
-  (servers), need not be identical.
+  of the DSA Information Model which is specific to the DSA (though, in
+  some cases, may be derived from information shared between DSAs)
+  (e.g., 'namingContexts').
 
   The DSA Information Model operational attributes are detailed in
   [X.501].
@@ -1036,20 +1031,21 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   Not all operational attributes are user modifiable.
 
   Entries may contain, among others, the following operational
-  attributes.
+  attributes:
 
     - creatorsName: the Distinguished Name of the user who added this
-      entry to the directory.
+      entry to the directory,
 
-    - createTimestamp: the time this entry was added to the directory.
+    - createTimestamp: the time this entry was added to the directory,
 
     - modifiersName: the Distinguished Name of the user who last
-      modified this entry.
+      modified this entry, and
 
     - modifyTimestamp: the time this entry was last modified.
 
   Servers SHOULD maintain the 'creatorsName', 'createTimestamp',
-  'modifiersName', and 'modifyTimestamp' for all entries of the DIT.
+  'modifiersName', and 'modifyTimestamp' attributes for all entries of
+  the DIT.
 
 
 3.4.1. 'creatorsName'
@@ -1060,17 +1056,17 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
       ( 2.5.18.3 NAME 'creatorsName'
         EQUALITY distinguishedNameMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
+        SINGLE-VALUE NO-USER-MODIFICATION
+        USAGE directoryOperation )
+
 
 
 
 Zeilenga                       LDAP Models                     [Page 19]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
-        SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
-        SINGLE-VALUE NO-USER-MODIFICATION
-        USAGE directoryOperation )
 
   The 'distinguishedNameMatch' matching rule and the DistinguishedName
   (1.3.6.1.4.1.1466.115.121.1.12) syntax are defined in [Syntaxes].
@@ -1116,18 +1112,18 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   protocol (e.g., using the Modify operation).  The value is the time
   the entry was last modified.
 
+      ( 2.5.18.2 NAME 'modifyTimestamp'
+        EQUALITY generalizedTimeMatch
+        ORDERING generalizedTimeOrderingMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
 
 
 
 Zeilenga                       LDAP Models                     [Page 20]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
 
-      ( 2.5.18.2 NAME 'modifyTimestamp'
-        EQUALITY generalizedTimeMatch
-        ORDERING generalizedTimeOrderingMatch
-        SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
         SINGLE-VALUE NO-USER-MODIFICATION
         USAGE directoryOperation )
 
@@ -1136,6 +1132,34 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   are defined in [Syntaxes].
 
 
+3.4.5. 'structuralObjectClass'
+
+  This attribute indicates the structural object class of the entry.
+
+      ( 2.5.21.9 NAME 'structuralObjectClass'
+        EQUALITY objectIdentifierMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
+        SINGLE-VALUE NO-USER-MODIFICATION
+        USAGE directoryOperation )
+
+  The 'objectIdentifierMatch' matching rule and OBJECT IDENTIFIER
+  (1.3.6.1.4.1.1466.115.121.1.38) syntax is defined in [Syntaxes].
+
+
+3.4.6. 'governingStructureRule'
+
+  This attribute indicates the structure rule governing the entry.
+
+      ( 2.5.21.10 NAME 'governingStructureRule'
+        EQUALITY integerMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+        SINGLE-VALUE NO-USER-MODIFICATION
+        USAGE directoryOperation )
+
+  The 'integerMatch' matching rule and INTEGER
+  (1.3.6.1.4.1.1466.115.121.1.27) syntax is defined in [Syntaxes].
+
+
 4. Directory Schema
 
   As defined in [X.501]:
@@ -1148,6 +1172,14 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
       of the information and the ways in which values of attributes may
       be matched in attribute value and matching rule assertions.
 
+
+
+
+Zeilenga                       LDAP Models                     [Page 21]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
       NOTE 1 - The schema enables the Directory system to, for example:
 
       - prevent the creation of subordinate entries of the wrong
@@ -1172,14 +1204,6 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
       c) DIT Content Rule definitions that extend the specification of
          allowable attributes for entries beyond those indicated by the
-
-
-
-Zeilenga                       LDAP Models                     [Page 21]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
          structural object classes of the entries;
 
       d) Object Class definitions that define the basic set of mandatory
@@ -1198,53 +1222,44 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
   And in LDAP:
 
-      g) LDAP Syntaxes definitions that define encodings used in LDAP.
+      g) LDAP Syntax definitions that define encodings used in LDAP.
 
 
 4.1. Schema Definitions
 
   Schema definitions in this section are described using ABNF and rely
+
+
+
+Zeilenga                       LDAP Models                     [Page 22]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
   on the common productions specified in Section 1.2 as well as these:
 
       noidlen = numericoid [ LCURLY len RCURLY ]
-
       len = number
 
       oids = oid / ( LPAREN WSP oidlist WSP RPAREN )
-
       oidlist = oid *( WSP DOLLAR WSP oid )
 
       extensions = *( SP xstring SP qdstrings )
-
-      xstring = X HYPHEN 1*( ALPHA / HYPHEN / USCORE )
+      xstring = "X" HYPHEN 1*( UALPHA / HYPHEN / USCORE )
 
       qdescrs = qdescr / ( LPAREN WSP qdescrlist WSP RPAREN )
-
       qdescrlist = [ qdescr *( SP qdescr ) ]
-
       qdescr = SQUOTE descr SQUOTE
 
       qdstrings = qdstring / ( LPAREN WSP qdstringlist WSP RPAREN )
-
       qdstringlist = [ qdstring *( SP qdstring ) ]
-
-
-
-
-Zeilenga                       LDAP Models                     [Page 22]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
       qdstring = SQUOTE dstring SQUOTE
-
-      dstring = 1*( QS / QQ / QUTF8 )   ; escaped UTF8 string
+      dstring = 1*( QS / QQ / QUTF8 )   ; escaped UTF-8 string
 
       QQ =  ESC %x32 %x37 ; "\27"
-
       QS =  ESC %x35 ( %x43 / %x63 ) ; "\5C" / "\5c"
 
-      ; Any UTF-8 encoded UCS character
+      ; Any UTF-8 encoded Unicode character
       ; except %x27 ("'") and %x5C ("\")
       QUTF8    = QUTF1 / UTFMB
 
@@ -1270,6 +1285,13 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   are followed by <SP> and <qdstrings> tokens.
 
 
+
+
+Zeilenga                       LDAP Models                     [Page 23]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
 4.1.1. Object Class Definitions
 
   Object Class definitions are written according to the ABNF:
@@ -1285,13 +1307,6 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
         [ SP "MAY" SP oids ]       ; attribute types
         extensions WSP RPAREN
 
-
-
-Zeilenga                       LDAP Models                     [Page 23]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
     kind = "ABSTRACT" / "STRUCTURAL" / "AUXILIARY"
 
   where:
@@ -1325,6 +1340,14 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
         [ SP "SINGLE-VALUE" ]         ; single-value
         [ SP "COLLECTIVE" ]           ; collective
         [ SP "NO-USER-MODIFICATION" ] ; not user modifiable
+
+
+
+Zeilenga                       LDAP Models                     [Page 24]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
         [ SP "USAGE" SP usage ]       ; usage
         extensions WSP RPAREN         ; extensions
 
@@ -1340,35 +1363,28 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
     DESC <qdstring> is a short descriptive string;
     OBSOLETE indicates this attribute type is not active;
     SUP oid specifies the direct supertype of this type;
-
-
-
-Zeilenga                       LDAP Models                     [Page 24]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
     EQUALITY, ORDERING, SUBSTRING provide the oid of the equality,
         ordering, and substrings matching rules, respectively;
     SYNTAX identifies value syntax by object identifier and may suggest
         a minimum upper bound;
-    COLLECTIVE indicates this attribute type is collective [X.501];
+    COLLECTIVE indicates this attribute type is collective
+        [X.501][RFC3671];
     NO-USER-MODIFICATION indicates this attribute type is not user
         modifiable;
     USAGE indicates the application of this attribute type; and
     <extensions> describe extensions.
 
   Each attribute type description must contain at least one of the SUP
-  or SYNTAX fields.
+  or SYNTAX fields.  If no SYNTAX field is provided, the attribute type
+  description takes its value from the supertype.
+
+  If SUP field is provided, the EQUALITY, ORDERING, and SUBSTRING
+  fields, if not specified, take their value from the supertype.
 
   Usage of userApplications, the default, indicates that attributes of
   this type represent user information.  That is, they are user
   attributes.
 
-  COLLECTIVE requires usage userApplications.  Use of collective
-  attribute types in LDAP is not discussed in this technical
-  specification.
-
   A usage of directoryOperation, distributedOperation, or dSAOperation
   indicates that attributes of this type represent operational and/or
   administrative information.  That is, they are operational attributes.
@@ -1379,12 +1395,23 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   attribute.  dSAOperation usage indicates that the attribute of this
   type is a DSA-specific operational attribute.
 
+  COLLECTIVE requires usage userApplications.  Use of collective
+
+
+
+Zeilenga                       LDAP Models                     [Page 25]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
+  attribute types in LDAP is discussed in [RFC3671].
+
   NO-USER-MODIFICATION requires an operational usage.
 
   Note that the <AttributeTypeDescription> does not list the matching
   rules which can be used with that attribute type in an extensibleMatch
-  search filter.  This is done using the 'matchingRuleUse' attribute
-  described in Section 4.1.4.
+  search filter [Protocol].  This is done using the 'matchingRuleUse'
+  attribute described in Section 4.1.4.
 
   This document refines the schema description of X.501 by requiring
   that the SYNTAX field in an <AttributeTypeDescription> be a string
@@ -1396,31 +1423,21 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   with a string-based syntax, or the number of bytes in a value for all
   other syntaxes, may be indicated by appending this bound count inside
   of curly braces following the syntax's OBJECT IDENTIFIER in an
-
-
-
-Zeilenga                       LDAP Models                     [Page 25]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
   Attribute Type Description.  This bound is not part of the syntax name
   itself.  For instance, "1.3.6.4.1.1466.0{64}" suggests that server
   implementations should allow a string to be 64 characters long,
   although they may allow longer strings.  Note that a single character
   of the Directory String syntax may be encoded in more than one octet
-  since UTF-8 is a variable-length encoding.
+  since UTF-8 [RFC3629] is a variable-length encoding.
 
 
 4.1.3. Matching Rules
 
-  Matching rules are used by servers to compare attribute values against
-  assertion values when performing Search and Compare operations.  They
-  are also used to identify the value to be added or deleted when
-  modifying entries, and are used when comparing a purported
-  distinguished name with the name of an entry.
-
-  A matching rule specifies the syntax of the assertion value.
+  Matching rules are used in performance of attribute value assertions,
+  such as in performance of a Compare operation.  They are also used in
+  evaluation of a Search filters, in determining which individual values
+  are be added or deleted during performance of a Modify operation, and
+  used in comparison of distinguished names
 
   Each matching rule is identified by an object identifier (OID) and,
   optionally, one or more short names (descriptors).
@@ -1435,13 +1452,22 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
         SP "SYNTAX" SP numericoid  ; assertion syntax
         extensions WSP RPAREN      ; extensions
 
+
+
+
+Zeilenga                       LDAP Models                     [Page 26]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
   where:
     <numericoid> is object identifier assigned to this matching rule;
     NAME <qdescrs> are short names (descriptors) identifying this
         matching rule;
     DESC <qdstring> is a short descriptive string;
     OBSOLETE indicates this matching rule is not active;
-    SYNTAX identifies the assertion syntax by object identifier; and
+    SYNTAX identifies the assertion syntax (the syntax of the assertion
+        value) by object identifier; and
     <extensions> describe extensions.
 
 
@@ -1453,13 +1479,6 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   Matching rule use descriptions are written according to the following
   ABNF:
 
-
-
-Zeilenga                       LDAP Models                     [Page 26]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
     MatchingRuleUseDescription = LPAREN WSP
         numericoid                 ; object identifier
         [ SP "NAME" SP qdescrs ]   ; short names (descriptors)
@@ -1485,11 +1504,18 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   LDAP Syntaxes of (attribute and assertion) values are described in
   terms of ASN.1 [X.680] and, optionally, have an octet string encoding
   known as the LDAP-specific encoding.  Commonly, the LDAP-specific
-  encoding is constrained to string of Universal Character Set (UCS)
-  [ISO10646] characters in UTF-8 [UTF-8] form.
+  encoding is constrained to string of Unicode [Unicode] characters in
+  UTF-8 [RFC3629] form.
 
   Each LDAP syntax is identified by an object identifier (OID).
 
+
+
+Zeilenga                       LDAP Models                     [Page 27]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
   LDAP syntax definitions are written according to the ABNF:
 
     SyntaxDescription = LPAREN WSP
@@ -1508,18 +1534,10 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   A DIT content rule is a "rule governing the content of entries of a
   particular structural object class" [X.501].
 
-
-
-
-Zeilenga                       LDAP Models                     [Page 27]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
-  For DIT entries of a particular structural object class, a DIT content
-  rule specifies which auxiliary object classes the entries are allowed
-  to belong to and which additional attributes (by type) are required,
-  allowed or not allowed to appear in the entries.
+  For DIT entries of a particular structural object class, a DIT content
+  rule specifies which auxiliary object classes the entries are allowed
+  to belong to and which additional attributes (by type) are required,
+  allowed or not allowed to appear in the entries.
 
   The list of precluded attributes cannot include any attribute listed
   as mandatory in rule, the structural object class, or any of the
@@ -1546,9 +1564,18 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   An entry is governed by (if present and active in the subschema) the
   DIT content rule which applies to the structural object class of the
   entry (see Section 2.4.2).  If no active rule is present for the
+
+
+
+Zeilenga                       LDAP Models                     [Page 28]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
   entry's structural object class, the entry's content is governed by
   the structural object class (and possibly other aspects of user and
-  system schema).
+  system schema).  DIT content rules for superclasses of the structural
+  object class of an entry are not applicable to that entry.
 
   DIT content rule descriptions are written according to the ABNF:
 
@@ -1564,14 +1591,6 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
         extensions WSP RPAREN      ; extensions
 
   where:
-
-
-
-Zeilenga                       LDAP Models                     [Page 28]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
     <numericoid> is the object identifier of the structural object class
         associated with this DIT content rule;
     NAME <qdescrs> are short names (descriptors) identifying this DIT
@@ -1588,8 +1607,8 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
 4.1.7. DIT Structure Rules and Name Forms
 
-  It is sometimes desirable to regulate where object entries can be
-  placed in the DIT and how they can be named based upon their
+  It is sometimes desirable to regulate where object and alias entries
+  can be placed in the DIT and how they can be named based upon their
   structural object class.
 
 
@@ -1601,6 +1620,14 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   class, to superior structure rules.  This permits entries of the
   structural object class identified by the name form to exist in the
   DIT as subordinates to entries governed by the indicated superior
+
+
+
+Zeilenga                       LDAP Models                     [Page 29]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
   structure rules" [X.501].
 
   DIT structure rule descriptions are written according to the ABNF:
@@ -1615,19 +1642,9 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
         extensions WSP RPAREN      ; extensions
 
     ruleids = ruleid / ( LPAREN WSP ruleidlist WSP RPAREN )
-
     ruleidlist = ruleid *( SP ruleid )
-
     ruleid = number
 
-
-
-
-Zeilenga                       LDAP Models                     [Page 29]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
   where:
     <ruleid> is the rule identifier of this DIT structure rule;
     NAME <qdescrs> are short names (descriptors) identifying this DIT
@@ -1653,13 +1670,20 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   used in the definition of DIT structure rules" [X.501].
 
   Each name form indicates the structural object class to be named,
-  a set of required attribute types, and a set of allowed attributes
-  types.  A particular attribute type cannot be listed in both sets.
+  a set of required attribute types, and a set of allowed attribute
+  types.  A particular attribute type cannot be in both sets.
 
   Entries governed by the form must be named using a value from each
   required attribute type and zero or more values from the allowed
   attribute types.
 
+
+
+Zeilenga                       LDAP Models                     [Page 30]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
   Each name form is identified by an object identifier (OID) and,
   optionally, one or more short names (descriptors).
 
@@ -1676,14 +1700,6 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
         extensions WSP RPAREN      ; extensions
 
   where:
-
-
-
-Zeilenga                       LDAP Models                     [Page 30]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
     <numericoid> is object identifier which identifies this name form;
     NAME <qdescrs> are short names (descriptors) identifying this name
         form;
@@ -1716,6 +1732,14 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
   A server which masters entries and permits clients to modify these
   entries SHALL implement and provide access to these subschema
+
+
+
+Zeilenga                       LDAP Models                     [Page 31]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
   (sub)entries including providing a 'subschemaSubentry' attribute in
   each modifiable entry.  This so clients may discover the attributes
   and object classes which are permitted to be present.  It is strongly
@@ -1733,13 +1757,6 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   The 'distinguishedNameMatch' matching rule and the DistinguishedName
   (1.3.6.1.4.1.1466.115.121.1.12) syntax are defined in [Syntaxes].
 
-
-
-Zeilenga                       LDAP Models                     [Page 31]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
   Subschema is held in (sub)entries belonging to the subschema auxiliary
   object class.
 
@@ -1771,6 +1788,14 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
         SYNTAX 1.3.6.1.4.1.1466.115.121.1.37
         USAGE directoryOperation )
 
+
+
+
+Zeilenga                       LDAP Models                     [Page 32]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
   The 'objectIdentifierFirstComponentMatch' matching rule and the
   ObjectClassDescription (1.3.6.1.4.1.1466.115.121.1.37) syntax are
   defined in [Syntaxes].
@@ -1790,12 +1815,6 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   defined in [Syntaxes].
 
 
-
-Zeilenga                       LDAP Models                     [Page 32]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
 4.2.3. 'matchingRules'
 
   This attribute holds definitions of matching rules.
@@ -1826,6 +1845,13 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
 4.2.5. 'ldapSyntaxes'
 
+
+
+Zeilenga                       LDAP Models                     [Page 33]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
   This attribute holds definitions of LDAP syntaxes.
 
       ( 1.3.6.1.4.1.1466.101.120.16 NAME 'ldapSyntaxes'
@@ -1840,18 +1866,11 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
 4.2.6. 'dITContentRules'
 
-  This attribute lists DIT Content Rules which are in force.
+  This attribute lists DIT Content Rules which are present in the
+  subschema.
 
       ( 2.5.21.2 NAME 'dITContentRules'
         EQUALITY objectIdentifierFirstComponentMatch
-
-
-
-Zeilenga                       LDAP Models                     [Page 33]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
         SYNTAX 1.3.6.1.4.1.1466.115.121.1.16
         USAGE directoryOperation )
 
@@ -1862,7 +1881,8 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
 4.2.7. 'dITStructureRules'
 
-  This attribute lists DIT Structure Rules which are in force.
+  This attribute lists DIT Structure Rules which present in the
+  subschema.
 
       ( 2.5.21.1 NAME 'dITStructureRules'
         EQUALITY integerFirstComponentMatch
@@ -1880,6 +1900,14 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
       ( 2.5.21.7 NAME 'nameForms'
         EQUALITY objectIdentifierFirstComponentMatch
+
+
+
+Zeilenga                       LDAP Models                     [Page 34]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
         SYNTAX 1.3.6.1.4.1.1466.115.121.1.35
         USAGE directoryOperation )
 
@@ -1890,9 +1918,10 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
 4.3. 'extensibleObject' object class
 
-  The 'extensibleObject auxiliary object class allows entries belong to
-  it to hold any attribute type.  The set of allowed attributes of this
-  class is implicitly the set of all user attributes.
+  The 'extensibleObject' auxiliary object class allows entries that
+  belong to it to hold any user attribute.  The set of allowed attribute
+  types of this object class is implicitly the set of all attribute
+  types of userApplications usage.
 
       ( 1.3.6.1.4.1.1466.101.120.111 NAME 'extensibleObject'
         SUP top AUXILIARY )
@@ -1903,26 +1932,18 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
 
 
-Zeilenga                       LDAP Models                     [Page 34]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
-  Note that not all servers will implement this object class, and those
-  which do not will reject requests to add entries which contain this
-  object class, or modify an entry to add this object class.
-
-
 4.4. Subschema Discovery
 
   To discover the DN of the subschema (sub)entry holding the subschema
   controlling a particular entry, a client reads that entry's
   'subschemaSubentry' operational attribute.  To read schema attributes
-  from the subschema (sub)entry, clients MUST issue a base object search
-  where the filter is "(objectClass=subschema)" [Filters] and the list
-  of attributes includes the names of the desired schema attributes (as
-  they are operational).  This filter allows LDAP servers which gateway
-  to X.500 to detect that subentry information is being requested.
+  from the subschema (sub)entry, clients MUST issue a Search operation
+  [Protocol] where baseObject is the DN of the subschema (sub)entry,
+  scope is baseObject, filter is "(objectClass=subschema)" [Filters],
+  and attributes field lists the names of the desired schema attributes
+  (as they are operational).  Note: the "(objectClass=subschema)" filter
+  allows LDAP servers which gateway to X.500 to detect that subentry
+  information is being requested.
 
   Clients SHOULD NOT assume a published subschema is complete nor assume
   the server supports all of the schema elements it publishes nor assume
@@ -1932,7 +1953,18 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 5. DSA (Server) Informational Model
 
   The LDAP protocol assumes there are one or more servers which jointly
-  provide access to a Directory Information Tree (DIT).
+  provide access to a Directory Information Tree (DIT).  The server
+  holding the original information is called the "master" (for that
+  information).  Servers which hold copies of the original information
+
+
+
+Zeilenga                       LDAP Models                     [Page 35]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
+  are referred to as "shadowing" or "caching" servers.
 
   As defined in [X.501]:
 
@@ -1940,8 +1972,7 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
           DIT to the initial vertex of a naming context; corresponds to
           the distinguished name of that vertex.
 
-      DIB fragment: The portion of the DIB that is held by one master
-          DSA, comprising one or more naming contexts.
+  and:
 
       naming context: A subtree of entries held in a single master DSA.
 
@@ -1956,26 +1987,21 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   values in the root DSE.
 
 
-
-
-
-Zeilenga                       LDAP Models                     [Page 35]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
 5.1. Server-specific Data Requirements
 
   An LDAP server SHALL provide information about itself and other
   information that is specific to each server.  This is represented as a
-  group of attributes located in the root DSE (DSA-Specific Entry),
-  which is named with the zero-length LDAPDN.  These attributes are
-  retrievable, subject to access control and other restrictions, if a
-  client performs a base object search of the root with the filter
-  "(objectClass=*)" [Filters] requesting the desired attributes.  It is
-  noted that root DSE attributes are operational, and like other
-  operational attributes, are not returned in search requests unless
-  requested by name.
+  group of attributes located in the root DSE, which is named with the
+  DN with zero RDNs (whose [LDAPDN] representation is as the zero-length
+  string).
+
+  These attributes are retrievable, subject to access control and other
+  restrictions, if a client performs a Search operation [Protocol] with
+  an empty baseObject, scope of baseObject, the filter "(objectClass=*)"
+  [Filters], and with the attributes field listing the names of the
+  desired attributes.  It is noted that root DSE attributes are
+  operational, and like other operational attributes, are not returned
+  in search requests unless requested by name.
 
   The root DSE SHALL NOT be included if the client performs a subtree
   search starting from the root.
@@ -1986,6 +2012,14 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   The following attributes of the root DSE are defined in [Syntaxes].
   Additional attributes may be defined in other documents.
 
+
+
+
+Zeilenga                       LDAP Models                     [Page 36]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
     - altServer: alternative servers;
 
     - namingContexts: naming contexts;
@@ -1999,34 +2033,28 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
     - supportedSASLMechanisms: recognized Simple Authentication and
       Security Layers (SASL) [SASL] mechanisms.
 
-  The values of these attributes provided may depend on session specific
-  and other factors.  For example, a server supporting the SASL EXTERNAL
-  mechanism might only list "EXTERNAL" when the client's identity has
-  been established by a lower level.  See [AuthMeth].
+  The values provided for these attributes may depend on
+  session-specific and other factors.  For example, a server supporting
+  the SASL EXTERNAL mechanism might only list "EXTERNAL" when the
+  client's identity has been established by a lower level.  See
+  [AuthMeth].
 
   The root DSE may also include a 'subschemaSubentry' attribute.  If so,
-  it refers to the subschema (sub)entry holding schema controlling
-  attributes of the root DSE.  Client SHOULD NOT assume that the
-  subschema (sub)entry controlling the root DSE controls any entry held
-  by the server.  General subschema discovery procedures are provided in
-  Section 4.4.
-
-
-
-
-
-Zeilenga                       LDAP Models                     [Page 36]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
+  it refers to the subschema (sub)entry holding the schema controlling
+  the root DSE.  Clients SHOULD NOT assume that this subschema
+  (sub)entry controls other entries held by the server.  General
+  subschema discovery procedures are provided in Section 4.4.
 
 
 5.1.1. 'altServer'
 
-  The 'altServer' attribute lists URLs referring to alternative servers
-  which may be contacted when this server becomes unavailable.  If the
-  server does not know of any other servers which could be used this
-  attribute will be absent.  Clients may cache this information in case
-  their preferred server later becomes unavailable.
+  The 'altServer' attribute lists URIs referring to alternative servers
+  which may be contacted when this server becomes unavailable.  URIs for
+  servers implementing the LDAP are written according to [LDAPURL].
+  Other kinds of URIs may be provided.  If the server does not know of
+  any other servers which could be used this attribute will be absent.
+  Clients may cache this information in case their preferred server
+  later becomes unavailable.
 
       ( 1.3.6.1.4.1.1466.101.120.6 NAME 'altServer'
         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
@@ -2040,15 +2068,24 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
   The 'namingContexts' attribute lists the context prefixes of the
   naming contexts the server masters or shadows (in part or in whole).
+
+
+
+Zeilenga                       LDAP Models                     [Page 37]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
   If the server is a first-level DSA [X.501], it should list (in
   addition) an empty string (indicating the root of the DIT).  If the
   server does not master or shadow any information (e.g. it is an LDAP
   gateway to a public X.500 directory) this attribute will be absent.
   If the server believes it masters or shadows the entire directory, the
   attribute will have a single value, and that value will be the empty
-  string (indicating the root of the DIT).  This attribute allows a
-  client to choose suitable base objects for searching when it has
-  contacted a server.
+  string (indicating the root of the DIT).
+
+  This attribute may be used, for example, to select a suitable entry
+  name for subsequent operations with this server.
 
       ( 1.3.6.1.4.1.1466.101.120.5 NAME 'namingContexts'
         SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
@@ -2061,21 +2098,13 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 5.1.3. 'supportedControl'
 
   The 'supportedControl' attribute lists object identifiers identifying
-  the request controls the server supports.  If the server does not
-  support any request controls, this attribute will be absent.
-
+  the request controls [Protocol] the server supports.  If the server
+  does not support any request controls, this attribute will be absent.
   Object identifiers identifying response controls need not be listed.
 
   Procedures for registering object identifiers used to discovery of
   protocol mechanisms are detailed in BCP 64 [BCP64bis].
 
-
-
-Zeilenga                       LDAP Models                     [Page 37]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
       ( 1.3.6.1.4.1.1466.101.120.13 NAME 'supportedControl'
         SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
         USAGE dSAOperation )
@@ -2087,15 +2116,24 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 5.1.4. 'supportedExtension'
 
   The 'supportedExtension' attribute lists object identifiers
-  identifying the extended operations which the server supports.  If the
-  server does not support any extended operations, this attribute will
-  be absent.
+  identifying the extended operations [Protocol] which the server
+  supports.  If the server does not support any extended operations,
+  this attribute will be absent.
+
+  An extended operation generally consists of an extended request and an
+  extended response but may also include other protocol data units (such
+  as intermediate responses).  The object identifier assigned to the
+  extended request is used to identify the extended operation.  Other
+
+
+
+Zeilenga                       LDAP Models                     [Page 38]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
 
-  An extended operation comprises a ExtendedRequest, possibly other PDUs
-  defined by extension, and an ExtendedResponse [Protocol].  The object
-  identifier assigned to the ExtendedRequest is used to identify the
-  extended operation.  Other object identifiers associated with the
-  extended operation need not be listed.
+  object identifiers used in the extended operation need not be listed
+  as values of this attribute.
 
   Procedures for registering object identifiers used to discovery of
   protocol mechanisms are detailed in BCP 64 [BCP64bis].
@@ -2124,17 +2162,10 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 5.1.6. 'supportedSASLMechanisms'
 
   The 'supportedSASLMechanisms' attribute lists the SASL mechanisms
-
-
-
-Zeilenga                       LDAP Models                     [Page 38]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
-  [RFC2222] which the server recognizes.  The contents of this attribute
-  may depend on the current session state.  If the server does not
-  support any SASL mechanisms this attribute will not be present.
+  [SASL] which the server recognizes and/or supports [AuthMeth].  The
+  contents of this attribute may depend on the current session state.
+  If the server does not support any SASL mechanisms this attribute will
+  not be present.
 
       ( 1.3.6.1.4.1.1466.101.120.14 NAME 'supportedSASLMechanisms'
         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
@@ -2149,14 +2180,22 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 6.1. Preservation of User Information
 
   Syntaxes may be defined which have specific value and/or value form
+
+
+
+Zeilenga                       LDAP Models                     [Page 39]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
   (representation) preservation requirements.  For example, a syntax
   containing digitally signed data can mandate the server preserve both
   the value and form of value presented to ensure signature is not
   invalidated.
 
-  Where such requirements have not be explicitly stated, servers SHOULD
-  preserve the value of user information but MAY return the value in a
-  different form.  And where a server is unable (or unwilling) to
+  Where such requirements have not been explicitly stated, servers
+  SHOULD preserve the value of user information but MAY return the value
+  in a different form.  And where a server is unable (or unwilling) to
   preserve the value of user information, the server SHALL ensure that
   an equivalent value (per Section 2.3) is returned.
 
@@ -2180,14 +2219,6 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
   Implementations MUST be prepared that the same short name might be
   used in a subschema to refer to the different kinds of schema
-
-
-
-Zeilenga                       LDAP Models                     [Page 39]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
   elements.  That is, there might be an object class 'x-fubar' and an
   attribute type 'x-fubar' in a subschema.
 
@@ -2205,6 +2236,14 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   Some servers may hold cache or shadow copies of entries, which can be
   used to answer search and comparison queries, but will return
   referrals or contact other servers if modification operations are
+
+
+
+Zeilenga                       LDAP Models                     [Page 40]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
   requested.  Servers that perform shadowing or caching MUST ensure that
   they do not violate any access control constraints placed on the data
   by the originating server.
@@ -2214,7 +2253,7 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
 7.1 Server Guidelines
 
-  Servers MUST recognize all attribute types and object classes names
+  Servers MUST recognize all names of attribute types and object classes
   defined in this document but, unless stated otherwise, need not
   support the associated functionality.  Servers SHOULD recognize all
   the names of attribute types and object classes defined in Section 3
@@ -2223,44 +2262,42 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   Servers MUST ensure that entries conform to user and system schema
   rules or other data model constraints.
 
-  Servers MAY support the 'extensibleObject' object class.
-
   Servers MAY support DIT Content Rules.  Servers MAY support DIT
   Structure Rules and Name Forms.
 
   Servers MAY support alias entries.
 
+  Servers MAY support the 'extensibleObject' object class.
+
   Servers MAY support subentries.  If so, they MUST do so in accordance
-  with [X.501].  Servers which do not support subentries SHOULD use
+  with [RFC3672].  Servers which do not support subentries SHOULD use
   object entries to mimic subentries as detailed in Section 3.2.
 
   Servers MAY implement additional schema elements.  Servers SHOULD
   provide definitions of all schema elements they support in subschema
-
-
-
-Zeilenga                       LDAP Models                     [Page 40]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
   (sub)entries.
 
 
 7.2 Client Guidelines
 
+  In the absence of prior agreements with servers, clients SHOULD NOT
+  assume that servers support any particular schema elements beyond
+  those referenced in Section 7.1.  The client can retrieve subschema
+  information as described in Section 4.4.
+
   Clients MUST NOT display nor attempt to decode as ASN.1, a value if
-  its syntax is not known.  The implementation may attempt to discover
-  the subschema of the source entry, and retrieve the values of
-  'attributeTypes' from the subschema (sub)entry.
+  its syntax is not known.   Clients MUST NOT assume the LDAP-specific
+  string encoding is restricted to a UTF-8 encoded string of Unicode
+  characters or any particular subset of Unicode (such as a printable
+  subset) unless such restriction is explicitly stated.  Clients SHOULD
+  NOT send attribute values in a request that are not valid according to
+  the syntax defined for the attributes.
+
 
-  Clients MUST NOT assume the LDAP-specific string encoding is
-  restricted to a UTF-8 encoded string of UCS characters or any
-  particular subset of particular subset of UCS (such as a printable
-  subset) unless such restriction is explicitly stated.
 
-  Clients MUST NOT send attribute values in a request that are not valid
-  according to the syntax defined for the attributes.
+Zeilenga                       LDAP Models                     [Page 41]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
 
 8. Security Considerations
@@ -2290,20 +2327,20 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
       Author/Change Controller: IESG
       Comments:
 
-      The following descriptors (short names) should be updated to refer
-      to RFC XXXX.
+      The following descriptors (short names) should be added to
+      the registry.
 
+        NAME                         Type OID
+        ------------------------     ---- -----------------
+        governingStructureRule          A 2.5.21.10
+        structuralObjectClass              A 2.5.21.5
 
-
-Zeilenga                       LDAP Models                     [Page 41]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
+      The following descriptors (short names) should be updated to
+      refer to this RFC.
 
         NAME                         Type OID
         ------------------------     ---- -----------------
         alias                           O 2.5.6.1
-        aliasedEntryName                A 2.5.4.1
         aliasedObjectName               A 2.5.4.1
         altServer                       A 1.3.6.1.4.1.1466.101.120.6
         attributeTypes                  A 2.5.21.5
@@ -2311,6 +2348,14 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
         creatorsName                    A 2.5.18.3
         dITContentRules                 A 2.5.21.2
         dITStructureRules               A 2.5.21.1
+
+
+
+Zeilenga                       LDAP Models                     [Page 42]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
         extensibleObject                O 1.3.6.1.4.1.1466.101.120.111
         ldapSyntaxes                    A 1.3.6.1.4.1.1466.101.120.16
         matchingRuleUse                 A 2.5.21.8
@@ -2338,24 +2383,18 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   Indexing of Directories (ASID) Working Group.  This document is also
   based in part on "The Directory: Models" [X.501], a product of the
   International Telephone Union (ITU).  Additional text was borrowed
-  from RFC 2253 by Mark Wahl, Tim Howes, and Steve Kille.
+  from RFC 2253 by M. Wahl, T. Howes, and S. Kille.
 
-  This document is a product of the IETF LDAP Revison (LDAPBIS) Working
+  This document is a product of the IETF LDAP Revision (LDAPBIS) Working
   Group.
 
 
-11. Author's Address
+11. Editor's Address
 
   Kurt Zeilenga
   E-mail: <kurt@openldap.org>
 
 
-
-Zeilenga                       LDAP Models                     [Page 42]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
-
 12. References
 
 12.1. Normative References
@@ -2366,6 +2405,22 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
   [RFC2234]     Crocker, D. and P. Overell, "Augmented BNF for Syntax
                 Specifications: ABNF", RFC 2234, November 1997.
 
+
+
+Zeilenga                       LDAP Models                     [Page 43]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
+  [RFC3639]     Yergeau, F., "UTF-8, a transformation format of ISO
+                10646", RFC 3639 (also STD 63), November 2003.
+
+  [RFC3671]     Zeilenga, K., "Collective Attributes in LDAP", RFC 3671,
+                December 2003.
+
+  [RFC3672]     Zeilenga, K. and S. Legg, "Subentries in LDAP", RFC
+                3672, December 2003.
+
   [BCP64bis]    Zeilenga, K., "IANA Considerations for LDAP", draft-
                 ietf-ldapbis-bcp64-xx.txt, a work in progress.
 
@@ -2380,14 +2435,14 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
                 Connection Level Security Mechanisms",
                 draft-ietf-ldapbis-authmeth-xx.txt, a work in progress.
 
-  [LDAPDN]      Zeilenga, K. (editor), "LDAP: String Representation of
-                Distinguished Names", draft-ietf-ldapbis-dn-xx.txt, a
-                work in progress.
-
   [Filters]     Smith, M. (editor), LDAPbis WG, "LDAP: String
                 Representation of Search Filters",
                 draft-ietf-ldapbis-filter-xx.txt, a work in progress.
 
+  [LDAPDN]      Zeilenga, K. (editor), "LDAP: String Representation of
+                Distinguished Names", draft-ietf-ldapbis-dn-xx.txt, a
+                work in progress.
+
   [LDAPURL]     Smith, M. (editor), "LDAP: Uniform Resource Locator",
                 draft-ietf-ldapbis-url-xx.txt, a work in progress.
 
@@ -2402,25 +2457,21 @@ INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
                 draft-ietf-ldapbis-user-schema-xx.txt, a work in
                 progress.
 
-  [UTF-8]       Yergeau, F., "UTF-8, a transformation format of ISO
-                10646", draft-yergeau-rfc2279bis-xx.txt, a work in
+  [Unicode]     The Unicode Consortium, "The Unicode Standard, Version
+                3.2.0" is defined by "The Unicode Standard, Version 3.0"
+                (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5),
 
 
 
-Zeilenga                       LDAP Models                     [Page 43]
+Zeilenga                       LDAP Models                     [Page 44]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
-
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
-                progress.
 
-  [ISO10646]    International Organization for Standardization,
-                "Universal Multiple-Octet Coded Character Set (UCS) -
-                Architecture and Basic Multilingual Plane", ISO/IEC
-                10646-1 : 1993.
-
-  [ASCII]       Coded Character Set--7-bit American Standard Code for
-                Information Interchange, ANSI X3.4-1986.
+                as amended by the "Unicode Standard Annex #27: Unicode
+                3.1" (http://www.unicode.org/reports/tr27/) and by the
+                "Unicode Standard Annex #28: Unicode 3.2"
+                (http://www.unicode.org/reports/tr28/).
 
   [X.500]       International Telecommunication Union -
                 Telecommunication Standardization Sector, "The Directory
@@ -2461,21 +2512,21 @@ A.1 Changes to RFC 2251
   portions of Section 4 and 6 as summarized below.
 
 
+A.1.1 Section 3.2 of RFC 2251
 
+  Section 3.2 of RFC 2251 provided a brief introduction to the X.500
+  data model, as used by LDAP.  The previous specification relied on
 
-Zeilenga                       LDAP Models                     [Page 44]
-\f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
 
 
-A.1.1 Section 3.2 of RFC 2251
+Zeilenga                       LDAP Models                     [Page 45]
+\f
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
 
-  Section 3.2 of RFC 2251 provided a brief introduction to the X.500
-  data model, as used by LDAP.  The previous specification relied on
   [X.501] but lacked clarity in how X.500 models are adapted for use by
   LDAP.  This document describes the X.500 data models, as used by LDAP
-  in greater detail, especially in areas where the models require
-  adaptation is needed.
+  in greater detail, especially in areas where adaptation is needed.
 
   Section 3.2.1 of RFC 2251 described an attribute as "a type with one
   or more associated values."  In LDAP, an attribute is better described
@@ -2517,17 +2568,18 @@ A.1.2 Section 3.4 of RFC 2251
 
   - Clarify that not all root DSE attributes are user modifiable.
 
+  - Remove inconsistent text regarding handling of the
+    'subschemaSubentry' attribute within the root DSE.  The previous
+    specification stated that the 'subschemaSubentry' attribute held in
+    the root DSE referred to "subschema entries (or subentries) known by
+
 
 
-Zeilenga                       LDAP Models                     [Page 45]
+Zeilenga                       LDAP Models                     [Page 46]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
 
-  - Remove inconsistent text regarding handling of the
-    'subschemaSubentry' attribute within the root DSE.  The previous
-    specification stated that the 'subschemaSubentry' attribute held in
-    the root DSE referred to "subschema entries (or subentries) known by
     this server."  This is inconsistent with the attribute intended use
     as well as its formal definition as a single valued attribute
     [X.501].  It is also noted that a simple (possibly incomplete) list
@@ -2572,20 +2624,20 @@ A.2.1 Section 4 of RFC 2252
 
     The <descr> syntax was changed to disallow semicolon (U+003B)
     characters to appear to be consistent its natural language
+    specification "descr is the syntactic representation of an object
+    descriptor, which consists of letters and digits, starting with a
+    letter."  In a related change, the statement "an
+    AttributeDescription can be used as the value in a NAME part of an
 
 
 
-Zeilenga                       LDAP Models                     [Page 46]
+Zeilenga                       LDAP Models                     [Page 47]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
 
-    specification "descr is the syntactic representation of an object
-    descriptor, which consists of letters and digits, starting with a
-    letter."  In a related change, the statement "an
-    AttributeDescription can be used as the value in a NAME part of an
     AttributeTypeDescription" was deleted.  RFC 2252 provided no
-    specification as to the semantics of attribute options appearing in
+    specification of the semantics of attribute options appearing in
     NAME fields.
 
     RFC 2252 stated that the <descr> form of <oid> SHOULD be preferred
@@ -2609,6 +2661,8 @@ A.2.2 Section 5 of RFC 2252
     should publish, in addition to other values, "" indicating the root
     of the DIT.
 
+    The 'altServer' description was clarified.  It may hold any URI.
+
     The 'supportedExtension' description was clarified.  A server need
     only list the OBJECT IDENTIFIERs associated with the extended
     requests of the extended operations it recognizes.
@@ -2617,6 +2671,9 @@ A.2.2 Section 5 of RFC 2252
     only list the OBJECT IDENTIFIERs associated with the request
     controls it recognizes.
 
+    Descriptions for the 'structuralObjectClass' and
+    'governingStructureRule' operational attribute types were added.
+
 
 A.2.3 Section 7 of RFC 2252
 
@@ -2627,15 +2684,15 @@ A.2.3 Section 7 of RFC 2252
     implementation requirement.  This was incorporated into Section 7 of
     this document.
 
-    The specification of 'extensibleObject' was clarified of how it
 
 
 
-Zeilenga                       LDAP Models                     [Page 47]
+Zeilenga                       LDAP Models                     [Page 48]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
 
 
+    The specification of 'extensibleObject' was clarified of how it
     interacts with precluded attributes.
 
 
@@ -2683,22 +2740,25 @@ Intellectual Property Rights
   copyrights, patents or patent applications, or other proprietary
   rights which may cover technology that may be required to practice
   this standard.  Please address the information to the IETF Executive
-  Director.
 
 
 
-Zeilenga                       LDAP Models                     [Page 48]
+Zeilenga                       LDAP Models                     [Page 49]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-models-09       27 October 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-models-10      15 February 2004
+
+
+  Director.
+
 
 
 Full Copyright
 
-  Copyright (C) The Internet Society (2003). All Rights Reserved.
+  Copyright (C) The Internet Society (2004). 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 implmentation may be prepared, copied, published and
+  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
@@ -2739,9 +2799,5 @@ Full Copyright
 
 
 
-
-
-
-
-Zeilenga                       LDAP Models                     [Page 49]
+Zeilenga                       LDAP Models                     [Page 50]
 \f
index 0353005ab6629da6d0caf00f693cb0f5bc176d9b..d15878833989865d479ecc8df7546ebc3a32fffe 100644 (file)
@@ -1,10 +1,10 @@
 
 Internet-Draft                                  Editor:  J. Sermersheim 
 Intended Category: Standard Track                           Novell, Inc 
-Document: draft-ietf-ldapbis-protocol-19.txt                   Dec 2003 
-Obsoletes: RFC 2251, 2830                                               
+Document: draft-ietf-ldapbis-protocol-22.txt                   Feb 2004 
+Obsoletes: RFC 2251, 2830, [LIMR]                                       
  
+    
                             LDAP: The Protocol 
  
  
@@ -51,10 +51,10 @@ Table of Contents
    3. Protocol Model..................................................3 
    4. Elements of Protocol............................................4 
    4.1. Common Elements...............................................4 
-   4.1.1. Message Envelope............................................4 
+   4.1.1. Message Envelope............................................5 
    4.1.2. String Types................................................6 
  
-Sermersheim       Internet-Draft - Expires Jun 2004               Page 1 \f
+Sermersheim       Internet-Draft - Expires Aug 2004               Page 1 \f
               Lightweight Directory Access Protocol Version 3 
                                       
    4.1.3. Distinguished Name and Relative Distinguished Name..........6 
@@ -66,34 +66,38 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 1 \f
    4.1.9. Result Message..............................................8 
    4.1.10. Referral..................................................10 
    4.1.11. Controls..................................................11 
-   4.2. Bind Operation...............................................12 
-   4.3. Unbind Operation.............................................15 
+   4.2. Bind Operation...............................................13 
+   4.3. Unbind Operation.............................................16 
    4.4. Unsolicited Notification.....................................16 
    4.5. Search Operation.............................................17 
-   4.6. Modify Operation.............................................25 
-   4.7. Add Operation................................................26 
-   4.8. Delete Operation.............................................27 
-   4.9. Modify DN Operation..........................................28 
-   4.10. Compare Operation...........................................29 
-   4.11. Abandon Operation...........................................30 
-   4.12. Extended Operation..........................................30 
-   4.13. StartTLS Operation..........................................31 
-   5. Protocol Element Encodings and Transfer........................33 
-   5.1. Protocol Encoding............................................34 
-   5.2. Transfer Protocols...........................................34 
-   6. Security Considerations........................................34 
-   7. Acknowledgements...............................................36 
-   8. Normative References...........................................36 
-   9. Informative References.........................................37 
-   10. IANA Considerations...........................................37 
-   11. Editor's Address..............................................38 
-   Appendix A - LDAP Result Codes....................................39 
-   A.1 Non-Error Result Codes........................................39 
-   A.2 Result Codes..................................................39 
-   Appendix B - Complete ASN.1 Definition............................43 
-   Appendix C - Changes..............................................48 
-   C.1 Changes made to made to RFC 2251:.............................48 
-   C.2 Changes made to made to RFC 2830:.............................53 
+   4.6. Modify Operation.............................................26 
+   4.7. Add Operation................................................27 
+   4.8. Delete Operation.............................................28 
+   4.9. Modify DN Operation..........................................29 
+   4.10. Compare Operation...........................................30 
+   4.11. Abandon Operation...........................................31 
+   4.12. Extended Operation..........................................31 
+   4.13. IntermediateResponse Message................................33 
+   4.13.1. Usage with LDAP ExtendedRequest and ExtendedResponse......33 
+   4.13.2. Usage with LDAP Request Controls..........................34 
+   4.14. StartTLS Operation..........................................34 
+   5. Protocol Element Encodings and Transfer........................36 
+   5.1. Protocol Encoding............................................37 
+   5.2. Transfer Protocols...........................................37 
+   6. Security Considerations........................................38 
+   7. Acknowledgements...............................................39 
+   8. Normative References...........................................39 
+   9. Informative References.........................................41 
+   10. IANA Considerations...........................................41 
+   11. Editor's Address..............................................41 
+   Appendix A - LDAP Result Codes....................................42 
+   A.1 Non-Error Result Codes........................................42 
+   A.2 Result Codes..................................................42 
+   Appendix B - Complete ASN.1 Definition............................46 
+   Appendix C - Changes..............................................52 
+   C.1 Changes made to made to RFC 2251:.............................52 
+   C.2 Changes made to made to RFC 2830:.............................57 
+   C.3 Changes made to made to [LIMR]:...............................58 
     
  
 1. Introduction 
@@ -106,15 +110,16 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 1 \f
    (DSA)). Clients interact with servers using a directory access 
    protocol.  
     
+
+  
+Sermersheim       Internet-Draft - Expires Aug 2004               Page 2 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
    This document details the protocol elements of the Lightweight 
    Directory Access Protocol (LDAP), along with their semantics. 
    Following the description of protocol elements, it describes the way 
    in which the protocol elements are encoded and transferred. 
     
-  
-Sermersheim       Internet-Draft - Expires Jun 2004               Page 2 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
     
 1.1. Relationship to Obsolete Specifications 
     
@@ -132,10 +137,15 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 2 \f
    Appendix C.1 summarizes substantive changes to the remaining 
    sections. 
     
-   This document also obsoletes RFC 2830, Sections 2 and 4 in entirety. 
-   The remainder of RFC 2830 is obsoleted by [AuthMeth]. Appendix C.2 
+   This document obsoletes RFC 2830, Sections 2 and 4 in entirety. The 
+   remainder of RFC 2830 is obsoleted by [AuthMeth]. Appendix C.2 
    summarizes substantive changes to the remaining sections. 
     
+   This document also obsoletes [LIMR] in entirety. 
+        <<Note to RFC Editor: [LIMR] is to be replaced with the RFC 
+        number assigned to draft-rharrison-ldap-intermediate-resp-
+        xx.txt, an RFC-to-be.>> 
+    
     
 2. Conventions 
     
@@ -146,7 +156,8 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 2 \f
    The terms "connection" and "LDAP connection" both refer to the 
    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 
    association of the LDAP connection and its current authentication and 
@@ -158,53 +169,54 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 2 \f
    The general model adopted by this protocol is one of clients 
    performing protocol operations against servers. In this model, a 
    client transmits a protocol request describing the operation to be 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004               Page 3 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
    performed to a server. The server is then responsible for performing 
-   the necessary operation(s) in the Directory. Upon completion of the 
-   operation(s), the server returns a response containing an appropriate 
-   result code to the requesting client. 
+   the necessary operation(s) in the Directory. Upon completion of an 
+   operation, the server typically returns a response containing 
+   appropriate data to the requesting client. 
     
    Although servers are required to return responses whenever such 
    responses are defined in the protocol, there is no requirement for 
    synchronous behavior on the part of either clients or servers. 
-   Requests and responses for multiple operations may be exchanged 
-   between a client and server in any order, provided the client 
-   eventually receives a response for every request that requires one. 
-  
-Sermersheim       Internet-Draft - Expires Jun 2004               Page 3 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
+   Requests and responses for multiple operations generally may be 
+   exchanged between a client and server in any order, provided the 
+   client eventually receives a response for every request that requires 
+   one. 
  
    The core protocol operations defined in this document can be mapped 
-   to a subset of the X.500 (1993) Directory Abstract Service. However 
-   there is not a one-to-one mapping between LDAP protocol operations 
-   and X.500 Directory Access Protocol (DAP) operations. Server 
+   to a subset of the X.500 (1993) Directory Abstract Service [X.511]. 
+   However there is not a one-to-one mapping between LDAP operations and 
+   X.500 Directory Access Protocol (DAP) operations. Server 
    implementations acting as a gateway to X.500 directories may need to 
    make multiple DAP requests to service a single LDAP request. 
  
     
 4. Elements of Protocol 
     
-   The LDAP protocol is described using Abstract Syntax Notation One 
+   The protocol is described using Abstract Syntax Notation One 
    ([ASN.1]), and is transferred using a subset of ASN.1 Basic Encoding 
    Rules ([BER]). Section 5.1 specifies how the protocol elements are 
    encoded and transferred. 
  
-   In order to support future Standards Track extensions to this 
-   protocol, extensibility is implied where it is allowed (per ASN.1). 
-   In addition, ellipses (...) have been supplied in ASN.1 types that 
-   are explicitly extensible as discussed in [LDAPIANA]. Because of the 
-   implied extensibility, clients and servers MUST (unless otherwise 
-   specified) ignore trailing SEQUENCE components whose tags they do not 
-   recognize.  
+   In order to support future extensions to this protocol, extensibility 
+   is implied where it is allowed per ASN.1 (i.e. sequence, set, choice, 
+   and enumerated types are extensible). In addition, ellipses (...) 
+   have been supplied in ASN.1 types that are explicitly extensible as 
+   discussed in [LDAPIANA]. Because of the implied extensibility, 
+   clients and servers MUST (unless otherwise specified) ignore trailing 
+   SEQUENCE components whose tags they do not recognize.  
     
-   Changes to the LDAP protocol other than through the extension 
-   mechanisms described here require a different version number. A 
-   client indicates the version it is using as part of the bind request, 
-   described in Section 4.2. If a client has not sent a bind, the server 
-   MUST assume the client is using version 3 or later. 
+   Changes to the protocol other than through the extension mechanisms 
+   described here require a different version number. A client indicates 
+   the version it is using as part of the bind request, described in 
+   Section 4.2. If a client has not sent a bind, the server MUST assume 
+   the client is using version 3 or later. 
     
    Clients may determine the protocol versions a server supports by 
-   reading the supportedLDAPVersion attribute from the root DSE (DSA-
+   reading the 'supportedLDAPVersion' attribute from the root DSE (DSA-
    Specific Entry) [Models]. 
     
     
@@ -215,6 +227,10 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 3 \f
    protocol operations. 
     
     
+  
+Sermersheim       Internet-Draft - Expires Aug 2004               Page 4 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
 4.1.1. Message Envelope 
     
    For the purposes of protocol exchanges, all protocol operations are 
@@ -224,30 +240,27 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 3 \f
         LDAPMessage ::= SEQUENCE { 
              messageID       MessageID, 
              protocolOp      CHOICE { 
-                  bindRequest     BindRequest, 
-                  bindResponse    BindResponse, 
-                  unbindRequest   UnbindRequest, 
-  
-Sermersheim       Internet-Draft - Expires Jun 2004               Page 4 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
-                  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, 
+                  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, 
+                  intermediateResponse  IntermediateResponse  
                   ... }, 
              controls       [0] Controls OPTIONAL } 
     
@@ -255,6 +268,8 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 4 \f
     
         maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) -- 
     
+   The ASN.1 type Controls is defined in Section 4.1.11. 
+    
    The function of the LDAPMessage is to provide an envelope containing 
    common fields required in all protocol exchanges. At this time the 
    only common fields are the message ID and the controls. 
@@ -270,11 +285,13 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 4 \f
    In other cases where the client or server cannot parse a PDU, it 
    SHOULD abruptly close the connection where further communication 
    (including providing notice) would be pernicious. Otherwise, server 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004               Page 5 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
    implementations MUST return an appropriate response to the request, 
    with the resultCode set to protocolError. 
     
-   The ASN.1 type Controls is defined in Section 4.1.11. 
-    
     
 4.1.1.1. Message ID 
     
@@ -285,20 +302,15 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 4 \f
    the values of any other requests outstanding in the LDAP association 
    of which this message is a part. The zero value is reserved for the 
    unsolicited notification message. 
-  
-Sermersheim       Internet-Draft - Expires Jun 2004               Page 5 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
     
    Typical clients increment a counter for each request. 
     
    A client MUST NOT send a request with the same message ID as an 
    earlier request on the same LDAP association unless it can be 
-   determined that the server is no longer servicing the earlier 
-   request. Otherwise the behavior is undefined. For operations that do 
-   not return responses (unbind, abandon, and abandoned operations), the 
-   client SHOULD assume the operation is in progress until a subsequent 
-   bind request completes. 
+   determined that the server is no longer servicing the earlier request 
+   (e.g. after the final response is received, or a subsequent bind 
+   completes). Otherwise the behavior is undefined. For this purpose, 
+   note that abandon and abandoned operations do not send responses. 
  
  
 4.1.2. String Types 
@@ -318,7 +330,7 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 5 \f
    permitted value of this string is a (UTF-8 encoded) dotted-decimal 
    representation of an OBJECT IDENTIFIER. Although an LDAPOID is 
    encoded as an OCTET STRING, values are limited to the definition of 
-   <numericoid> given in Section 1.3 of [Models]. 
+   <numericoid> given in Section 1.4 of [Models]. 
     
         LDAPOID ::= OCTET STRING -- Constrained to <numericoid> [Models] 
          
@@ -331,6 +343,10 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 5 \f
     
    An LDAPDN is defined to be the representation of a Distinguished Name 
    (DN) after encoding according to the specification in [LDAPDN]. 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004               Page 6 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
     
         LDAPDN ::= LDAPString 
                    -- Constrained to <distinguishedName> [LDAPDN] 
@@ -343,10 +359,6 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 5 \f
                            -- Constrained to <name-component> [LDAPDN] 
     
     
-  
-Sermersheim       Internet-Draft - Expires Jun 2004               Page 6 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
 4.1.4. Attribute Descriptions 
     
    The definition and encoding rules for attribute descriptions are 
@@ -370,24 +382,32 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 6 \f
         AttributeValue ::= OCTET STRING 
     
    Note that there is no defined limit on the size of this encoding; 
-   thus protocol values may include multi-megabyte attributes (e.g. 
-   photographs). 
+   thus protocol values may include multi-megabyte attribute values 
+   (e.g. photographs). 
     
-   Attributes may be defined which have arbitrary and non-printable 
-   syntax. Implementations MUST NOT display nor attempt to decode a 
-   value if its syntax is not known. The implementation may attempt to 
-   discover the subschema of the source entry, and retrieve the 
-   descriptions of attributeTypes from it [Models]. 
+   Attribute values may be defined which have arbitrary and non-
+   printable syntax. Implementations MUST NOT display nor attempt to 
+   decode an attribute value if its syntax is not known. The 
+   implementation may attempt to discover the subschema of the source 
+   entry, and retrieve the descriptions of 'attributeTypes' from it 
+   [Models]. 
     
-   Clients MUST NOT send attribute values in a request that are not 
-   valid according to the syntax defined for the attributes. 
+   Clients MUST only send attribute values in a request that are valid 
+   according to the syntax defined for the attributes. 
     
     
 4.1.6. Attribute Value Assertion 
     
-   The AttributeValueAssertion type definition is similar to the one in 
-   the X.500 Directory standards. It contains an attribute description 
-   and a matching rule assertion value suitable for that type. 
+   The AttributeValueAssertion (AVA) type definition is similar to the 
+   one in the X.500 Directory standards. It contains an attribute 
+   description and a matching rule ([Models Section 4.1.3) assertion 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004               Page 7 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
+   value suitable for that type. Elements of this type are typically 
+   used to assert that the value in assertionValue matches a value of an 
+   attribute. 
     
         AttributeValueAssertion ::= SEQUENCE { 
              attributeDesc   AttributeDescription, 
@@ -400,11 +420,6 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 6 \f
    matching rule for an attribute is used when performing a Compare 
    operation. Often this is the same syntax used for values of the 
    attribute type, but in some cases the assertion syntax differs from 
-
-  
-Sermersheim       Internet-Draft - Expires Jun 2004               Page 7 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
    the value syntax. See objectIdentiferFirstComponentMatch in 
    [Syntaxes] for an example. 
     
@@ -412,8 +427,8 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 7 \f
 4.1.7. Attribute and PartialAttribute 
     
    Attributes and partial attributes consist of an attribute description 
-   and values of that attribute description. A PartialAttribute allows 
-   zero values, while Attribute requires at least one value. 
+   and attribute values. A PartialAttribute allows zero values, while 
+   Attribute requires at least one value. 
     
         PartialAttribute ::= SEQUENCE { 
              type       AttributeDescription, 
@@ -423,16 +438,17 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 7 \f
              ...,  
              vals (SIZE(1..MAX))}) 
     
-   Each attribute value is distinct in the set (no duplicates). The set 
-   of attribute values is unordered. Implementations MUST NOT rely upon 
-   the ordering being repeatable. 
+   No two attribute values are equivalent as described by Section 2.3 of 
+   [Models]. The set of attribute values is unordered. Implementations 
+   MUST NOT rely upon the ordering being repeatable. 
+    
     
 4.1.8. Matching Rule Identifier 
     
-   Matching rules are defined in 4.1.3 of [Models]. A matching rule is 
-   identified in the LDAP protocol by the printable representation of 
+   Matching rules are defined in Section 4.1.3 of [Models]. A matching 
+   rule is identified in the protocol by the printable representation of 
    either its <numericoid>, or one of its short name descriptors 
-   [Models], e.g. "caseIgnoreIA5Match" or "1.3.6.1.4.1.453.33.33"
+   [Models], e.g. 'caseIgnoreMatch' or '2.5.13.2'
     
         MatchingRuleId ::= LDAPString 
          
@@ -442,6 +458,11 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 7 \f
    The LDAPResult is the construct used in this protocol to return 
    success or failure indications from servers to clients. To various 
    requests, servers will return responses of LDAPResult or responses 
+
+  
+Sermersheim       Internet-Draft - Expires Aug 2004               Page 8 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
    containing the components of LDAPResult to indicate the final status 
    of a protocol operation request. 
     
@@ -459,10 +480,6 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 7 \f
                        -- 9 reserved -- 
                   referral                     (10), 
                   adminLimitExceeded           (11), 
-  
-Sermersheim       Internet-Draft - Expires Jun 2004               Page 8 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
                   unavailableCriticalExtension (12), 
                   confidentialityRequired      (13), 
                   saslBindInProgress           (14), 
@@ -498,16 +515,19 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 8 \f
                        -- 72-79 unused -- 
                   other                        (80), 
                   ... }, 
-                       -- 81-90 reserved for APIs -- 
              matchedDN          LDAPDN, 
              diagnosticMessage  LDAPString, 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004               Page 9 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
              referral           [3] Referral OPTIONAL } 
     
-   The resultCode enumeration is extensible as defined in Section 3.5 of 
-   [LDAPIANA]. The meanings of the result codes are given in Appendix A. 
-   If a server detects multiple errors for an operation, only one result 
-   code is returned. The server should return the result code that bes
-   indicates the nature of the error encountered. 
+   The resultCode enumeration is extensible as defined in Section 3.6 of 
+   [LDAPIANA]. The meanings of the listed result codes are given in 
+   Appendix A. If a server detects multiple errors for an operation, 
+   only one result code is returned. The server should return the resul
+   code that best indicates the nature of the error encountered. 
     
    The diagnosticMessage field of this construct may, at the server's 
    option, be used to return a string containing a textual, human-
@@ -517,10 +537,6 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 8 \f
    If the server chooses not to return a textual diagnostic, the 
    diagnosticMessage field MUST be empty. 
     
-  
-Sermersheim       Internet-Draft - Expires Jun 2004               Page 9 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
    For certain result codes (typically, but not restricted to 
    noSuchObject, aliasProblem, invalidDNSyntax and 
    aliasDereferencingProblem), the matchedDN field is set to the name of 
@@ -545,8 +561,7 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 9 \f
    During a search operation, after the baseObject is located, and 
    entries are being evaluated, the referral is not returned. Instead, 
    continuation references, described in Section 4.5.3, are returned 
-   when the search scope spans multiple naming contexts, and several 
-   different servers would need to be contacted to complete the 
+   when other servers would need to be contacted to complete the 
    operation. 
     
         Referral ::= SEQUENCE SIZE (1..MAX) OF uri URI 
@@ -555,62 +570,73 @@ Sermersheim       Internet-Draft - Expires Jun 2004               Page 9 \f
                                -- URIs 
     
    If the client wishes to progress the operation, it MUST follow the 
-   referral by contacting one of the services. If multiple URIs ar
-   present, the client assumes that any URI may be used to progress th
-   operation. 
+   referral by contacting one of the supported services. If multipl
+   URIs are present, the client assumes that any supported URI may b
+   used to progress the operation. 
     
-   Clients that follow referrals MUST ensure that they do not loop 
-   between servers. They MUST NOT repeatedly contact the same server for 
-   the same request with the same target entry name, scope and filter. 
-   Some clients use a counter that is incremented each time referral 
-   handling occurs for an operation, and these kinds of clients MUST be 
-   able to handle at least ten nested referrals between the root and a 
-   leaf entry. 
+
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 10 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
+   Protocol peers that follow referrals MUST ensure that they do not 
+   loop between servers. They MUST NOT repeatedly contact the same 
+   server for the same request with the same target entry name, scope 
+   and filter. Some implementations use a counter that is incremented 
+   each time referral handling occurs for an operation, and these kinds 
+   of implementations MUST be able to handle at least ten nested 
+   referrals between the root and a leaf entry. 
     
    A URI for a server implementing LDAP and accessible via [TCP]/[IP] 
    (v4 or v6) is written as an LDAP URL according to [LDAPURL].  
     
    When an LDAP URL is used, the following instructions are followed: 
-   -    If an alias was dereferenced, the <dn> part of the URL MUST be 
-        present, with the new target object name. Note that UTF-8 
-        characters appearing in a DN or search filter may not be legal 
-
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 10 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
-        for URLs (e.g. spaces) and MUST be escaped using the % method in 
-        [URI].  
-   -    It is RECOMMENDED that the <dn> part be present to avoid 
-        ambiguity. 
-   -    If the <dn> part is 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 the same name as in the original 
-        request.  
-   -    Some servers (e.g. participating in distributed indexing) may 
-        provide a different filter in a URL of a referral for a search 
-        operation. 
-   -    If the <filter> part of the LDAP URL is present, the client MUST 
-        use this filter in its next request to progress this search, and 
-        if it is not present the client MUST use the same filter as it 
-        used for that search. 
-   -    For search, it is RECOMMENDED that the <scope> part be present 
-        to avoid ambiguity. 
-   -    If the <scope> part is missing, the scope of the original search 
-        is used by the client to progress the operation. 
-   -    Other aspects of the new request may be the same as or different 
-        from the request which generated the referral. 
+    
+   - If an alias was dereferenced, the <dn> part of the URL MUST be 
+     present, with the new target object name. UTF-8 encoded characters 
+     appearing in the string representation of a DN or search filter 
+     may not be legal for URLs (e.g. spaces) and MUST be escaped using 
+     the % method in [URI].  
+   - It is RECOMMENDED that the <dn> part be present to avoid 
+     ambiguity. 
+   - If the <dn> part is 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 the same name as in the original request.  
+   - Some servers (e.g. participating in distributed indexing) may 
+     provide a different filter in a URL of a referral for a search 
+     operation. 
+   - If the <filter> part of the LDAP URL is present, the client MUST 
+     use this filter in its next request to progress this search, and 
+     if it is not present the client MUST use the same filter as it 
+     used for that search. 
+   - For search, it is RECOMMENDED that the <scope> part be present to 
+     avoid ambiguity. 
+   - If the <scope> part is missing, the scope of the original search 
+     is used by the client to progress the operation. 
+   - Other aspects of the new request may be the same as or different 
+     from the request which generated the referral. 
     
    Other kinds of URIs may be returned. The syntax and semantics of such 
-   URIs is left to future specifications. Clients ignore URIs that they 
-   do not support. 
+   URIs is left to future specifications. Clients may ignore URIs that 
+   they do not support. 
     
     
 4.1.11. Controls 
     
-   A control is a way to specify extension information for an LDAP 
-   message. A control only alters the semantics of the message it is 
-   attached to. 
+   Controls provide a mechanism whereby the semantics and arguments of 
+   existing LDAP operations may be extended. One or more controls may be 
+   attached to a single LDAP message. A control only affects the 
+   semantics of the message it is attached to. 
+    
+   Controls sent by clients are termed 'request controls' and those sent 
+   by servers are termed 'response controls'. 
+   When an extension calls for a particular response control to be sent 
+   in response to a request control, the response and request controls 
+   are termed to be "paired". 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 11 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
     
         Controls ::= SEQUENCE OF control Control 
     
@@ -619,64 +645,73 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 10 \f
              criticality             BOOLEAN DEFAULT FALSE, 
              controlValue            OCTET STRING OPTIONAL } 
     
-   The controlType field is the UTF-8 encoded dotted-decimal 
-   representation of an OBJECT IDENTIFIER which uniquely identifies the 
-   control, or the request control and its paired response control. This 
-   prevents conflicts between control names. 
-    
-   The criticality field is either TRUE or FALSE and only applies to 
-   request messages that have a corresponding response message. For all 
-   other messages (such as abandonRequest, unbindRequest and all 
-   response messages), the criticality field SHOULD be FALSE. 
-    
-   If the server recognizes the control type and it is appropriate for 
-   the operation, the server will make use of the control when 
-   performing the operation. 
-    
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 11 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
-   If the server does not recognize the control type or it is not 
-   appropriate for the operation, and the criticality field is TRUE, the 
-   server MUST NOT perform the operation, and for operations that have a 
-   response, MUST set the resultCode to unavailableCriticalExtension. 
-    
-   If the control is unrecognized or inappropriate but the criticality 
-   field is FALSE, the server MUST ignore the control. 
-    
-   The controlValue contains any information associated with the 
-   control. Its format is defined by the specification of the control. 
-   Implementations MUST be prepared to handle arbitrary contents of the 
-   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. 
+   The controlType field is the dotted-decimal representation of an 
+   OBJECT IDENTIFIER which uniquely identifies the control, or the 
+   request control and its paired response control. This provides 
+   unambiguous naming of controls. 
+    
+   The criticality field only has meaning in controls attached to 
+   request messages (except unbindRequest). For controls attached to 
+   response messages and the unbindRequest, the criticality field SHOULD 
+   be FALSE, and MUST be ignored by the receiving protocol peer. A value 
+   of TRUE indicates that it is unacceptable to perform the operation 
+   without applying the semantics of the control and FALSE otherwise. 
+   Specifically, the criticality field is applied as follows: 
+    
+   - Regardless of the value of the criticality field, if the server 
+     recognizes the control type and it is appropriate for the 
+     operation, the server is to make use of the control when 
+     performing the operation. 
+    
+   - If the server does not recognize the control type or it is not 
+     appropriate for the operation, and the criticality field is TRUE, 
+     the server MUST NOT perform the operation, and for operations that 
+     have a response message, MUST return unavailableCriticalExtension 
+     in the resultCode. 
+    
+   - If the server does not recognize the control type or it is not 
+     appropriate for the operation, and the criticality field is FALSE, 
+     the server MUST ignore the control. 
+    
+   The controlValue may contain information associated with the 
+   controlType. Its format is defined by the specification of the 
+   control. Implementations MUST be prepared to handle arbitrary 
+   contents of the 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. When a controlValue is defined in terms 
+   of ASN.1, and BER encoded according to Section 5.1, it also follows 
+   the extensibility rules in Section 4. 
  
    Servers list the controlType of all request controls they recognize 
-   in the supportedControl attribute [Models] in the root DSE. 
+   in the supportedControl attribute in the root DSE (Section 5.1 of 
+   [Models]). 
  
    Controls SHOULD NOT be combined unless the semantics of the 
    combination has been specified. The semantics of control 
    combinations, if specified, are generally found in the control 
    specification most recently published. In the absence of combination 
    semantics, the behavior of the operation is undefined.  
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 12 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
    Additionally, unless order-dependent semantics are given in a 
    specification, the order of a combination of controls in the SEQUENCE 
    is ignored. 
     
    This document does not specify any controls. Controls may be 
-   specified in other documents. The specification of a control consist
-   of
+   specified in other documents. Documents detailing control extension
+   are to provide for each control
     
    - the OBJECT IDENTIFIER assigned to the control, 
     
-   - whether the control is always non critical, always critical, or 
-     optionally critical, 
+   - direction as to what value the sender should provide for the 
+     criticality field (note: the semantics of the criticality field 
+     are defined above should not be altered by the control's 
+     specification),  
     
-   - whether there is information associated with the control, and if 
-     so, the format of the controlValue contents, 
+   - whether information is to be present in the controlValue field, 
+     and if so, the format of the controlValue contents, 
     
    - the semantics of the control, and 
     
@@ -691,10 +726,6 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 11 \f
    operation should be thought of as the "authenticate" operation. 
    Authentication and security-related semantics of this operation are 
    given in [AuthMeth].  
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 12 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
     
    The Bind Request is defined as follows: 
     
@@ -713,46 +744,44 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 12 \f
              mechanism               LDAPString, 
              credentials             OCTET STRING OPTIONAL } 
     
-   Parameters of the Bind Request are: 
+   Fields of the Bind Request are: 
     
    - version: A version number indicating the version of the protocol 
-     to be used in this protocol association. This document describes 
-     version 3 of the LDAP protocol. Note that there is no version 
-     negotiation. The client sets this parameter to the version it 
-     desires. If the server does not support the specified version, it 
-     MUST respond with protocolError in the resultCode field of the 
-     BindResponse. 
+     to be used in this LDAP association. This document describes 
+     version 3 of the protocol. There is no version negotiation. The 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 13 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
+     client sets this field to the version it desires. If the server 
+     does not support the specified version, it MUST respond with 
+     protocolError in the resultCode field of the BindResponse. 
     
    - 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 
-     string) for the purposes of anonymous binds ([AuthMeth] Section 7) 
-     or when using Simple Authentication and Security Layer [SASL] 
-     authentication ([AuthMeth] Section 4.3). Server behavior is 
+     string) for the purposes of anonymous binds ([AuthMeth] Section 
+     5.1) or when using Simple Authentication and Security Layer [SASL] 
+     authentication ([AuthMeth] Section 3.3.2). Server behavior is 
      undefined when the name is a null value, simple authentication is 
-     used, and a password is specified. The server SHALL NOT perform 
-     alias dereferencing in determining the object to bind as. 
-    
-   - authentication: information used to authenticate the name, if any, 
-     provided in the Bind Request. This type is extensible as defined 
-     in Section 3.6 of [LDAPIANA]. Servers that do not support a choice 
-     supplied by a client will return authMethodNotSupported in the 
-     resultCode field of the BindResponse. 
-     The simple form of an AuthenticationChoice specifies a simple 
-     password to be used for authentication.  
+     used, and a non-null password is specified. Where the server 
+     attempts to locate the named object, it SHALL NOT perform alias 
+     dereferencing. 
+    
+   - authentication: information used in authentication. This type is 
+     extensible as defined in Section 3.7 of [LDAPIANA]. Servers that 
+     do not support a choice supplied by a client return 
+     authMethodNotSupported in the resultCode field of the 
+     BindResponse. 
+      
      Textual passwords (consisting of a character sequence with a known 
-     character set and encoding) SHALL be transferred as [UTF-8] 
-     encoded [Unicode]. The determination of whether a password is 
-     textual is a local client matter. 
-     Prior to transfer, clients SHOULD prepare text passwords by 
-     applying the [SASLprep] profile of the [Stringprep] algorithm. 
-     Passwords consisting of other data (such as random octets) MUST 
-     NOT be altered
+     character set and encoding) transferred to the server using the 
+     simple AuthenticationChoice SHALL be transferred as [UTF-8] 
+     encoded [Unicode]. Prior to transfer, clients SHOULD prepare text 
+     passwords by applying the [SASLprep] profile of the [Stringprep] 
+     algorithm. Passwords consisting of other data (such as random 
+     octets) MUST NOT be altered. The determination of whether a 
+     password is textual is a local client matter
     
-
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 13 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
    Authorization is the use of this authentication information when 
    performing operations. Authorization MAY be affected by factors 
    outside of the LDAP Bind Request, such as those provided by lower 
@@ -761,7 +790,7 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 13 \f
     
 4.2.1. Processing of the Bind Request 
     
-   Before processing a BindResponse, all outstanding operations MUST 
+   Before processing a BindRequest, all outstanding operations MUST 
    either complete or be abandoned. The server may either wait for the 
    outstanding operations to complete, or abandon them. The server then 
    proceeds to authenticate the client in either a single-step, or 
@@ -777,6 +806,11 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 13 \f
     
    Clients may send multiple Bind Requests on a connection to change the 
    authentication and/or security associations or to complete a multi-
+
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 14 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
    stage bind process. Authentication from earlier binds is subsequently 
    ignored. 
  
@@ -785,10 +819,9 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 13 \f
    the server sending a BindResponse with the resultCode set to 
    saslBindInProgress. This indicates that the server requires the 
    client to send a new bind request, with the same sasl mechanism, to 
-   continue the authentication process. If at any stage the client 
-   wishes to abort the bind process it MAY unbind and then drop the 
-   underlying connection. Clients MUST NOT invoke operations between two 
-   Bind Requests made as part of a multi-stage bind. 
+   continue the authentication process. Clients MUST NOT invoke 
+   operations between two Bind Requests made as part of a multi-stage 
+   bind. 
     
    A client may abort a SASL bind negotiation by sending a BindRequest 
    with a different value in the mechanism field of SaslCredentials, or 
@@ -800,20 +833,9 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 13 \f
    abort a negotiation if it wishes to try again with the same SASL 
    mechanism. 
     
-   A failed Bind Operation has the effect of leaving the connection in 
-   an anonymous state. An abandoned Bind operation also has the effect 
-   of leaving the connection in an anonymous state when (and if) the 
-   server processes the abandonment of the bind. Client implementers 
-   should note that the client has no way of being sure when (or if) an 
-   abandon request succeeds, therefore, to arrive at a known 
-   authentication state after abandoning a bind operation, clients may 
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 14 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
-   either unbind (which results in the underlying connection being 
-   closed) or by issuing a bind request and then examining the 
-   BindResponse returned by the server. 
+   A failed Bind Operation has the effect of placing the connection in 
+   an anonymous state. 
+    
     
 4.2.2. Bind Response 
     
@@ -832,18 +854,24 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 14 \f
    be used to indicate that the version number supplied by the client is 
    unsupported. 
  
-   If the client receives a BindResponse response where the resultCode 
-   field is 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.) 
-    
-   The serverSaslCreds are used as part of a SASL-defined bind mechanism 
-   to allow the client to authenticate the server to which it is 
-   communicating, or to perform "challenge-response" authentication. If 
-   the client bound with the simple choice, or the SASL mechanism does 
-   not require the server to return information to the client, then this 
-   field SHALL NOT be included in the BindResponse. 
+   If the client receives a BindResponse where the resultCode field is 
+   protocolError, it is to assume that the server does not support this 
+   version of LDAP. While the client may be able proceed with another 
+   version of this protocol (this may or may not require establishing a 
+   new connection), how to proceed with another version of this protocol 
+   is beyond the scope of this document. Clients which are unable or 
+   unwilling to proceed SHOULD drop the underlying connection. 
+    
+   The serverSaslCreds field is used as part of a SASL-defined bind 
+   mechanism to allow the client to authenticate the server to which it 
+   is communicating, or to perform "challenge-response" authentication. 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 15 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
+   If the client bound with the simple choice, or the SASL mechanism 
+   does not require the server to return information to the client, then 
+   this field SHALL NOT be included in the BindResponse. 
     
     
 4.3. Unbind Operation 
@@ -861,14 +889,9 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 14 \f
    The Unbind Operation has no response defined. Upon transmission of 
    the UnbindRequest, each protocol peer is to consider the LDAP 
    association terminated, MUST cease transmission of messages to the 
-   other peer, and MUST close the connection. Any outstanding operations 
-   on the server are, when possible, abandoned, and when not possible, 
-   completed without transmission of the response. 
+   other peer, and MUST close the connection. Outstanding operations are 
+   handled as specified in Section 5.2. 
     
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 15 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
     
 4.4. Unsolicited Notification 
     
@@ -880,9 +903,9 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 15 \f
    any response to be returned from the client. 
     
    The unsolicited notification is structured as an LDAPMessage in which 
-   the messageID is zero and protocolOp is of the extendedResp form. Th
-   responseName field of the ExtendedResponse always contains an LDAPOID 
-   which is unique for this notification. 
+   the messageID is zero and protocolOp is of the extendedResp form (Se
+   Section 4.12). The responseName field of the ExtendedResponse always 
+   contains an LDAPOID which is unique for this notification. 
     
    One unsolicited notification (Notice of Disconnection) is defined in 
    this document. The specification of an unsolicited notification 
@@ -900,16 +923,18 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 15 \f
     
     
 4.4.1. Notice of Disconnection 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 16 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
     
    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 
-   condition. Note that this notification is NOT a response to an unbind 
-   requested by the client: the server MUST follow the procedures of 
-   Section 4.3. This notification is intended to assist clients in 
+   condition. 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 
-   client MUST NOT assume that any outstanding requests which modified 
-   the Directory have succeeded or failed
+   failure. Note that this notification is not a response to an unbind 
+   requested by the client. Outstanding operations are handled as 
+   specified in Section 5.2
     
    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 
@@ -923,10 +948,6 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 15 \f
     
    - strongAuthRequired: The server has detected that an established 
      security association between the client and server has 
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 16 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
      unexpectedly failed or been compromised, or that the server now 
      requires the client to authenticate using a strong(er) mechanism. 
     
@@ -935,9 +956,9 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 16 \f
      extended period of time. The client may make use of an alternative 
      server. 
     
-   Upon transmission of the UnbindRequest, each protocol peer is to 
+   Upon transmission of the Notice of Disconnection, the server is to 
    consider the LDAP association terminated, MUST cease transmission of 
-   messages to the other peer, and MUST close the connection. 
+   messages to the client, and MUST close the connection. 
     
     
 4.5. Search Operation 
@@ -960,6 +981,10 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 16 \f
                   singleLevel             (1), 
                   wholeSubtree            (2) }, 
              derefAliases    ENUMERATED { 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 17 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
                   neverDerefAliases       (0), 
                   derefInSearching        (1), 
                   derefFindingBaseObj     (2), 
@@ -981,17 +1006,12 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 16 \f
              substrings      [4] SubstringFilter, 
              greaterOrEqual  [5] AttributeValueAssertion, 
              lessOrEqual     [6] AttributeValueAssertion, 
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 17 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
              present         [7] AttributeDescription, 
              approxMatch     [8] AttributeValueAssertion, 
              extensibleMatch [9] MatchingRuleAssertion } 
     
         SubstringFilter ::= SEQUENCE { 
              type           AttributeDescription, 
-             -- at least one must be present, 
              -- initial and final can occur at most once 
              substrings     SEQUENCE SIZE (1..MAX) OF substring CHOICE { 
                   initial [0] AssertionValue, 
@@ -1004,7 +1024,7 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 17 \f
              matchValue      [3] AssertionValue, 
              dnAttributes    [4] BOOLEAN DEFAULT FALSE } 
     
-   Parameters of the Search Request are: 
+   Fields of the Search Request are: 
     
    - baseObject: The name of the base object entry relative to which 
      the search is to be performed. 
@@ -1013,54 +1033,55 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 17 \f
      semantics (as described in [X.511]) of the possible values of this 
      field are: 
         
-             baseObject:  The scope is constrained to the entry named by 
-             baseObject. 
-              
-             oneLevel: The scope is constrained to the immediate 
-             subordinates of the entry named by baseObject. 
-              
-             wholeSubtree: the scope is constrained to the entry named 
-             by the baseObject, and all its subordinates. 
-    
-    
-   - derefAliases: An indicator as to how alias objects (as defined in 
-     [X.501]) are to be handled in searching. The semantics of the 
-     possible values of this field are: 
-    
-             neverDerefAliases: Do not dereference aliases in searching 
-             or in locating the base object of the search. 
-    
-             derefInSearching: While searching, dereference any alias 
-             object subordinate to the base object which is also in the 
-             search scope. The filter is applied to the dereferenced 
-             object(s). If the search scope is wholeSubtree, the search 
-             continues in the subtree of any dereferenced object. 
-             Aliases in that subtree are also dereferenced. Servers 
-             SHOULD detect looping in this process to prevent denial of 
-             service attacks and duplicate entries. 
-              
+        baseObject:  The scope is constrained to the entry named by 
+        baseObject. 
+         
+        singleLevel: The scope is constrained to the immediate 
+        subordinates of the entry named by baseObject. 
+         
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 18 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 18 \f
               Lightweight Directory Access Protocol Version 3 
                                       
-             derefFindingBaseObj: Dereference aliases in locating the 
-             base object of the search, but not when searching 
-             subordinates of the base object. 
+        wholeSubtree: the scope is constrained to the entry named by 
+        the baseObject, and all its subordinates. 
     
-             derefAlways: Dereference aliases both in searching and in 
-             locating the base object of the search. 
+    
+   - derefAliases: An indicator as to how alias entries (as defined in 
+     [Models]) are to be handled in searching. The semantics of the 
+     possible values of this field are: 
+    
+        neverDerefAliases: Do not dereference aliases in searching or 
+        in locating the base object of the search. 
+         
+        derefInSearching: While searching, dereference any alias entry 
+        subordinate to the base object which is also in the search 
+        scope. The filter is applied to the dereferenced object(s). If 
+        the search scope is wholeSubtree, the search continues in the 
+        subtree of any dereferenced object. Aliases in that subtree are 
+        also dereferenced. Servers SHOULD eliminate duplicate entries 
+        that arise due to alias dereferencing while searching. 
+         
+        derefFindingBaseObj: Dereference aliases in locating the base 
+        object of the search, but not when searching subordinates of 
+        the base object. 
+         
+        derefAlways: Dereference aliases both in searching and in 
+        locating the base object of the search. 
+     Servers MUST detect looping while dereferencing aliases in order 
+     to prevent denial of service attacks of this nature. 
     
    - sizeLimit: A size limit that restricts the maximum number of 
      entries to be returned as a result of the search. A value of zero 
      in this field indicates that no client-requested size limit 
-     restrictions are in effect for the search. Servers may enforce a 
-     maximum number of entries to return. 
+     restrictions are in effect for the search. Servers may also 
+     enforce a maximum number of entries to return. 
     
    - timeLimit: A time limit that restricts the maximum time (in 
      seconds) allowed for a search. A value of zero in this field 
      indicates that no client-requested time limit restrictions are in 
-     effect for the search. Servers may enforce a maximum time limit 
-     for the search. 
+     effect for the search. Servers may also enforce a maximum time 
+     limit for the search. 
     
    - typesOnly: An indicator as to whether search results are to 
      contain both attribute descriptions and values, or just attribute 
@@ -1076,6 +1097,10 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 18 \f
      of filters. At least one filter element MUST be present in an 
      'and' or 'or' choice. The others match against individual 
      attribute values of entries in the scope of the search. 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 19 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
      (Implementor's note: the 'not' filter is an example of a tagged 
      choice in an implicitly-tagged module. In BER this is treated as 
      if the tag was explicit.) 
@@ -1092,15 +1117,11 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 18 \f
      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 
      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 
      is TRUE, and Undefined if it is Undefined. 
       
      The present match evaluates to TRUE where there is an attribute or 
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 19 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
      subtype of the specified attribute description present in an 
      entry, and FALSE otherwise (including a presence test with an 
      unrecognized attribute description.) 
@@ -1108,33 +1129,43 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 19 \f
      The matching rule for equalityMatch filter items is defined by the 
      EQUALITY matching rule for the attribute type. 
     
+     There SHALL be at most one 'initial', and at most one 'final' in 
+     the 'substrings' of a SubstringFilter. If 'initial' is present, it 
+     SHALL be the first element of 'substrings'. If 'final' is present, 
+     it SHALL be the last element of 'substrings'.  
      The matching rule for AssertionValues in a substrings filter item 
      is defined by the SUBSTR matching rule for the attribute type. 
-     Note that the AssertionValue in a substrings filter item MUST 
-     conform to the assertion syntax of the EQUALITY matching rule for 
-     the attribute type rather than the assertion syntax of the SUBSTR 
-     matching rule for the attribute type. The entire SubstringFilter 
-     is converted into an assertion value of the substrings matching 
-     rule prior to applying the rule. 
-    
-     The matching rule for greaterOrEqual and lessOrEqual filter items 
-     is defined by the ORDERING matching rule for the attribute type. 
-    
-     The approxMatch evaluates to TRUE when there is a value of the 
-     attribute or subtype for which some locally-defined approximate 
-     matching algorithm (e.g. spelling variations, phonetic match, 
-     etc.) returns TRUE. If an item matches for equality, it also 
-     satisfies an approximate match. If approximate matching is not 
-     supported, this filter item should be treated as an equalityMatch. 
+     Note that the AssertionValue in a substrings filter item conforms 
+     to the assertion syntax of the EQUALITY matching rule for the 
+     attribute type rather than the assertion syntax of the SUBSTR 
+     matching rule for the attribute type. Conceptually, the entire 
+     SubstringFilter is converted into an assertion value of the 
+     substrings matching rule prior to applying the rule. 
+    
+     The matching rule for the greaterOrEqual filter item is defined by 
+     the ORDERING and EQUALITY matching rules for the attribute type. 
+    
+     The matching rule for the lessOrEqual filter item is defined by 
+     the ORDERING matching rule for the attribute type. 
+    
+     An approxMatch filter item evaluates to TRUE when there is a value 
+     of the attribute or subtype for which some locally-defined 
+     approximate matching algorithm (e.g. spelling variations, phonetic 
+     match, etc.) returns TRUE. If an item matches for equality, it 
+     also satisfies an approximate match. If approximate matching is 
+     not supported, this filter item should be treated as an 
+     equalityMatch. 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 20 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
       
-     An extensibleMatch is evaluated as follows: 
+     An extensibleMatch filter item is evaluated as follows: 
     
-      
-       If the matchingRule field is absent, the type field MUST be 
+        If the matchingRule field is absent, the type field MUST be 
         present, and an equality match is performed for that type. 
-      
-      
-       If the type field is absent and the matchingRule is present, the 
+         
+        If the type field is absent and the matchingRule is present, the 
         matchValue is compared against all attributes in an entry which 
         support that matchingRule. The matchingRule determines the 
         syntax for the assertion value. The filter item evaluates to 
@@ -1142,27 +1173,20 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 19 \f
         FALSE if it does not match any attribute in the entry, and 
         Undefined if the matchingRule is not recognized or the 
         assertionValue is invalid.  
-      
-      
-       If the type field is present and the matchingRule is present, 
+         
+        If the type field is present and the matchingRule is present, 
         the matchValue is compared against entry attributes of the 
         specified type. In this case, the matchingRule MUST be one 
         suitable for use with the specified type (see [Syntaxes]), 
-        otherwise the filter item is undefined.  
-      
-      
-       If the dnAttributes field is set to TRUE, the match is 
+        otherwise the filter item is Undefined.  
+         
+        If the dnAttributes field is set to TRUE, the match is 
         additionally applied against all the AttributeValueAssertions in 
         an entry's distinguished name, and evaluates to TRUE if there is 
         at least one attribute in the distinguished name for which the 
         filter item evaluates to TRUE. The dnAttributes field is present 
         to alleviate the need for multiple versions of generic matching 
         rules (such as word matching), where one applies to entries and 
-
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 20 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
         another applies to entries and dn attributes as well. 
          
      A filter item evaluates to Undefined when the server would not be 
@@ -1186,49 +1210,56 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 20 \f
    - attributes: A list of the attributes to be returned from each 
      entry which matches the search filter. LDAPString values of this 
      field are constrained to the following Augmented Backus-Naur Form 
-     [(ABNF)]
+     ([ABNF])
     
-     attributeSelection = noattrs /  
-                         *( attributedescription / specialattr ) 
-    
-     noattrs = %x31 %x2E %x31 ; "1.1" 
+     attributeSelection = attributedescription / selectionspecial 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 21 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
     
-     specialattr = ASTERISK 
+     selectionspecial = noattrs / alluserattrs 
     
-     ASTERISK = %x2A ; asterisk ("*") 
+     noattrs = %x31.2E.31 ; "1.1" 
     
-     <attributedescription> is defined in Section 2.5 of [Models]. 
+     alluserattrs = %x2A ; asterisk ("*") 
     
-     There are two special values which may be used: an empty list with 
-     no attributes, and the attribute description string "*". Both of 
-     these signify that all user attributes are to be returned. (The 
-     "*" allows the client to request all user attributes in addition 
-     to any specified operational attributes). Client implementors 
-     should note that even if all user attributes are requested, some 
-     attributes and or attribute values of the entry may not be 
-     included in search results due to access controls or other 
-     restrictions. Furthermore, servers will not return operational 
-     attributes, such as objectClasses or attributeTypes, unless they 
-     are listed by name. Operational attributes are described in 
+     The <attributedescription> production is defined in Section 2.5 of 
      [Models]. 
     
-     Attributes MUST NOT be named more than once in the list, and are 
-     returned at most once in an entry. If there are attribute 
-     descriptions in the list which are not recognized, they are 
-     ignored by the server. 
-      
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 21 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
-     If the client does not want any attributes returned, it can 
-     specify a list containing only the attribute with OID "1.1". This 
-     OID was chosen because it does not (and can not) correspond to any 
-     attribute in use. 
+     There are three special cases which may exist in the attribute 
+     selection: 
+     - an empty list with no attributes, 
+     - a list containing "*" (with zero or more attribute 
+        descriptions), and 
+     - a list containing only "1.1". 
+    
+     An empty list requests the return of all user attributes.  
     
+     A list containing "*" requests all user attributes in addition to 
+     other listed (operational) attributes.  
+    
+     A list containing only the OID "1.1" indicates that no values are 
+     to be returned. If "1.1" is provided with other values, the "1.1" 
+     value is ignored. This OID was chosen because it does not (and can 
+     not) correspond to any attribute in use. 
+     
+     Client implementors should note that even if all user attributes 
+     are requested, some attributes and/or attribute values of the 
+     entry may not be included in search results due to access controls 
+     or other restrictions. Furthermore, servers will not return 
+     operational attributes, such as objectClasses or attributeTypes, 
+     unless they are listed by name. Operational attributes are 
+     described in [Models]. 
+    
+     Attributes are returned at most once in an entry. If an attribute 
+     description is named more than once in the list, the subsequent 
+     names are ignored. If an attribute description in the list is not 
+     recognized, it is ignored by the server. 
+      
    Note that an X.500 "list"-like operation can be emulated by the 
    client requesting a one-level LDAP search operation with a filter 
-   checking for the presence of the objectClass attribute, and that an 
+   checking for the presence of the 'objectClass' attribute, and that an 
    X.500 "read"-like operation can be emulated by a base object LDAP 
    search operation with the same filter. A server which provides a 
    gateway to X.500 is not required to use the Read or List operations, 
@@ -1238,6 +1269,12 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 21 \f
     
 4.5.2. Search Result 
     
+
+
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 22 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
    The results of the search operation are returned as zero or more 
    searchResultEntry messages, zero or more SearchResultReference 
    messages, followed by a single searchResultDone message. 
@@ -1275,10 +1312,6 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 21 \f
     
    Some attributes may be constructed by the server and appear in a 
    SearchResultEntry attribute list, although they are not stored 
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 22 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
    attributes of an entry. Clients SHOULD NOT assume that all attributes 
    can be modified, even if permitted by access control. 
     
@@ -1294,18 +1327,23 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 22 \f
 4.5.3. Continuation References in the Search Result 
     
    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 
-   and subordinate to 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 
-   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 result code. 
+   baseObject but was unable to search one or more non-local entries, 
+   the server may return one or more SearchResultReference entries, each 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 23 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
+   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 thus has not searched any entries; 
+   in this case it would return a SearchResultDone containing a referral 
+   result code. 
     
    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 
-   return a SearchResultReference response. Otherwise 
-   SearchResultReference responses are always returned when in scope. 
+   context [Section 5 of Models], it may use the search filter to 
+   determine whether or not to return a SearchResultReference response. 
+   Otherwise SearchResultReference responses are always returned when in 
+   scope. 
     
    The SearchResultReference is of the same data type as the Referral.  
     
@@ -1328,49 +1366,46 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 22 \f
    search result references between the root and a leaf entry. 
     
    When an LDAP URL is used, the following instructions are followed: 
-   -    The <dn> part of the URL MUST be present, with the new target 
-        object name. The client MUST use this name when following the 
-        referral. 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 % method in [URI].  
+    
+   - The <dn> part of the URL MUST be present, with the new target 
+     object name. The client MUST use this name when following the 
+     reference. UTF-8 encoded characters appearing in the string 
+     representation of a DN or search filter may not be legal for URLs 
+     (e.g. spaces) and MUST be escaped using the % method in [URI].  
+   - Some servers (e.g. participating in distributed indexing) may 
+     provide a different filter in a URL of a SearchResultReference. 
+   - If the <filter> part of the URL is present, the client MUST use 
+     this filter in its next request to progress this search, and if it 
+     is not present the client MUST use the same filter as it used for 
+     that search.  
+   - If the originating search scope was singleLevel, the <scope> part 
+     of the URL will be "base". 
+   - it is RECOMMENDED that the <scope> part be present to avoid 
+     ambiguity. 
+   - Other aspects of the new search request may be the same as or 
+     different from the search request which generated the 
+     SearchResultReference. 
+   - The name of an unexplored subtree in a SearchResultReference need 
+     not be subordinate to the base object. 
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 23 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 24 \f
               Lightweight Directory Access Protocol Version 3 
                                       
-   -    It is RECOMMENDED that the <dn> part be present to avoid 
-        ambiguity. 
-   -    Some servers (e.g. participating in distributed indexing) may 
-        provide a different filter in a URL of a SearchResultReference. 
-   -    If the <filter> part of the URL is present, the client MUST use 
-        this filter in its next request to progress this search, and if 
-        it is not present the client MUST use the same filter as it used 
-        for that search.  
-   -    If the originating search scope was singleLevel, the <scope> 
-        part of the URL will be "base". 
-   -    it is RECOMMENDED that the <scope> part be present to avoid 
-        ambiguity. 
-   -    If the <scope> part is missing, the scope of the original search 
-        is used by the client to progress the operation. 
-   -    Other aspects of the new search request may be the same as or 
-        different from the search request which generated the 
-        SearchResultReference. 
-   -    The name of an unexplored subtree in a SearchResultReference 
-        need not be subordinate to the base object. 
  
    Other kinds of URIs may be returned. The syntax and semantics of such 
-   URIs is left to future specifications. Clients ignore URIs that they 
-   do not support. 
+   URIs is left to future specifications. Clients may ignore URIs that 
+   they do not support. 
  
     
-4.5.3.1. Example 
+4.5.3.1. Examples 
     
    For example, suppose the contacted server (hosta) holds the entry 
-   "DC=Example,DC=NET" and the entry "CN=Manager,DC=Example,DC=NET". It 
+   <DC=Example,DC=NET> and the entry <CN=Manager,DC=Example,DC=NET>. It 
    knows that either LDAP-capable servers (hostb) or (hostc) hold 
-   "OU=People,DC=Example,DC=NET" (one is the master and the other server 
+   <OU=People,DC=Example,DC=NET> (one is the master and the other server 
    a shadow), and that LDAP-capable server (hostd) holds the subtree 
-   "OU=Roles,DC=Example,DC=NET". If a subtree search of 
-   "DC=Example,DC=NET" is requested to the contacted server, it may 
+   <OU=Roles,DC=Example,DC=NET>. If a wholeSubtree search of 
+   <DC=Example,DC=NET> is requested to the contacted server, it may 
    return the following: 
     
      SearchResultEntry for DC=Example,DC=NET 
@@ -1386,23 +1421,34 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 23 \f
    SearchResultReference, additional SearchResultReference may be 
    generated. Continuing the example, if the client contacted the server 
    (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: 
     
      SearchResultEntry for OU=People,DC=Example,DC=NET 
      SearchResultReference { 
        ldap://hoste/OU=Managers,OU=People,DC=Example,DC=NET??sub } 
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 24 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
      SearchResultReference { 
        ldap://hostf/OU=Consultants,OU=People,DC=Example,DC=NET??sub } 
      SearchResultDone (success) 
     
+   Similarly, if a singleLevel search of <DC=Example,DC=NET> is 
+   requested to the contacted server, it may return the following: 
+    
+     SearchResultEntry for CN=Manager,DC=Example,DC=NET 
+     SearchResultReference { 
+       ldap://hostb/OU=People,DC=Example,DC=NET??base 
+       ldap://hostc/OU=People,DC=Example,DC=NET??base } 
+     SearchResultReference { 
+       ldap://hostd/OU=Roles,DC=Example,DC=NET??base } 
+     SearchResultDone (success) 
+    
    If the contacted server does not hold the base object for the search, 
    then it will return a referral to the client. For example, if the 
-   client requests a subtree search of "DC=Example,DC=ORG" to hosta, the 
+   client requests a subtree search of <DC=Example,DC=ORG> to hosta, the 
    server may return only a SearchResultDone containing a referral. 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 25 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
     
      SearchResultDone (referral) { 
        ldap://hostg/DC=Example,DC=ORG??sub } 
@@ -1423,7 +1469,7 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 24 \f
                        replace (2) }, 
                   modification    PartialAttribute } } 
  
-   Parameters of the Modify Request are: 
+   Fields of the Modify Request are: 
     
    - object: The name of the object to be modified. The value of this 
      field contains the DN of the entry to be modified. The server 
@@ -1432,38 +1478,37 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 24 \f
     
    - changes: A list of modifications to be performed on the entry. The 
      entire list of modifications MUST be performed in the order they 
-     are listed, as a single atomic operation. While individual 
+     are listed as a single atomic operation. While individual 
      modifications may violate certain aspects of the directory schema 
      (such as the object class definition and DIT content rule), the 
      resulting entry after the entire list of modifications is 
-     performed MUST conform to the requirements of the directory 
-     schema
-    
-     operation: Used to specify the type of modification being 
+     performed MUST conform to the requirements of the directory schema 
+     [Models]
+         
+     -  operation: Used to specify the type of modification being 
         performed. Each operation type acts on the following 
         modification. The values of this field have the following  
         semantics respectively: 
     
-             add: add values listed to the modification attribute, 
-             creating the attribute if necessary; 
+           add: add values listed to the modification attribute, 
+           creating the attribute if necessary; 
+            
+           delete: delete values listed from the modification attribute, 
+           removing the entire attribute if no values are listed, or if 
+           all current values of the attribute are listed for deletion; 
+            
+           replace: replace all existing values of the modification 
+           attribute with the new values listed, creating the attribute 
+           if it did not already exist. A replace with no value will 
+           delete the entire attribute if it exists, and is ignored if 
+           the attribute does not exist. 
     
-             delete: delete values listed from the modification 
-             attribute, removing the entire attribute if no values are 
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 25 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 26 \f
               Lightweight Directory Access Protocol Version 3 
                                       
-             listed, or if all current values of the attribute are 
-             listed for deletion; 
-    
-             replace: replace all existing values of the modification 
-             attribute with the new values listed, creating the 
-             attribute if it did not already exist. A replace with no 
-             value will delete the entire attribute if it exists, and is 
-             ignored if the attribute does not exist. 
-    
-   -   modification: A PartialAttribute (which may have an empty SET of 
-        vals) used to hold the attribute type or attribute type and 
+     -  modification: A PartialAttribute (which may have an empty SET 
+        of vals) used to hold the attribute type or attribute type and 
         values being modified. 
     
    Upon receipt of a Modify Request, the server attempts to perform the 
@@ -1474,14 +1519,14 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 25 \f
     
    The server will return to the client a single Modify Response 
    indicating either the successful completion of the DIT modification, 
-   or the reason that the modification failed. Note that due to the 
-   requirement for atomicity in applying the list of modifications in 
-   the Modify Request, the client may expect that no modifications of 
-   the DIT have been performed if the Modify Response received indicates 
-   any sort of error, and that all requested modifications have been 
-   performed if the Modify Response indicates successful completion of 
-   the Modify Operation. If the association changes or the connection 
-   fails, whether the modification occurred or not is indeterminate. 
+   or the reason that the modification failed. Due to the requirement 
+   for atomicity in applying the list of modifications in the Modify 
+   Request, the client may expect that no modifications of the DIT have 
+   been performed if the Modify Response received indicates any sort of 
+   error, and that all requested modifications have been performed if 
+   the Modify Response indicates successful completion of the Modify 
+   Operation. If the association changes or the connection fails, 
+   whether the modification occurred or not is indeterminate. 
     
    The Modify Operation cannot be used to remove from an entry any of 
    its distinguished values, i.e. those values which form the entry's 
@@ -1507,34 +1552,36 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 25 \f
              attributes      AttributeList } 
     
         AttributeList ::= SEQUENCE OF attribute Attribute 
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 26 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
     
-   Parameters of the Add Request are: 
+   Fields of the Add Request are: 
     
-   - entry: the name of the entry to be added. Note that the server 
-     SHALL NOT dereference any aliases in locating the entry to be 
-     added. 
+   - entry: the name of the entry to be added. The server SHALL NOT 
+     dereference any aliases in locating the entry to be added. 
     
-   - attributes: the list of attributes that make up the content of the 
-     entry being added. Clients MUST include distinguished values 
-     (those forming the entry's own RDN) in this list, the objectClass 
-     attribute, and values of any mandatory attributes of the listed 
-     object classes. Clients MUST NOT supply NO-USER-MODIFICATION 
-     attributes such as the createTimestamp or creatorsName attributes, 
-     since the server maintains these automatically. 
+   - attributes: the list of attributes that, along with those from the 
+     RDN, make up the content of the entry being added. Clients MUST 
+     include the 'objectClass' attribute, and values of any mandatory 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 27 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
+     attributes of the listed object classes. Clients MUST NOT supply 
+     NO-USER-MODIFICATION attributes such as the createTimestamp or 
+     creatorsName attributes, since the server maintains these 
+     automatically. 
     
    The entry named in the entry field of the AddRequest MUST NOT exist 
    for the AddRequest to succeed. The immediate superior (parent) of an 
    object or alias entry to be added MUST exist. For example, if the 
-   client attempted to add "CN=JS,DC=Example,DC=NET", the 
-   "DC=Example,DC=NET" entry did not exist, and the "DC=NET" entry did 
+   client attempted to add <CN=JS,DC=Example,DC=NET>, the 
+   <DC=Example,DC=NET> entry did not exist, and the <DC=NET> entry did 
    exist, then the server would return the noSuchObject result code with 
-   the matchedDN field containing "DC=NET". If the parent entry exists 
-   but is not in a naming context held by the server, the server SHOULD 
-   return a referral to the server holding the parent entry. 
+   the matchedDN field containing <DC=NET>.  
+    
+   If the entry to be added would not fall within a naming context 
+   [Section 5 of Models] held by the server, and the server has 
+   knowledge of where that entry is to be located, a referral to the 
+   server(s) holding the parent entry should be returned. 
     
    Server implementations SHOULD NOT restrict where entries can be 
    located in the Directory unless DIT structure rules are in place. 
@@ -1547,8 +1594,8 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 26 \f
     
         AddResponse ::= [APPLICATION 9] LDAPResult 
     
-   A response of success indicates that the new entry is present in the 
-   Directory. 
+   A response of success indicates that the new entry has been added to 
+   the Directory. 
     
     
 4.8. Delete Operation 
@@ -1565,10 +1612,6 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 26 \f
    Only leaf entries (those with no subordinate entries) can be deleted 
    with this operation. 
     
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 27 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
    Upon receipt of a Delete Request, a server will attempt to perform 
    the entry removal requested and return the result in the Delete 
    Response defined as follows: 
@@ -1576,6 +1619,10 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 27 \f
         DelResponse ::= [APPLICATION 11] LDAPResult 
     
     
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 28 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
 4.9. Modify DN Operation 
     
    The Modify DN Operation allows a client to change the Relative 
@@ -1589,51 +1636,58 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 27 \f
              deleteoldrdn    BOOLEAN, 
              newSuperior     [0] LDAPDN OPTIONAL } 
     
-   Parameters of the Modify DN Request are: 
+   Fields of the Modify DN Request are: 
     
    - entry: the name of the entry to be changed. This entry may or may 
-     not have subordinate entries. Note that the server SHALL NOT 
-     dereference any aliases in locating the entry to be changed. 
+     not have subordinate entries. 
     
-   - newrdn: the new RDN of the entry. 
+   - newrdn: the new RDN of the entry. If an attribute value in the 
+     newrdn does not already exist in the entry (either as part of the 
+     old RDN or as a non-distinguished value), it is added. If it 
+     cannot be added, an appropriate error is returned. 
     
-   - deleteoldrdn: a boolean parameter that controls whether the old 
-     RDN attribute values are to be retained as attributes of the 
-     entry, or deleted from the entry. 
+   - deleteoldrdn: a boolean field that controls whether the old RDN 
+     attribute values are to be retained as attributes of the entry, or 
+     deleted from the entry. 
     
    - newSuperior: if present, this is the name of an existing object 
      entry which becomes the immediate superior (parent) of the 
      existing entry. 
     
+   The server SHALL NOT dereference any aliases in locating the objects 
+   named in entry or newSuperior. 
+    
    Upon receipt of a ModifyDNRequest, a server will attempt to perform 
    the name change and return the result in the Modify DN Response, 
    defined as follows: 
     
         ModifyDNResponse ::= [APPLICATION 13] LDAPResult 
     
-   For example, if the entry named in the "entry" parameter was "cn=John 
-   Smith,c=US", the newrdn parameter was "cn=John Cougar Smith", and the 
-   newSuperior parameter was absent, then this operation would attempt 
-   to rename the entry to be "cn=John Cougar Smith,c=US". If there was 
+   For example, if the entry named in the entry field was <cn=John 
+   Smith,c=US>, the newrdn field was <cn=John Cougar Smith>, and the 
+   newSuperior field was absent, then this operation would attempt to 
+   rename the entry to be <cn=John Cougar Smith,c=US>. If there was 
    already an entry with that name, the operation would fail with the 
    entryAlreadyExists result code. 
     
    The object named in newSuperior MUST exist. For example, if the 
-   client attempted to add "CN=JS,DC=Example,DC=NET", the 
-   "DC=Example,DC=NET" entry did not exist, and the "DC=NET" entry did 
+   client attempted to add <CN=JS,DC=Example,DC=NET>, the 
+   <DC=Example,DC=NET> entry did not exist, and the <DC=NET> entry did 
    exist, then the server would return the noSuchObject result code with 
-   the matchedDN field containing "DC=NET". 
+   the matchedDN field containing <DC=NET>. 
+
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 28 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 29 \f
               Lightweight Directory Access Protocol Version 3 
                                       
-   If the deleteoldrdn parameter is TRUE, the values forming the old RDN 
-   are deleted from the entry. If the deleteoldrdn parameter is FALSE, 
-   the values forming the old RDN will be retained as non-distinguished 
-   attribute values of the entry. The server MUST fail the operation and 
-   return an error in the result code if the setting of the deleteoldrdn 
-   parameter would cause a schema inconsistency in the entry. 
+   If the deleteoldrdn field is TRUE, the attribute values forming the 
+   old RDN but not the new RDN are deleted from the entry. If the 
+   deleteoldrdn field is FALSE, the attribute values forming the old RDN 
+   will be retained as non-distinguished attribute values of the entry. 
+   The server MUST fail the operation and return an error in the result 
+   code if the setting of the deleteoldrdn field would cause a schema 
+   inconsistency in the entry. 
     
    Note that X.500 restricts the ModifyDN operation to only affect 
    entries that are contained within a single server. If the LDAP server 
@@ -1646,45 +1700,51 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 28 \f
     
 4.10. Compare Operation 
     
-   The Compare Operation allows a client to compare an assertion 
-   provided with an entry in the Directory. The Compare Request is 
-   defined as follows: 
+   The Compare Operation allows a client to compare an assertion value 
+   with the values of a particular attribute in a particular entry in 
+   the Directory. The Compare Request is defined as follows: 
     
         CompareRequest ::= [APPLICATION 14] SEQUENCE { 
              entry           LDAPDN, 
              ava             AttributeValueAssertion } 
     
-   Parameters of the Compare Request are: 
+   Fields of the Compare Request are: 
     
-   - entry: the name of the entry to be compared. Note that the server 
-     SHALL NOT dereference any aliases in locating the entry to be 
-     compared. 
+   - entry: the name of the entry to be compared. The server SHALL NOT 
+     dereference any aliases in locating the entry to be compared. 
     
-   - ava: the assertion with which an attribute in the entry is to be 
-     compared. 
+   - ava: holds the attribute description and assertion value with 
+     which an attribute in the entry is to be compared. 
     
    Upon receipt of a Compare Request, a server will attempt to perform 
-   the requested comparison using the EQUALITY matching rule for the 
-   attribute type and return the result in the Compare Response, defined 
-   as follows: 
+   the requested comparison and return the result in the Compare 
+   Response, defined as follows: 
     
         CompareResponse ::= [APPLICATION 15] LDAPResult 
     
+   The resultCode field is set to compareTrue, compareFalse, or an 
+   appropriate error. compareTrue indicates that the assertion value in 
+   the ava field is equivalent to a value of the attribute or subtype 
+   (according to the attribute's EQUALITY matching rule). compareFalse 
+   indicates that the comparison of the assertion value in the ava field 
+   and the values of the attribute or subtype resulted in an Undefined 
+   (Section 4.5.1) or non-equivalent match. 
+    
    In the event that the attribute or subtype is not present in the 
    entry, the resultCode field is set to noSuchAttribute. If the 
    attribute is unknown, the resultCode is set to 
-   undefinedAttributeType. Note that errors and the result of comparison 
-   are all returned in the same construct. 
-    
+   undefinedAttributeType. If the attribute or subtype has no equality 
+   matching rule, innapropriateMatching is returned in the resultCode. 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 30 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
+     
    Note that some directory systems may establish access controls which 
    permit the values of certain attributes (such as userPassword) to be 
    compared but not interrogated by other means. 
     
     
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 29 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
 4.11. Abandon Operation 
     
    The function of the Abandon Operation is to allow a client to request 
@@ -1693,10 +1753,10 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 29 \f
     
         AbandonRequest ::= [APPLICATION 16] MessageID 
     
-   The MessageID MUST be that of an operation which was requested 
-   earlier in this LDAP association. The abandon request itself has its 
-   own message id. This is distinct from the id of the earlier operation 
-   being abandoned. 
+   The MessageID is that of an operation which was requested earlier in 
+   this LDAP association. The abandon request itself has its own message 
+   id. This is distinct from the id of the earlier operation being 
+   abandoned. 
     
    There is no response defined in the Abandon operation. Upon receipt 
    of an AbandonRequest, the server MAY abandon the operation identified 
@@ -1705,9 +1765,9 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 29 \f
    is limited to uses where the client does not require an indication of 
    its outcome. 
     
-   Abandon and Unbind operations cannot be abandoned. The ability to 
-   abandon other (particularly update) operations is at the discretion 
-   of the server. 
+   Abandon, Bind, Unbind, and StartTLS operations cannot be abandoned. 
+   The ability to abandon other (particularly update) operations is at 
+   the discretion of the server.  
     
    In the event that a server receives an Abandon Request on a Search 
    Operation in the midst of transmitting responses to the search, that 
@@ -1716,7 +1776,7 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 29 \f
    course, the server MUST ensure that only properly encoded LDAPMessage 
    PDUs are transmitted. 
     
-   Clients MUST NOT send abandon requests for the same operation 
+   Clients should not send abandon requests for the same operation 
    multiple times, and MUST also be prepared to receive results from 
    operations it has abandoned (since these may have been in transit 
    when the abandon was requested, or are not able to be abandoned). 
@@ -1730,8 +1790,13 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 29 \f
     
    The extended operation allows additional operations to be defined for 
    services not already available in the protocol. For example, to add 
-   operations to install transport layer security (see Section 4.13). 
+   operations to install transport layer security (see Section 4.14). 
     
+
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 31 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
    The extended operation allows clients to make requests and receive 
    responses with predefined syntaxes and semantics. These may be 
    defined in RFCs or be private to particular implementations.  
@@ -1739,10 +1804,6 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 29 \f
    Each extended operation consists of an extended request and an 
    extended response.  
     
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 30 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
         ExtendedRequest ::= [APPLICATION 23] SEQUENCE { 
              requestName      [0] LDAPOID, 
              requestValue     [1] OCTET STRING OPTIONAL } 
@@ -1752,7 +1813,7 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 30 \f
    information in a form defined by that request, encapsulated inside an 
    OCTET STRING. 
     
-   The server will respond to this with an LDAPMessage containing the 
+   The server will respond to this with an LDAPMessage containing an 
    ExtendedResponse. 
     
         ExtendedResponse ::= [APPLICATION 24] SEQUENCE { 
@@ -1778,8 +1839,8 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 30 \f
    Section 4. 
     
    It is RECOMMENDED that servers list the requestName of extended 
-   operations they support in the supportedExtension attribute [Models] 
-   of the root DSE
+   operations they support in the 'supportedExtension' attribute of the 
+   root DSE [Models]
     
    Extended operations may be specified in other documents. The 
    specification of an extended operation consists of: 
@@ -1788,58 +1849,161 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 30 \f
      responseName), 
     
    - the format of the contents of the requestValue and responseValue 
-     (if any), 
+     (if any), and 
     
-   - the semantics of the operation, 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 32 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
+   - the semantics of the operation. 
  
-    
-4.13. StartTLS Operation 
  
-
-
+4.13. IntermediateResponse Message 
+    
+   While the Search operation provides a mechanism to return multiple 
+   response messages for a single search request, other operations, by 
+   nature, do not provide for multiple response messages. 
+    
+   The IntermediateResponse message provides a general mechanism for 
+   defining single-request/multiple-response operations in LDAP. This 
+   message is intended to be used in conjunction with the extended 
+   operation to define new single-request/multiple-response operations 
+   or in conjunction with a control when extending existing LDAP 
+   operations in a way that requires them to return intermediate 
+   response information.  
+    
+   It is intended that the definitions and descriptions of extended 
+   operations and controls that make use of the IntermediateResponse 
+   message will define the circumstances when an IntermediateResponse 
+   message can be sent by a server and the associated meaning of an 
+   IntermediateResponse message sent in a particular circumstance. 
+   Similarly, it is intended that clients will explicitly solicit 
+   IntermediateResponse messages by issuing operations that specifically 
+   call for their return.  
+    
+        IntermediateResponse ::= [APPLICATION 25] SEQUENCE {  
+                responseName     [0] LDAPOID OPTIONAL,  
+                responseValue    [1] OCTET STRING OPTIONAL }  
+    
+   IntermediateResponse messages SHALL NOT be returned to the client 
+   unless the client issues a request that specifically solicits their 
+   return.  This document defines two forms of solicitation: extended 
+   operation and request control.  
+        
+   Although the responseName and responseValue are optional in some 
+   circumstances, generally speaking IntermediateResponse messages have 
+   a predefined responseName and a responseValue.  The value of the 
+   responseName (if present), the syntax of the responseValue (if 
+   present) and the semantics associated with a particular 
+   IntermediateResponse message MUST be specified in documents 
+   describing the extended operation or request control that uses them. 
+   Sections 4.13.1 and 4.13.2 describe additional requirements on the 
+   inclusion of responseName and responseValue in IntermediateResponse 
+   messages.  
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 31 \f
+4.13.1. Usage with LDAP ExtendedRequest and ExtendedResponse  
+     
+   A single-request/multiple-response operation may be defined using a 
+   single ExtendedRequest message to solicit zero or more 
+   IntermediateResponse messages of one or more kinds followed by an 
+   ExtendedResponse message.  
+     
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 33 \f
               Lightweight Directory Access Protocol Version 3 
                                       
+   An extended operation that defines the return of multiple kinds of 
+   IntermediateResponse messages MUST provide and document a mechanism 
+   for the client to distinguish the kind of IntermediateResponse 
+   message being sent.  This SHALL be accomplished by using different 
+   responseName values for each type of IntermediateResponse message 
+   associated with the extended operation or by including identifying 
+   information in the responseValue of each type of IntermediateResponse 
+   message associated with the extended operation.  
+  
+4.13.2. Usage with LDAP Request Controls  
+     
+   Any LDAP operation may be extended by the addition of one or more 
+   controls ([RFC2251] Section 4.1.12).  A control's semantics may 
+   include the return of zero or more IntermediateResponse messages 
+   prior to returning the final result code for the operation.  One or 
+   more kinds of IntermediateResponse messages may be sent in response 
+   to a request control. 
+    
+   All IntermediateResponse messages associated with request controls 
+   SHALL include a responseName.  This requirement ensures that the 
+   client can correctly identify the source of IntermediateResponse 
+   messages when: 
+    
+   - two or more controls using IntermediateResponse messages are 
+     included in a request for any LDAP operation or   
+        
+   - one or more controls using IntermediateResponse messages are 
+     included in a request with an LDAP extended operation that uses 
+     IntermediateResponse messages. 
+        
+   A request control that defines the return of multiple kinds of 
+   IntermediateResponse messages MUST provide and document a mechanism 
+   for the client to distinguish the kind of IntermediateResponse 
+   message being sent.  This SHALL be accomplished by using different 
+   responseName values for each type of IntermediateResponse message 
+   associated with the request control or by including identifying 
+   information in the responseValue of each type of IntermediateResponse 
+   message associated with the request control. 
+    
+    
+4.14. StartTLS Operation 
    The Start Transport Layer Security (StartTLS) operation provides the 
    ability to establish Transport Layer Security ([TLS]) on an LDAP 
    connection. The StartTLS operation is defined using the extended 
    operation mechanism described in Section 4.12. 
     
-4.13.1. StartTLS Request 
+    
+4.14.1. StartTLS Request 
  
    A client requests TLS establishment by transmitting a StartTLS 
    request PDU to the server. The StartTLS request is defined in terms 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 34 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
    of an ExtendedRequest. The requestName is "1.3.6.1.4.1.1466.20037", 
    and the requestValue field is always absent.  
     
    The client MUST NOT send any PDUs on this connection following this 
-   request until it receives a StartTLS extended response. 
+   request until it receives a StartTLS extended response and completes 
+   TLS negotiations. 
+    
     
-4.13.2. StartTLS Response 
+4.14.2. StartTLS Response 
  
    When a StartTLS request is made, servers supporting the operation 
-   MUST return a StartTLS response PDU to the requestor. The StartTLS 
-   response responseName is also "1.3.6.1.4.1.1466.20037", and th
-   response field is absent.  
+   MUST return a StartTLS response PDU to the requestor. The 
+   responseName is also "1.3.6.1.4.1.1466.20037", and the responseValu
+   field is absent.  
     
-   The server MUST set the resultCode field to either success or one of 
-   the other values outlined in Section 4.13.2.2. 
+   The server provides a resultCode field to either success or one of 
+   the other values outlined in Section 4.14.2.2. 
     
-4.13.2.1. "Success" Response 
+    
+4.14.2.1. "Success" Response 
  
-   If the StartTLS Response contains a result code of success, this 
+   If the StartTLS Response contains a resultCode of success, this 
    indicates that the server is willing and able to negotiate TLS. Refer 
-   to Section 5.3 of [AuthMeth] for details. 
+   to Section 4 of [AuthMeth] for details. 
+    
     
-4.13.2.2. Response other than "success" 
+4.14.2.2. Response other than "success" 
  
    If the ExtendedResponse contains a result code other than success, 
    this indicates that the server is unwilling or unable to negotiate 
    TLS. The following result codes have these meanings for this 
    operation: 
     
-   -  operationsError:  operations sequencing incorrect; e.g. TLS is 
+   - operationsError:  operations sequencing incorrect; e.g. TLS is 
                        already established. 
     
    - protocolError:    TLS is not supported or incorrect PDU structure. 
@@ -1849,31 +2013,34 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 31 \f
     
    The server MUST return operationsError if the client violates any of 
    the StartTLS extended operation sequencing requirements described in 
-   Section 5.3 of [AuthMeth]. 
+   Section 4 of [AuthMeth]. 
     
    If the server does not support TLS (whether by design or by current 
-   configuration), it MUST set the resultCode field to protocolError. 
-   The client's current association is unaffected if the server does not 
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 32 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
+   configuration), it MUST return the protocolError resultCode. The 
+   client's current association is unaffected if the server does not 
    support TLS. The client may proceed with any LDAP operation, or it 
    may close the connection. 
     
    The server MUST return unavailable if it supports TLS but cannot 
    establish a TLS connection for some reason, e.g. the certificate 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 35 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
    server not responding, it cannot contact its TLS implementation, or 
    if the server is in process of shutting down. The client may retry 
    the StartTLS operation, or it may proceed with any other LDAP 
    operation, or it may close the LDAP connection. 
  
-4.13.3. Closing a TLS Connection 
+4.14.3. Closing a TLS Connection 
  
    Two forms of TLS connection closure -- graceful and abrupt -- are 
-   supported. 
+   supported. These do not involve LDAP PDUs, but are preformed at the 
+   underlying layers. 
+    
     
-4.13.3.1. Graceful Closure 
+4.14.3.1. Graceful Closure 
  
    Either the client or server MAY terminate the TLS connection and 
    leave the LDAP connection intact by sending and receiving a TLS 
@@ -1888,9 +2055,9 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 32 \f
    the other peer it MAY send and receive LDAP PDUs. 
     
    When a protocol peer receives the initial TLS closure alert, it may 
-   choose to allow the underlying LDAP connection intact. In this case, 
-   it MUST immediately transmit a TLS closure alert. Following this, it 
-   MAY send and receive LDAP PDUs. 
+   choose to allow the underlying LDAP connection to remain intact. In 
+   this case, it MUST immediately transmit a TLS closure alert. 
+   Following this, it MAY send and receive LDAP PDUs. 
     
    Protocol peers MAY drop the underlying LDAP connection after sending 
    or receiving a TLS closure alert. 
@@ -1901,20 +2068,23 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 32 \f
    TLS connection is intact MUST wait for those message responses before 
    sending the TLS closure alert.  
     
-4.13.3.2. Abrupt Closure 
+    
+4.14.3.2. Abrupt Closure 
  
    Either the client or server MAY abruptly close the TLS connection by 
    dropping the underlying transfer protocol connection. In this 
    circumstance, a server MAY send the client a Notice of Disconnection 
-   before dropping the underlying LDAP connection. 
+   before dropping the underlying LDAP connection. Outstanding 
+   operations are handled as specified in Section 5.2. 
     
     
 5. Protocol Element Encodings and Transfer 
-    
+
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 33 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 36 \f
               Lightweight Directory Access Protocol Version 3 
                                       
+    
    One underlying service, LDAP over TCP, is defined here. This service 
    is generally applicable to applications providing or consuming X.500-
    based directory services on the Internet. 
@@ -1929,16 +2099,16 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 33 \f
    Basic Encoding Rules [BER] of [ASN.1] with the following 
    restrictions: 
     
-   (1) Only the definite form of length encoding is used. 
+   - Only the definite form of length encoding is used. 
     
-   (2) OCTET STRING values are encoded in the primitive form only. 
+   - OCTET STRING values are encoded in the primitive form only. 
     
-   (3) If the value of a BOOLEAN type is true, the encoding of th
-       value octet is set to hex "FF". 
+   - If the value of a BOOLEAN type is true, the encoding of the valu
+     octet is set to hex "FF". 
     
-   (4) If a value of a type is its default value, it is absent. Only 
-       some BOOLEAN and INTEGER types have default values in this 
-       protocol definition. 
+   - If a value of a type is its default value, it is absent. Only some 
+     BOOLEAN and INTEGER types have default values in this protocol 
+     definition. 
     
    These restrictions are meant to ease the overhead of encoding and 
    decoding certain elements in BER. 
@@ -1952,7 +2122,13 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 33 \f
     
    This protocol is designed to run over connection-oriented, reliable 
    transports, with all 8 bits in an octet being significant in the data 
-   stream. 
+   stream. Protocol operations are tied to a connection, thus if the 
+   connection is closed or dropped, the operation is aborted. When this 
+   happens, any outstanding operations on the server are, when possible, 
+   abandoned, and when not possible, completed without transmission of 
+   the response. Also, if the connection is closed or dropped, the 
+   client MUST NOT assume that any outstanding requests which modified 
+   the Directory have succeeded or failed. 
     
     
 5.2.1. Transmission Control Protocol (TCP) 
@@ -1960,7 +2136,12 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 33 \f
    The encoded LDAPMessage PDUs are mapped directly onto the [TCP] 
    bytestream using the BER-based encoding described in Section 5.1. It 
    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 Internet Assigned Numbers 
+   Authority (IANA)-assigned LDAP port, 389 [PortReg]. Servers may 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 37 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
    instead provide a listener on a different port number. Clients MUST 
    support contacting servers on any valid TCP port. 
     
@@ -1969,10 +2150,6 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 33 \f
     
    This version of the protocol provides facilities for simple 
    authentication using a cleartext password, as well as any [SASL] 
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 34 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
    mechanism. SASL allows for integrity and privacy services to be 
    negotiated. 
     
@@ -2003,9 +2180,8 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 34 \f
    modified, and take appropriate actions to prevent insecure side 
    effects. Likewise, server implementors should plan for the 
    possibility of an associated identity's credentials becoming invalid, 
-   or an identities privileges being changed. The way in which these 
-   issues are addressed are application 
-   and/or implementation specific. 
+   or an identity's privileges being changed. The ways in which these 
+   issues are addressed are application and/or implementation specific. 
     
    Implementations which cache attributes and entries obtained via LDAP 
    MUST ensure that access controls are maintained if that information 
@@ -2015,30 +2191,39 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 34 \f
    example, caches could serve result information only to the client 
    whose request caused it to be in the cache. 
     
-   Protocol servers may return referrals which redirect protocol clients 
-   to peer servers. It is possible for a rogue application to inject 
-   such referrals into the data stream in an attempt to redirect a 
-   client to a rogue server. Protocol clients are advised to be aware of 
-   this, and possibly reject referrals when confidentiality measures are 
-   not in place. Protocol clients are advised to reject referrals from 
-   the StartTLS operation. 
+   Servers may return referrals or search result references which 
+   redirect clients to peer servers. It is possible for a rogue 
+   application to inject such referrals into the data stream in an 
+   attempt to redirect a client to a rogue server. Clients are advised 
+   to be aware of this, and possibly reject referrals when 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 38 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
+   confidentiality measures are not in place. Clients are advised to 
+   reject referrals from the StartTLS operation. 
     
+   The matchedDN and diagnosticMessage fields, as well as some 
+   resultCode values (e.g., attributeOrValueExists and 
+   entryAlreadyExists), could disclose the presence the specific data in 
+   the directory which is subject to access and other administrative 
+   controls. Server implementations should restrict access to protected 
+   information equally under both normal and error conditions. 
    Protocol peers MUST be prepared to handle invalid and arbitrary 
    length protocol encodings. A number of LDAP security advisories are 
    available through [CERT]. 
     
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 35 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
     
 7. Acknowledgements 
     
-   This document updates RFC 2251 by Mark Wahl, Tim Howes, and Steve 
-   Kille. It also updates RFC 2830 by Jeff Hodges, RL "Bob" Morgan, and 
-   Mark Wahl. Their work along with the input of individuals of the IETF 
-   ASID, LDAPEXT, LDUP, LDAPBIS, and other Working Groups is gratefully 
-   acknowledged. 
+   This document is based on RFC 2251 by Mark Wahl, Tim Howes, and Steve 
+   Kille. It is also based on RFC 2830 by Jeff Hodges, RL "Bob" Morgan, 
+   and Mark Wahl. It is also based on [LIMR] by Roger Harrison, and Kurt 
+   Zeilenga. Notable amounts of technical reviews and content were 
+   provided by Kurt Zeilenga, Steven Legg, and Hallvard Furuseth. Their 
+   work along with the input of individuals of the IETF ASID, LDAPEXT, 
+   LDUP, LDAPBIS, and other Working Groups is gratefully acknowledged. 
     
     
 8. Normative References 
@@ -2051,7 +2236,7 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 35 \f
              (ASN.1): Specification of basic notation" 
     
    [AuthMeth] Harrison, R., "LDAP: Authentication Methods and Connection 
-             Level Security Mechanisms ", draft-ietf-ldapbis-authmeth-
+             Level Security Mechanisms", draft-ietf-ldapbis-authmeth-
              xx.txt, (a work in progress). 
     
    [BER]     ITU-T Rec. X.690 (07/2002) | ISO/IEC 8825-1:2002, 
@@ -2069,6 +2254,10 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 35 \f
      
    [Keyword] Bradner, S., "Key words for use in RFCs to Indicate 
              Requirement Levels", RFC 2119, March 1997. 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 39 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
      
    [LDAPDN]  Zeilenga, K., "LDAP: String Representation of 
              Distinguished Names", draft-ietf-ldapbis-dn-xx.txt, (a 
@@ -2080,15 +2269,16 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 35 \f
    [LDAPURL] Smith, M., "LDAP: Uniform Resource Locator", draft-ietf-
              ldapbis-url-xx.txt, (a work in progress). 
     
+   [LIMR]    Harrison, R., and K. Zeilenga, "The Lightweight Directory 
+             Access Protocol (LDAP) Intermediate Response Message", 
+             draft-rharrison-ldap-intermediate-resp-xx.txt (a work in 
+             progress). 
+    
    [Models]  Zeilenga, K., "LDAP: Directory Information Models", draft-
              ietf-ldapbis-models-xx.txt (a work in progress). 
     
    [Roadmap] Zeilenga, K., "LDAP: Technical Specification Road Map", 
              draft-ietf-ldapbis-roadmap-xx.txt (a work in progress). 
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 36 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
     
    [SASL]    Melnikov, A., "Simple Authentication and Security Layer", 
              draft-ietf-sasl-rfc2222bis-xx.txt (a work in progress). 
@@ -2119,12 +2309,16 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 36 \f
              "Unicode Standard Annex #28: Unicode 3.2" 
              (http://www.unicode.org/reports/tr28/). 
     
-   [URI]     Berners-Lee, T., Fielding, R., and L. Masinter Uniform 
+   [URI]     Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform 
              Resource Identifiers (URI): Generic Syntax", RFC 2396, 
              August 1998. 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 40 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
     
-   [UTF-8]   Yergeau, F., "UTF-8, a transformation format of Unicode 
-             and ISO 10646", STD63 and RFC3629
+   [UTF-8]   Yergeau, F., "UTF-8, a transformation format of ISO 
+             10646", STD63 and RFC3629, November 2003
     
    [X.500]   ITU-T Rec. X.500, "The Directory: Overview of Concepts, 
              Models and Service", 1993. 
@@ -2137,19 +2331,27 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 36 \f
     
 9. Informative References 
     
-   [CERT]    the CERT(R) Center, (http://www.cert.org) 
+   [CERT]    The CERT(R) Center, http://www.cert.org 
+    
+   [PortReg] IANA, "Port Numbers", 
+             http://www.iana.org/assignments/port-numbers 
  
 10. IANA Considerations 
     
-
-
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 37 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
    It is requested that the Internet Assigned Numbers Authority (IANA) 
-   update the occurrence of "RFC XXXX" in Appendix B with this RFC 
-   number at publication. 
+   update the LDAP result code registry to indicate that this document 
+   provides the definitive technical specification for result codes 0-
+   36, 48-54, 64-70, 80-90. 
+    
+   It is requested that the IANA update the LDAP Protocol Mechanism 
+   registry to indicate that this document and [AuthMeth] provides the 
+   definitive technical specification for the Start TLS 
+   (1.3.6.1.4.1.1466.20037) extended operation. 
+    
+   It is requested that the IANA update the occurrence of "RFC XXXX" in 
+   Appendix B with this RFC number at publication. 
  
 11. Editor's Address 
     
@@ -2168,53 +2370,21 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 37 \f
 
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 38 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 41 \f
               Lightweight Directory Access Protocol Version 3 
                                       
 Appendix A - LDAP Result Codes 
  
    This normative appendix details additional considerations regarding 
    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.9
     
    Additional result codes MAY be defined for use with extensions 
    [LDAPIANA]. Client implementations SHALL treat any result code which 
    they do not recognize as an unknown error condition. 
     
+    
 A.1 Non-Error Result Codes 
     
    These result codes (called "non-error" result codes) do not indicate 
@@ -2225,12 +2395,12 @@ A.1 Non-Error Result Codes
         referral (10), and 
         saslBindInProgress (14). 
     
-   The success, compareTrue, and compare result codes indicate 
+   The success, compareTrue, and compareFalse result codes indicate 
    successful completion (and, hence, are referred to as "successful" 
    result codes). 
     
    The referral and saslBindInProgress result codes indicate the client 
-   is required to take additional action to complete the operation 
+   is required to take additional action to complete the operation. 
     
     
 A.2 Result Codes 
@@ -2247,8 +2417,8 @@ A.2 Result Codes
            relation to other operations (of same or different type). 
  
            For example, this code is returned if the client attempts to 
-           StartTLS [RFC2246] while there are other operations 
-           outstanding or if TLS was already established. 
+           StartTLS [TLS] while there are other operations outstanding 
+           or if TLS was already established. 
  
         protocolError (2) 
            Indicates the server received data which has incorrect 
@@ -2258,11 +2428,11 @@ A.2 Result Codes
            that the server does not support the requested protocol 
            version. 
             
-        timeLimitExceeded (3) 
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 39 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 42 \f
               Lightweight Directory Access Protocol Version 3 
                                       
+        timeLimitExceeded (3) 
            Indicates that the time limit specified by the client was 
            exceeded before the operation could be completed. 
  
@@ -2291,14 +2461,14 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 39 \f
          
         referral (10) 
            Indicates that a referral needs to be chased to complete the 
-           operation (see Section 4.1.11). 
+           operation (see Section 4.1.10). 
          
         adminLimitExceeded (11) 
            Indicates that an administrative limit has been exceeded. 
          
         unavailableCriticalExtension (12) 
            Indicates that the server is unable or unwilling to perform a 
-           critical extension (see Section 4.1.12). 
+           critical control (see Section 4.1.11). 
          
         confidentialityRequired (13) 
            Indicates that data confidentiality protections are required. 
@@ -2316,13 +2486,14 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 39 \f
            Indicates that a request field contains an unrecognized 
            attribute description. 
          
-        inappropriateMatching (18) 
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 40 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 43 \f
               Lightweight Directory Access Protocol Version 3 
                                       
-           Indicates that an attempt was made, e.g. in a filter, to use 
-           a matching rule not defined for the attribute type concerned. 
+        inappropriateMatching (18) 
+           Indicates that an attempt was made, e.g. in an assertion, to 
+           use a matching rule not defined for the attribute type 
+           concerned. 
          
         constraintViolation (19) 
            Indicates that the client supplied an attribute value which 
@@ -2373,12 +2544,12 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 40 \f
         insufficientAccessRights (50) 
            Indicates that the client does not have sufficient access 
            rights to perform the operation. 
-         
-        busy (51) 
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 41 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 44 \f
               Lightweight Directory Access Protocol Version 3 
                                       
+         
+        busy (51) 
            Indicates that the server is too busy to service the 
            operation. 
          
@@ -2391,7 +2562,8 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 41 \f
            operation. 
          
         loopDetect (54) 
-           Indicates that the server has detected an internal loop. 
+           Indicates that the server has detected an internal loop (e.g. 
+           while dereferencing aliases or chaining an operation). 
          
         namingViolation (64) 
            Indicates that the entry's name violates naming restrictions. 
@@ -2414,7 +2586,7 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 41 \f
          
         objectClassModsProhibited (69) 
            Indicates that an attempt to modify the object class(es) of 
-           an entry's objectClass attribute is prohibited. 
+           an entry's 'objectClass' attribute is prohibited. 
          
            For example, this code is returned when a client attempts to 
            modify the structural object class of an entry. 
@@ -2430,11 +2602,8 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 41 \f
 
 
 
-
-
-
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 42 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 45 \f
               Lightweight Directory Access Protocol Version 3 
                                       
 Appendix B - Complete ASN.1 Definition 
@@ -2454,26 +2623,27 @@ Appendix B - Complete ASN.1 Definition
         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, 
+                  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, 
+                  intermediateResponse  IntermediateResponse  
                   ... }, 
              controls       [0] Controls OPTIONAL } 
     
@@ -2486,15 +2656,17 @@ Appendix B - Complete ASN.1 Definition
     
         LDAPOID ::= OCTET STRING -- Constrained to <numericoid> [Models] 
     
-        LDAPDN ::= LDAPString 
-    
-        RelativeLDAPDN ::= LDAPString 
+        LDAPDN ::= LDAPString -- Constrained to <distinguishedName> 
+                              -- [LDAPDN] 
     
-        AttributeDescription ::= LDAPString 
+        RelativeLDAPDN ::= LDAPString -- Constrained to <name-component> 
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 43 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 46 \f
               Lightweight Directory Access Protocol Version 3 
                                       
+                                      -- [LDAPDN] 
+    
+        AttributeDescription ::= LDAPString 
                                 -- Constrained to <attributedescription> 
                                 -- [Models] 
     
@@ -2546,13 +2718,13 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 43 \f
                        -- 35 reserved for undefined isLeaf -- 
                   aliasDereferencingProblem    (36), 
                        -- 37-47 unused -- 
-                  inappropriateAuthentication  (48), 
-                  invalidCredentials           (49), 
-                  insufficientAccessRights     (50), 
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 44 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 47 \f
               Lightweight Directory Access Protocol Version 3 
                                       
+                  inappropriateAuthentication  (48), 
+                  invalidCredentials           (49), 
+                  insufficientAccessRights     (50), 
                   busy                         (51), 
                   unavailable                  (52), 
                   unwillingToPerform           (53), 
@@ -2569,7 +2741,6 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 44 \f
                        -- 72-79 unused -- 
                   other                        (80), 
                   ... }, 
-                       -- 81-90 reserved for APIs -- 
              matchedDN          LDAPDN, 
              diagnosticMessage  LDAPString, 
              referral           [3] Referral OPTIONAL } 
@@ -2605,12 +2776,12 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 44 \f
              COMPONENTS OF LDAPResult, 
              serverSaslCreds    [7] OCTET STRING OPTIONAL } 
     
-        UnbindRequest ::= [APPLICATION 2] NULL 
-    
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 45 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 48 \f
               Lightweight Directory Access Protocol Version 3 
                                       
+        UnbindRequest ::= [APPLICATION 2] NULL 
+    
         SearchRequest ::= [APPLICATION 3] SEQUENCE { 
              baseObject      LDAPDN, 
              scope           ENUMERATED { 
@@ -2629,6 +2800,8 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 45 \f
              attributes      AttributeSelection } 
     
         AttributeSelection ::= SEQUENCE OF selection LDAPString 
+                               -- constrained to <attributeSelection>  
+                               -- in section 4.5.1. 
     
         Filter ::= CHOICE { 
              and             [0] SET SIZE (1..MAX) OF filter Filter, 
@@ -2661,14 +2834,14 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 45 \f
              objectName      LDAPDN, 
              attributes      PartialAttributeList } 
     
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 49 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
         PartialAttributeList ::= SEQUENCE OF  
                              partialAttribute PartialAttribute   
     
         SearchResultReference ::= [APPLICATION 19] SEQUENCE  
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 46 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
                                   SIZE (1..MAX) OF uri URI 
     
         SearchResultDone ::= [APPLICATION 5] LDAPResult 
@@ -2719,12 +2892,66 @@ Sermersheim       Internet-Draft - Expires Jun 2004              Page 46 \f
         ExtendedResponse ::= [APPLICATION 24] SEQUENCE { 
              COMPONENTS OF LDAPResult, 
              responseName     [10] LDAPOID OPTIONAL, 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 50 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
              responseValue    [11] OCTET STRING OPTIONAL } 
     
         END 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 47 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 51 \f
               Lightweight Directory Access Protocol Version 3 
                                       
 Appendix C - Changes 
@@ -2763,7 +2990,7 @@ C.1.3 Section 4
    - Clarified where the extensibility features of ASN.1 apply to the 
      protocol. This change also affected various ASN.1 types. 
    - Removed the requirement that servers which implement version 3 or 
-     later MUST provide the supportedLDAPVersion attribute. This 
+     later MUST provide the 'supportedLDAPVersion' attribute. This 
      statement provided no interoperability advantages. 
  
  
@@ -2782,7 +3009,7 @@ C.1.5 Section 4.1.1.1
 
 
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 48 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 52 \f
               Lightweight Directory Access Protocol Version 3 
                                       
    - Clarified when it is and isn't appropriate to return an already 
@@ -2840,7 +3067,7 @@ C.1.12 Section 4.1.11
    - Clarified the instructions for using LDAPURLs in referrals, and in 
      doing so added a recommendation that the scope part be present. 
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 49 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 53 \f
               Lightweight Directory Access Protocol Version 3 
                                       
  
@@ -2849,6 +3076,9 @@ C.1.13 Section 4.1.12
  
    - Specified how control values defined in terms of ASN.1 are to be 
      encoded. 
+   - Noted that the criticality field is only applied to request 
+     messages (except unbindRequest), and must be ignored when present 
+     on response messages and unbindRequest. 
    - Added language regarding combinations of controls on a message. 
    - Changed "The server MUST be prepared" to "Implementations MUST be 
      prepared" in the eighth paragraph to reflect that both client and 
@@ -2864,7 +3094,7 @@ C.1.14 Section 4.2
      name is empty and the password is non-empty. 
    - Required servers to not dereference aliases for bind. This was 
      added for consistency with other operations and to help ensure 
-     data consistency 
+     data consistency. 
    - Required that textual passwords be transferred as UTF-8 encoded 
      Unicode, and added recommendations on string preparation. This was 
      to help ensure interoperability of passwords being sent from 
@@ -2892,15 +3122,17 @@ C.1.15 Section 4.2.1
     
 C.1.16 Section 4.2.3 
  
+
+
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 54 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
    - Moved most error-related text to Appendix A, and added text 
      regarding certain errors used in conjunction with the bind 
      operation. 
    - Prohibited the server from specifying serverSaslCreds when not 
      appropriate. 
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 50 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
     
     
 C.1.17 Section 4.3 
@@ -2918,11 +3150,19 @@ C.1.18 Section 4.4
 C.1.19 Section 4.5.1 
  
    - SearchRequest attributes is now defined as an AttributeSelection 
-     type rather than AttributeDescriptionList. 
+     type rather than AttributeDescriptionList, and an ABNF is 
+     provided. 
+   - SearchRequest attributes may contain duplicate attribute 
+     descriptions. This was previously prohibited. Now servers are 
+     instructed to ignore subsequent names when they are duplicated. 
+     This was relaxed in order to allow different short names and also 
+     OIDs to be requested for an attribute. 
    - The Filter choices 'and' and 'or', and the SubstringFilter 
      substrings types are now defined with a lower bound of 1. 
    - The SubstringFilter substrings 'initial, 'any', and 'final' types 
-     are now AssertionValue rather than LDAPString. 
+     are now AssertionValue rather than LDAPString. Also, added 
+     imperatives stating that 'initial' (if present) must be listed 
+     first, and 'final' (if present) must be listed last. 
    - Clarified the semantics of the derefAliases choices. 
    - Added instructions for equalityMatch, substrings, greaterOrEqual, 
      lessOrEqual, and approxMatch. 
@@ -2942,53 +3182,68 @@ C.1.21 Section 4.5.3
     
     
 C.1.22 Section 4.5.3.1 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 55 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
  
    - Fixed examples to adhere to changes made to Section 4.5.3. 
     
     
 C.1.23 Section 4.6 
  
-   - Removed restriction that required an equality match filter in 
+   - Removed restriction that required an EQUALITY matching rule in 
      order to perform value delete modifications. It is sufficiently 
      documented that in absence of an equality matching rule, octet 
      equality is used. 
    - Replaced AttributeTypeAndValues with Attribute as they are 
      equivalent. 
-
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 51 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
    - Clarified what type of modification changes might temporarily 
      violate schema. 
     
     
-C.1.24 Section 4.9 
+C.1.24 Section 4.7 
+   - Aligned Add operation with X.511 in that the attributes of the RDN 
+     are used in conjunction with the listed attributes to create the 
+     entry. Previously, Add required that the distinguished values be 
+     present in the listed attributes. 
+    
+    
+C.1.25 Section 4.9 
  
    - Required servers to not dereference aliases for modify DN. This 
      was added for consistency with other operations and to help ensure 
      data consistency. 
    - Allow modify DN to fail when moving between naming contexts. 
+   - Specified what happens when the attributes of the newrdn are no 
+     present on the entry. 
  
  
-C.1.25 Section 4.10 
+C.1.26 Section 4.10 
  
    - Clarified the semantics of Compare when the attribute is not 
      present and when it is unknown. 
+   - Clarified that an Undefined compare results in a compareFalse 
+     resultCode. 
    - Required servers to not dereference aliases for compare. This was 
      added for consistency with other operations and to help ensure 
      data consistency. 
     
     
-C.1.26 Section 4.11 
+C.1.27 Section 4.11 
  
-   - Explained that since abandon returns no response, clients hould 
+   - Explained that since abandon returns no response, clients should 
      not use it if they need to know the outcome. 
    - Specified that Abandon and Unbind cannot be abandoned.  
     
  
-C.1.27 Section 4.12 
+C.1.28 Section 4.12 
  
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 56 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
    - Specified how values of extended operations defined in terms of 
      ASN.1 are to be encoded. 
    - Added instructions on what extended operation specifications 
@@ -2997,13 +3252,13 @@ C.1.27 Section 4.12
      operations. 
  
  
-C.1.28 Section 5.2 
+C.1.29 Section 5.2 
  
    - Moved referral-specific instructions into referral-related 
      sections. 
  
  
-C.1.29 Section 7 
+C.1.30 Section 7 
  
    - Reworded notes regarding SASL not protecting certain aspects of 
      the LDAP bind PDU. 
@@ -3012,17 +3267,15 @@ C.1.29 Section 7
      [AuthMeth].  
    - Added a note regarding the scenario where an identity is changed 
      (deleted, privileges or credentials modified, etc.). 
-
-  
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 52 \f
-              Lightweight Directory Access Protocol Version 3 
-                                      
    - Warned against following referrals that may have been injected in 
      the data stream. 
+   - Noted that servers should protect information equally, whether in 
+     an error condition or not, and mentioned specifically; matchedDN, 
+     diagnosticMessage, and resultCodes.  
    - Added a note regarding malformed and long encodings. 
  
  
-C.1.30 Appendix A 
+C.1.31 Appendix A 
  
    - Added "EXTESIBILITY IMPLIED" to ASN.1 definition. 
    - Removed AttributeType. It is not used. 
@@ -3039,15 +3292,47 @@ C.2.1 Section 2.3
  
    - Removed wording indicating that referrals can be returned from 
      StartTLS 
+   - Removed requirement that only a narrow set of result codes can be 
+     returned. Some result codes are required in certain scenarios, but 
+     any other may be returned if appropriate. 
     
     
 C.2.1 Section 4.13.3.1 
+  
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 57 \f
+              Lightweight Directory Access Protocol Version 3 
+                                      
     
    - Reworded most of this section and added the requirement that after 
      the TLS connection has been closed, the server MUST NOT send 
      responses to any request message received before the TLS closure. 
     
  
+C.3 Changes made to made to [LIMR]: 
+    
+   -    In general, all technical language was transferred in whole. 
+   Supporting and background language seen as redundant due to its 
+   presence in this document was omitted. 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 
@@ -3072,7 +3357,7 @@ C.2.1 Section 4.13.3.1
 
 
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 53 \f
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 58 \f
               Lightweight Directory Access Protocol Version 3 
                                       
 Intellectual Property Rights 
@@ -3096,8 +3381,8 @@ Intellectual Property Rights
    rights which may cover technology that may be required to practice 
    this standard.  Please address the information to the IETF Executive 
    Director. 
+    
  
-
 Full Copyright Statement 
     
    Copyright (C) The Internet Society (2003). All Rights Reserved. 
@@ -3130,5 +3415,4 @@ Full Copyright Statement
 
 
   
-Sermersheim       Internet-Draft - Expires Jun 2004              Page 54 \f
-
+Sermersheim       Internet-Draft - Expires Aug 2004              Page 59 \f
\ No newline at end of file
index 7f7ca7320e1c9b0f5d1946b33fadd15e4bf2baaf..da5dfb5bb2baeedad9b0a717b333b89a9ad4026f 100644 (file)
@@ -6,13 +6,14 @@
 
 INTERNET-DRAFT                              Editor: Kurt D. Zeilenga
 Intended Category: Standard Track                OpenLDAP Foundation
-Expires in six months                                   30 June 2003
+Expires in six months                               15 February 2004
 Obsoletes: RFC 2251-2256, 2829-2830, 3377
 
 
 
-                  LDAP: Technical Specification Road Map
-                   <draft-ietf-ldapbis-roadmap-03.txt>
+              Lightweight Directory Access Protocol (LDAP):
+                     Technical Specification Road Map
+                   <draft-ietf-ldapbis-roadmap-04.txt>
 
 
 Status of this Memo
@@ -39,7 +40,7 @@ Status of this Memo
   Internet-Draft Shadow Directories can be accessed at
   <http://www.ietf.org/shadow.html>.
 
-  Copyright (C) The Internet Society (2003).  All Rights Reserved.
+  Copyright (C) The Internet Society (2004).  All Rights Reserved.
 
   Please see the Full Copyright section near the end of this document
   for more information.
@@ -54,10 +55,9 @@ Abstract
 
 
 
-
 Zeilenga                    LDAP: TS Road Map                   [Page 1]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-03         30 June 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-04     15 February 2004
 
 
 Conventions
@@ -73,8 +73,8 @@ Conventions
   Directory Access Protocol (LDAP), an Internet Protocol, consists of
   this document and the following documents:
 
-      LDAP: Directory Information Models [Models],
       LDAP: The Protocol [Protocol],
+      LDAP: Directory Information Models [Models],
       LDAP: Authentication Methods and Connection Level Security
             Mechanisms [AuthMeth],
       LDAP: String Representation of Distinguished Names [LDAPDN],
@@ -113,7 +113,7 @@ Conventions
 
 Zeilenga                    LDAP: TS Road Map                   [Page 2]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-03         30 June 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-04     15 February 2004
 
 
   This technical specification explicitly incorporates portions of
@@ -130,7 +130,7 @@ INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-03         30 June 2003
 
   This technical specification, as defined in Section 1, obsoletes
   entirely the previously defined LDAP technical specification [RFC3377]
-  (which consists of RFC 2251-2256, RFC 2829-2830 and [RFC3377] itself).
+  (which consists of RFC 2251-2256, RFC 2829-2830 and RFC 3377 itself).
   The technical specification was significantly reorganized.
 
   This document replaces RFC 3377 as well as Section 3.3 of RFC 2251.
@@ -149,6 +149,11 @@ INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-03         30 June 2003
   A.1 of this document details changes made to RFC 3377.  Appendix A.2
   of this document details changes made to Section 3.3 of RFC 2251.
 
+  Additionally, portions of this technical specification update and/or
+  replace documents not listed above.  These relationships are discussed
+  in the documents detailings these portions of this technical
+  specification.
+
 
 5. Acknowledgments
 
@@ -160,16 +165,17 @@ INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-03         30 June 2003
   This document is a product of the IETF LDAPBIS Working Group.
 
 
-6. Author's Address
-
-  Kurt Zeilenga
-  E-mail: <kurt@openldap.org>
-
 
 
 Zeilenga                    LDAP: TS Road Map                   [Page 3]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-03         30 June 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-04     15 February 2004
+
+
+6. Author's Address
+
+  Kurt Zeilenga
+  E-mail: <kurt@openldap.org>
 
 
 7. References
@@ -182,13 +188,13 @@ INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-03         30 June 2003
   [BCP64bis]    Zeilenga, K., "IANA Considerations for LDAP", draft-
                 ietf-ldapbis-bcp64-xx.txt, a work in progress.
 
+  [Protocol]    Sermersheim, J. (editor), "LDAP: The Protocol",
+                draft-ietf-ldapbis-protocol-xx.txt, a work in progress.
+
   [Models]      Zeilenga, K. (editor), "LDAP: Directory Information
                 Models", draft-ietf-ldapbis-models-xx.txt, a work in
                 progress.
 
-  [Protocol]    Sermersheim, J. (editor), "LDAP: The Protocol",
-                draft-ietf-ldapbis-protocol-xx.txt, a work in progress.
-
   [AuthMeth]    Harrison, R. (editor), "LDAP: Authentication Methods and
                 Connection Level Security Mechanisms",
                 draft-ietf-ldapbis-authmeth-xx.txt, a work in progress.
@@ -208,25 +214,24 @@ INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-03         30 June 2003
                 draft-ietf-ldapbis-syntaxes-xx.txt, a work in progress.
 
   [LDAPprep]    Zeilenga, K., "LDAP: Internationalized String
-                Preparation", draft-ietf-ldapbis-strpro-xx.txt, a work
+                Preparation", draft-ietf-ldapbis-strprep-xx.txt, a work
                 in progress.
 
   [Schema]      Dally, K. (editor), "LDAP: User Schema",
                 draft-ietf-ldapbis-user-schema-xx.txt, a work in
                 progress.
 
-  [X.500]       International Telecommunication Union -
-                Telecommunication Standardization Sector, "The Directory
-                -- Overview of concepts, models and services,"
-                X.500(1993) (also ISO/IEC 9594-1:1994).
-
-
 
 
 Zeilenga                    LDAP: TS Road Map                   [Page 4]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-03         30 June 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-04     15 February 2004
+
 
+  [X.500]       International Telecommunication Union -
+                Telecommunication Standardization Sector, "The Directory
+                -- Overview of concepts, models and services,"
+                X.500(1993) (also ISO/IEC 9594-1:1994).
 
   [X.501]       International Telecommunication Union -
                 Telecommunication Standardization Sector, "The Directory
@@ -271,19 +276,19 @@ Intellectual Property Rights
   to the implementation or use of the technology described in this
   document or the extent to which any license under such rights might or
   might not be available; neither does it represent that it has made any
-  effort to identify any such rights.  Information on the IETF's
-  procedures with respect to rights in standards-track and
-  standards-related documentation can be found in BCP-11.  Copies of
-  claims of rights made available for publication and any assurances of
-  licenses to be made available, or the result of an attempt made to
 
 
 
 Zeilenga                    LDAP: TS Road Map                   [Page 5]
 \f
-INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-03         30 June 2003
+INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-04     15 February 2004
 
 
+  effort to identify any such rights.  Information on the IETF's
+  procedures with respect to rights in standards-track and
+  standards-related documentation can be found in BCP-11.  Copies of
+  claims of rights made available for publication and any assurances of
+  licenses to be made available, or the result of an attempt made to
   obtain a general license or permission for the use of such proprietary
   rights by implementors or users of this specification can be obtained
   from the IETF Secretariat.
@@ -298,11 +303,11 @@ INTERNET-DRAFT        draft-ietf-ldapbis-roadmap-03         30 June 2003
 
 Full Copyright
 
-  Copyright (C) The Internet Society (2003). All Rights Reserved.
+  Copyright (C) The Internet Society (2004). 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 implmentation may be prepared, copied, published and
+  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
@@ -327,11 +332,6 @@ Full Copyright
 
 
 
-
-
-
-
-
 
 
 
index b57552781a47b38fc21dd31c4edc3560c7155f3c..1396ef52e57bc890a762f57f3364a556791e6f1c 100644 (file)
@@ -6,12 +6,12 @@
 
 Internet-Draft                                      Kurt D. Zeilenga
 Intended Category: Standard Track                OpenLDAP Foundation
-Expires in six months                                27 October 2003
+Expires in six months                               15 February 2004
 
 
 
                 LDAP: Internationalized String Preparation
-                   <draft-ietf-ldapbis-strprep-02.txt>
+                   <draft-ietf-ldapbis-strprep-03.txt>
 
 
 Status of this Memo
@@ -37,7 +37,7 @@ Status of this Memo
   Internet-Draft Shadow Directories can be accessed at
   <http://www.ietf.org/shadow.html>.
 
-  Copyright (C) The Internet Society (2003).  All Rights Reserved.
+  Copyright (C) The Internet Society (2004).  All Rights Reserved.
 
   Please see the Full Copyright section near the end of this document
   for more information.
@@ -47,7 +47,7 @@ Abstract
 
   The previous Lightweight Directory Access Protocol (LDAP) technical
   specifications did not precisely define how character string matching
-  is to be performed.  This lead to a number of usability and
+  is to be performed.  This led to a number of usability and
   interoperability problems.  This document defines string preparation
   algorithms for character-based matching rules defined for use in LDAP.
 
@@ -57,7 +57,7 @@ Abstract
 
 Zeilenga                        LDAPprep                        [Page 1]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
 
 
 Conventions
@@ -106,21 +106,21 @@ Conventions
   "X.520: Selected attribute types" [X.520] provides (amongst other
   things) value syntaxes and matching rules for comparing values
   commonly used in the Directory.  These specifications are inadequate
-  for strings composed of characters from the Universal Character Set
-  (UCS) [ISO10646], a superset of Unicode [Unicode].
+  for strings composed of Unicode [Unicode] characters.
+
 
 
 
 Zeilenga                        LDAPprep                        [Page 2]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
 
 
   The caseIgnoreMatch matching rule [X.520], for example, is simply
   defined as being a case insensitive comparison where insignificant
   spaces are ignored.  For printableString, there is only one space
   character and case mapping is bijective, hence this definition is
-  sufficient.  However, for UCS-based string types such as
+  sufficient.  However, for Unicode string types such as
   universalString, this is not sufficient.  For example, a case
   insensitive matching implementation which folded lower case characters
   to upper case would yield different different results than an
@@ -169,7 +169,7 @@ Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
 
 Zeilenga                        LDAPprep                        [Page 3]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
 
 
       6) Insignificant Character Removal
@@ -225,7 +225,7 @@ Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
 
 Zeilenga                        LDAPprep                        [Page 4]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
 
 
 2.1. Transcode
@@ -263,6 +263,8 @@ Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
   with Separator (space, line, or paragraph) property (e.g, Zs, Zl, or
   Zp) are mapped to SPACE (U+0020).
 
+  Appendix B provides a table detailing the above mappings.
+
   For case ignore, numeric, and stored prefix string matching rules,
   characters are case folded per B.2 of [StringPrep].
 
@@ -277,11 +279,9 @@ Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
 
 
 
-
-
 Zeilenga                        LDAPprep                        [Page 5]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
 
 
 2.4. Prohibit
@@ -289,6 +289,10 @@ Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
   All Unassigned code points are prohibited.  Unassigned code points are
   listed in Table A.1 of [StringPrep].
 
+  Characters which, per Section 5.8 of [Stringprep], change display
+  properties or are deprecated are prohibited.  These characters are are
+  listed in Table C.8 of [StringPrep].
+
   Private Use (U+E000-F8FF, F0000-FFFFD, 100000-10FFFD) code points are
   prohibited.
 
@@ -302,44 +306,41 @@ Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
 
   The REPLACEMENT CHARACTER (U+FFFD) code point is prohibited.
 
-  The first code point of a string is prohibited from being a combining
-  character.
-
   The step fails if the input string contains any prohibited code point.
-  The output is the input string.
+  Otherwise, the output is the input string.
 
 
 2.5. Check bidi
 
-  There are no bidirectional restrictions.  The output is the input
-  string.
+  This step fails if the input string does not conform to the the
+  bidirectional character restrictions detailed in 6 of [Stringprep].
+  Otherwise, the output is the input string.
 
 
-2.5. Insignificant Character Removal
+2.6. Insignificant Character Removal
 
   In this step, characters insignificant to the matching rule are to be
   removed.  The characters to be removed differ from matching rule to
   matching rule.
 
-  Section 2.5.1 applies to case ignore and exact string matching.
-  Section 2.5.2 applies to numericString matching.
-  Section 2.5.3 applies to telephoneNumber matching
+  Section 2.6.1 applies to case ignore and exact string matching.
+  Section 2.6.2 applies to numericString matching.
+  Section 2.6.3 applies to telephoneNumber matching.
 
 
-2.5.1. Insignificant Space Removal
+2.6.1. Insignificant Space Removal
 
   For the purposes of this section, a space is defined to be the SPACE
   (U+0020) code point followed by no combining marks.
 
-  NOTE - The previous steps ensure that the string cannot contain any
-
 
 
 Zeilenga                        LDAPprep                        [Page 6]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
 
 
+  NOTE - The previous steps ensure that the string cannot contain any
          code points in the separator class, other than SPACE (U+0020).
 
   If the input string consists entirely of spaces or is empty, the
@@ -363,7 +364,7 @@ Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
       "<SPACE>".
 
 
-2.5.2. numericString Insignificant Character Removal
+2.6.2. numericString Insignificant Character Removal
 
   For the purposes of this section, a space is defined to be the SPACE
   (U+0020) code point followed by no combining marks.
@@ -383,19 +384,19 @@ Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
       "<SPACE>".
 
 
-2.5.3. telephoneNumber Insignificant Character Removal
+2.6.3. telephoneNumber Insignificant Character Removal
 
   For the purposes of this section, a hyphen is defined to be
   HYPHEN-MINUS (U+002D), ARMENIAN HYPHEN (U+058A), HYPHEN (U+2010),
-  NON-BREAKING HYPHEN (U+2011), MINUS SIGN (U+2212), SMALL HYPHEN-MINUS
 
 
 
 Zeilenga                        LDAPprep                        [Page 7]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
 
 
+  NON-BREAKING HYPHEN (U+2011), MINUS SIGN (U+2212), SMALL HYPHEN-MINUS
   (U+FE63), or FULLWIDTH HYPHEN-MINUS (U+FF0D) code point followed by no
   combining marks and a space is defined to be the SPACE (U+0020) code
   point followed by no combining marks.
@@ -443,16 +444,18 @@ Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
 
 6. Author's Address
 
-  Kurt Zeilenga
 
 
 
 Zeilenga                        LDAPprep                        [Page 8]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
+
 
+  Kurt D. Zeilenga
+  OpenLDAP Foundation
 
-  E-mail: <kurt@openldap.org>
+  Email: Kurt@OpenLDAP.org
 
 
 7. References
@@ -473,11 +476,6 @@ Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
   [Syntaxes]    Legg, S. (editor), "LDAP: Syntaxes and Matching Rules",
                 draft-ietf-ldapbis-syntaxes-xx.txt, a work in progress.
 
-  [ISO10646]    International Organization for Standardization,
-                "Universal Multiple-Octet Coded Character Set (UCS) -
-                Architecture and Basic Multilingual Plane", ISO/IEC
-                10646-1 : 1993.
-
   [Unicode]     The Unicode Consortium, "The Unicode Standard, Version
                 3.2.0" is defined by "The Unicode Standard, Version 3.0"
                 (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5),
@@ -500,16 +498,16 @@ Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
                 Character Sets for the International Teletex Service",
                 T.61, 1988.
 
+7.2. Informative References
+
 
 
 
 Zeilenga                        LDAPprep                        [Page 9]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
 
 
-7.2. Informative References
-
   [X.500]       International Telecommunication Union -
                 Telecommunication Standardization Sector, "The Directory
                 -- Overview of concepts, models and services,"
@@ -556,17 +554,16 @@ Appendix A. Teletex (T.61) to Unicode
 
   The codes from x80 to x9f are also equivalent to the corresponding
   Unicode code points.  This is specified for completeness only, as
+  these codes are control characters, and will be mapped to nothing in
+  the LDAP String Preparation Mapping step.
 
 
 
 Zeilenga                        LDAPprep                       [Page 10]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
 
 
-  these codes are control characters, and will be mapped to nothing in
-  the LDAP String Preparation Mapping step.
-
   The remaining T.61 codes are mapped below in Table A.1.  Table
   positions marked "??" are undefined.
 
@@ -613,15 +610,16 @@ Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
 
 Appendix B. Additional Teletex (T.61) to Unicode Tables
 
+  All of the accented characters in T.61 have a corresponding code point
+  in Unicode.  For the sake of completeness, the combined character
+
 
 
 Zeilenga                        LDAPprep                       [Page 11]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
 
 
-  All of the accented characters in T.61 have a corresponding code point
-  in Unicode.  For the sake of completeness, the combined character
   codes are presented in the following tables.  This is informational
   only; for matching purposes it is sufficient to map the non-spacing
   accent and exchange the order of the character pair as specified in
@@ -668,16 +666,16 @@ B.3. Combinations for xc2: (Acute accent)
   C, L, N, R, S, and Z.  Unicode also defines G, K, M, P, and W.  All of
   these combinations are present in Table B.3.
 
+     |    0 |    1 |    2 |    3 |    4 |    5 |    6 |    7 |
+   --+------+------+------+------+------+------+------+------+
 
 
 
 Zeilenga                        LDAPprep                       [Page 12]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
 
 
-     |    0 |    1 |    2 |    3 |    4 |    5 |    6 |    7 |
-   --+------+------+------+------+------+------+------+------+
    40|  ??  | 00c1 |  ??  | 0106 |  ??  | 00c9 |  ??  | 01f4 |
    48|  ??  | 00cd |  ??  | 1e30 | 0139 | 1e3e | 0143 | 00d3 |
    50| 1e54 |  ??  | 0154 | 015a |  ??  | 00da |  ??  | 1e82 |
@@ -724,16 +722,16 @@ B.5. Combinations for xc4: (Tilde)
    58|  ??  | 1ef8 |  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |
    60|  ??  | 00e3 |  ??  |  ??  |  ??  | 1ebd |  ??  |  ??  |
    68|  ??  | 0129 |  ??  |  ??  |  ??  |  ??  | 00f1 | 00f5 |
+   70|  ??  |  ??  |  ??  |  ??  |  ??  | 0169 | 1e7d |  ??  |
+   78|  ??  | 1ef9 |  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |
 
 
 
 Zeilenga                        LDAPprep                       [Page 13]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
 
 
-   70|  ??  |  ??  |  ??  |  ??  |  ??  | 0169 | 1e7d |  ??  |
-   78|  ??  | 1ef9 |  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |
    --+------+------+------+------+------+------+------+------+
            Table B.5: Mapping of T.61 Tilde Accent Combinations
 
@@ -780,16 +778,16 @@ B.7. Combinations for xc6: (Breve)
            Table B.7: Mapping of T.61 Breve Accent Combinations
 
 
+B.8. Combinations for xc7: (Dot Above)
+
 
 
 
 Zeilenga                        LDAPprep                       [Page 14]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
 
 
-B.8. Combinations for xc7: (Dot Above)
-
   T.61 has predefined characters for C, E, G, I, and Z.  Unicode also
   defines A, O, B, D, F, H, M, N, P, R, S, T, W, X, and Y.  All of these
   combinations are present in Table B.8.
@@ -836,16 +834,16 @@ B.10. Combinations for xca: (Ring Above)
      |    0 |    1 |    2 |    3 |    4 |    5 |    6 |    7 |
    --+------+------+------+------+------+------+------+------+
    40|  ??  | 00c5 |  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |
+   48|  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |
+   50|  ??  |  ??  |  ??  |  ??  |  ??  | 016e |  ??  |  ??  |
 
 
 
 Zeilenga                        LDAPprep                       [Page 15]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
 
 
-   48|  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |
-   50|  ??  |  ??  |  ??  |  ??  |  ??  | 016e |  ??  |  ??  |
    58|  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |
    60|  ??  | 00e5 |  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |
    68|  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |  ??  |
@@ -892,16 +890,16 @@ B.12. Combinations for xcd: (Double Acute Accent)
 
 B.13. Combinations for xce: (Ogonek)
 
+  T.61 has predefined characters for A, E, I, and U.  Unicode also
+  defines the combination for O.  All of these combinations are present
 
 
 
 Zeilenga                        LDAPprep                       [Page 16]
 \f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
 
 
-  T.61 has predefined characters for A, E, I, and U.  Unicode also
-  defines the combination for O.  All of these combinations are present
   in Table B.13.
 
      |    0 |    1 |    2 |    3 |    4 |    5 |    6 |    7 |
@@ -938,6 +936,48 @@ B.14. Combinations for xcf: (Caron)
           Table B.14: Mapping of T.61 Caron Accent Combinations
 
 
+  Appendix B -- Mapping Table
+
+  Input       Output
+  -----       ------
+  0000-0008
+  0009-000D   0020
+  000E-001F
+  007F-009F
+  0085        0020
+  00A0        0020
+  00AD
+  034F
+
+
+
+Zeilenga                        LDAPprep                       [Page 17]
+\f
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
+
+
+  06DD
+  070F
+  1680        0020
+  1806
+  180B-180E
+  2000-200A   0020
+  200B-200F
+  2028-2029   0020
+  202A-202E
+  202F        0020
+  205F        0020
+  2060-2063
+  206A-206F
+  3000        0020
+  FEFF
+  FF00-FE0F
+  FFF9-FFFC
+  1D173-1D17A
+  E0001
+  E0020-E007F
+
+
 
 Intellectual Property Rights
 
@@ -948,14 +988,6 @@ Intellectual Property Rights
   might not be available; neither does it represent that it has made any
   effort to identify any such rights.  Information on the IETF's
   procedures with respect to rights in standards-track and
-
-
-
-Zeilenga                        LDAPprep                       [Page 17]
-\f
-Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
-
-
   standards-related documentation can be found in BCP-11.  Copies of
   claims of rights made available for publication and any assurances of
   licenses to be made available, or the result of an attempt made to
@@ -973,11 +1005,18 @@ Internet-Draft        draft-ietf-ldapbis-strprep-02      27 October 2003
 
 Full Copyright
 
-  Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+
+Zeilenga                        LDAPprep                       [Page 18]
+\f
+Internet-Draft        draft-ietf-ldapbis-strprep-03     15 February 2004
+
+
+  Copyright (C) The Internet Society (2004). 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 implmentation may be prepared, copied, published and
+  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
@@ -1007,5 +1046,22 @@ Full Copyright
 
 
 
-Zeilenga                        LDAPprep                       [Page 18]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                        LDAPprep                       [Page 19]
 \f
index 1aa187f7b7bf4431ec38e2d634b2168de7fcd4d2..b7ae94997b202ac3ae407216468595d229052276 100644 (file)
@@ -1,19 +1,15 @@
 
 
-
-
-
-
 Network Working Group                                Mark Smith, Editor
-Request for Comments: DRAFT               Netscape Communications Corp.
+Request for Comments: DRAFT                         Pearl Crescent, LLC
 Obsoletes: RFC 2255                                           Tim Howes
-Expires: 25 April 2004                                    Opsware, Inc.
+Expires: 13 August 2004                                   Opsware, Inc.
 
-                                                        25 October 2003
+                                                       13 February 2004
 
 
                      LDAP: Uniform Resource Locator
-                    <draft-ietf-ldapbis-url-04.txt>
+                    <draft-ietf-ldapbis-url-05.txt>
 
 
 
@@ -42,7 +38,7 @@ Expires: 25 April 2004                                    Opsware, Inc.
    Revision (ldapbis) Working Group mailing list <ietf-
    ldapbis@openldap.org>.
 
-Copyright (C) The Internet Society (2003).  All Rights Reserved.
+Copyright (C) The Internet Society (2004).  All Rights Reserved.
 
 2.  Abstract
 
@@ -57,7 +53,7 @@ Copyright (C) The Internet Society (2003).  All Rights Reserved.
 
 Smith & Howes      Intended Category: Standards Track           [Page 1]
 \f
-INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
+INTERNET-DRAFT       LDAP: Uniform Resource Locator     13 February 2004
 
 
 3.  Table of Contents
@@ -66,16 +62,16 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
 2.     Abstract.......................................................1
 3.     Table of Contents..............................................2
 4.     Introduction...................................................2
-5.     URL Definition.................................................2
-5.1.      Escaping Using the Method.................................4
+5.     URL Definition.................................................3
+5.1.      Escaping Using the Method.................................4
 6.     Defaults for Fields of the LDAP URL............................5
-7.     Examples.......................................................6
-8.     Security Considerations........................................8
+7.     Examples.......................................................5
+8.     Security Considerations........................................7
 9.     Normative References...........................................8
 10.    Informative References.........................................9
 11.    Intellectual Property Rights...................................9
 12.    Acknowledgements...............................................10
-13.    Authors' Address...............................................10
+13.    Authors' Addresses.............................................10
 14.    Full Copyright Statement.......................................11
 15.    Appendix A: Changes Since RFC 2255.............................11
 15.1.     Technical Changes...........................................11
@@ -105,17 +101,20 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
    The key words "MUST", "MAY", and "SHOULD" used in this document are
    to be interpreted as described in [RFC2119].
 
-5.  URL Definition
 
-   An LDAP URL begins with the protocol prefix "ldap" and is defined by
+
+
 
 
 
 Smith & Howes      Intended Category: Standards Track           [Page 2]
 \f
-INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
+INTERNET-DRAFT       LDAP: Uniform Resource Locator     13 February 2004
+
 
+5.  URL Definition
 
+   An LDAP URL begins with the protocol prefix "ldap" and is defined by
    the following grammar, following the ABNF notation defined in
    [RFC2234].
 
@@ -140,7 +139,7 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
        exvalue     = <LDAPString from section 4.1.2 of [Protocol]>
                        ; see the "Escaping Using the % Method" section below.
        oid         = <LDAPOID from section 4.1.2 of [Protocol]>
-       oiddescr    = <name from section 3.3 of [RFC3383]>
+       oiddescr    = <name from section 3.3 of [LDAPIANA]>
 
        EXCLAMATION = %x21 ; exclamation mark ("!")
        ASTERISK    = %x2A ; asterisk ("*")
@@ -162,16 +161,15 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
    be returned from the entry or entries.  Individual attrdesc names are
    as defined for AttributeDescription in [Protocol].
 
-   The scope construct is used to specify the scope of the search to
-   perform in the given LDAP server.  The allowable scopes are "base"
-
 
 
 Smith & Howes      Intended Category: Standards Track           [Page 3]
 \f
-INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
+INTERNET-DRAFT       LDAP: Uniform Resource Locator     13 February 2004
 
 
+   The scope construct is used to specify the scope of the search to
+   perform in the given LDAP server.  The allowable scopes are "base"
    for a base object search, "one" for a one-level search, or "sub" for
    a subtree search.
 
@@ -190,24 +188,17 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
    character (ASCII 33) is critical. An extension not prefixed with a
    '!' character is non-critical.
 
-   If an extension is supported by the client, the client MUST obey the
-   extension if the extension is critical. The client SHOULD obey
-   supported extensions that are non-critical.
-
-   If an extension is unsupported by the client, the client MUST NOT
-   process the URL if the extension is critical.  If an unsupported
-   extension is non-critical, the client MUST ignore the extension.
-
-   If a critical extension cannot be processed successfully by the
-   client, the client MUST NOT process the URL. If a non-critical
-   extension cannot be processed successfully by the client, the client
-   SHOULD ignore the extension.
+   If an LDAP URL extension is recognized by an implementation, the
+   implementation MUST make use of it.  If an extension is not
+   recognized and is marked critical, the implementation MUST NOT
+   process the URL.  If an extension is not recognized and it not marked
+   critical, the implementation MUST ignore the extension.
 
    The extension type (extype) MAY be specified using the oid form
    (e.g., 1.2.3.4) or the oiddesc form (e.g., myLDAPURLExtension).  Use
    of the oiddesc form SHOULD be restricted to registered object
-   identifier descriptive names.  See [RFC3383] for registration details
-   and usage guidelines for descriptive names.
+   identifier descriptive names.  See [LDAPIANA] for registration
+   details and usage guidelines for descriptive names.
 
    No LDAP URL extensions are defined in this document.  Other documents
    or a future version of this document MAY define one or more
@@ -218,21 +209,20 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
    A generated LDAP URL MUST consist only of the restricted set of
    characters included in the uric production that is defined in section
    2 of [RFC2396].  Implementations SHOULD accept other valid UTF-8
-   strings [UTF-8] as input.  An octet MUST be escaped using the %
+   strings [RFC3629] as input.  An octet MUST be escaped using the %
    method described in section 2.4 of [RFC2396] in any of these
+   situations:
+
+      The octet is not in the reserved set defined in section 2.2 of
+      [RFC2396] or in the unreserved set defined in section 2.3 of
+      [RFC2396].
 
 
 
 Smith & Howes      Intended Category: Standards Track           [Page 4]
 \f
-INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
-
+INTERNET-DRAFT       LDAP: Uniform Resource Locator     13 February 2004
 
-   situations:
-
-      The octet is not in the reserved set defined in section 2.2 of
-      [RFC2396] or in the unreserved set defined in section 2.3 of
-      [RFC2396].
 
       It is the single Reserved character '?' and occurs inside a dn,
       filter, or other element of an LDAP URL.
@@ -244,7 +234,7 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
    Some fields of the LDAP URL are optional, as described above.  In the
    absence of any other specification, the following general defaults
    SHOULD be used when a field is absent.  Note:  other documents MAY
-   specify different defaulting rules; for example, section 4.1.11 of
+   specify different defaulting rules; for example, section 4.1.10 of
    [Protocol] specifies a different rule for determining the correct DN
    to use when it is absent in an LDAP URL that is returned as a
    referral.
@@ -274,6 +264,12 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
       If extensions is omitted, no extensions are assumed.
 
 
+7.  Examples
+
+   The following are some example LDAP URLs using the format defined
+   above.  The first example is an LDAP URL referring to the University
+   of Michigan entry, available from an LDAP server of the client's
+   choosing:
 
 
 
@@ -281,15 +277,8 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
 
 Smith & Howes      Intended Category: Standards Track           [Page 5]
 \f
-INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
-
+INTERNET-DRAFT       LDAP: Uniform Resource Locator     13 February 2004
 
-7.  Examples
-
-   The following are some example LDAP URLs using the format defined
-   above.  The first example is an LDAP URL referring to the University
-   of Michigan entry, available from an LDAP server of the client's
-   choosing:
 
      ldap:///o=University%20of%20Michigan,c=US
 
@@ -332,23 +321,26 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
    the LDAP entry named "o=Question?,c=US" is given below, illustrating
    the use of the escaping mechanism on the reserved character '?'.
 
+     ldap://ldap2.example.com/o=Question%3f,c=US?mail
+
+   The next example (which is broken into two lines for readability)
+   illustrates the interaction between the LDAP string representation of
+   filters quoting mechanism and URL quoting mechanisms.
+
+
 
 
 
 Smith & Howes      Intended Category: Standards Track           [Page 6]
 \f
-INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
+INTERNET-DRAFT       LDAP: Uniform Resource Locator     13 February 2004
 
 
-     ldap://ldap2.example.com/o=Question%3f,c=US?mail
+     ldap://ldap3.example.com/o=Babsco,c=US
+             ???(four-octet=%5c00%5c00%5c00%5c04)
 
-   The next example illustrates the interaction between the LDAP string
-   representation of filters quoting mechanism and URL quoting
-   mechanisms.
-
-     ldap://ldap3.example.com/o=Babsco,c=US???(four-octet=%5c00%5c00%5c00%5c04)
-   IP The filter in this example uses the LDAP escaping mechanism of \
-   to encode three zero or null bytes in the value. In LDAP, the filter
+   The filter in this example uses the LDAP escaping mechanism of \ to
+   encode three zero or null bytes in the value. In LDAP, the filter
    would be written as (four-octet=\00\00\00\04). Because the \
    character must be escaped in a URL, the \'s are escaped as %5c in the
    URL encoding.
@@ -388,18 +380,17 @@ name extension (the value associated with the extension is an LDAP DN).
    the e-bindname extension.
 
 
+8.  Security Considerations
+
+   General URL security considerations discussed in [RFC2396] are
+   relevant for LDAP URLs.
 
 
 
 Smith & Howes      Intended Category: Standards Track           [Page 7]
 \f
-INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
-
+INTERNET-DRAFT       LDAP: Uniform Resource Locator     13 February 2004
 
-8.  Security Considerations
-
-   General URL security considerations discussed in [RFC2396] are
-   relevant for LDAP URLs.
 
    The use of security mechanisms when processing LDAP URLs requires
    particular care, since clients may encounter many different servers
@@ -443,50 +434,50 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
 
 9.  Normative References
 
-   [LDAPDN] Zeilenga, K. (editor), "LDAP: String Representation of
+[AuthMeth]  Harrison, R. (editor), "LDAP: Authentication Methods",
+            draft-ietf-ldapbis-authmeth-xx.txt, a work in progress.  a
+            work in progress.
+
+[LDAPDN]    Zeilenga, K. (editor), "LDAP: String Representation of
+            Distinguished Names", draft-ietf-ldapbis-dn-xx.txt, a work
 
 
 
 Smith & Howes      Intended Category: Standards Track           [Page 8]
 \f
-INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
-
+INTERNET-DRAFT       LDAP: Uniform Resource Locator     13 February 2004
 
-   Distinguished Names", draft-ietf-ldapbis-dn-xx.txt, a work in
-   progress.
 
-   [Filters] Smith, M. and Howes, T., "LDAP: String Representation of
-   Search Filters", draft-ietf-ldapbis-filter-xx.txt, a work in
-   progress.
+            in progress.
 
-   [RFC2119] Bradner, S., "Key Words for use in RFCs to Indicate
-   Requirement Levels," RFC 2119, BCP 14, March 1997.
+[Filters]   Smith, M. and Howes, T., "LDAP: String Representation of
+            Search Filters", draft-ietf-ldapbis-filter-xx.txt, a work in
+            progress.
 
-   [Protocol] Sermersheim, J. (editor), "LDAP: The Protocol", draft-
-   ietf-ldapbis-protocol-xx.txt, a work in progress.
+[LDAPIANA]  Zeilenga, K., "IANA Considerations for LDAP", draft-ietf-
+            ldapbis-bcp64-xx.txt, a work in progress.
 
-   [RFC2234] Crocker, D., Overell, P., "Augmented BNF for Syntax
-   Specifications:  ABNF", RFC 2234, November 1997.
+[RFC2119]   Bradner, S., "Key Words for use in RFCs to Indicate
+            Requirement Levels," RFC 2119, BCP 14, March 1997.
 
-   [RFC2396] Berners-Lee, T., Fielding, R., and Masinter, L., "Uniform
-   Resource Identifiers (URI): Generic Syntax", RFC 2396, August 1998.
+[Protocol]  Sermersheim, J. (editor), "LDAP: The Protocol", draft-ietf-
+            ldapbis-protocol-xx.txt, a work in progress.
 
-   [RFC2732] Hinden, R., Carpenter, B., Masinter, L., "Format for
-   Literal IPv6 Addresses in URL's", RFC 2732, December 1999.
+[RFC2234]   Crocker, D., Overell, P., "Augmented BNF for Syntax
+            Specifications: ABNF", RFC 2234, November 1997.
 
-   [RFC3383] Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
-    Considerations for the Lightweight Directory Access Protocol
-   (LDAP)", RFC 3383, September 2002.
+[RFC2396]   Berners-Lee, T., Fielding, R., and Masinter, L., "Uniform
+            Resource Identifiers (URI): Generic Syntax", RFC 2396,
+            August 1998.
 
-   [AuthMeth] Harrison, R. (editor), "LDAP: Authentication Methods",
-   draft-ietf-ldapbis-authmeth-xx.txt, a work in progress.  a work in
-   progress.
+[RFC2732]   Hinden, R., Carpenter, B., Masinter, L., "Format for Literal
+            IPv6 Addresses in URL's", RFC 2732, December 1999.
 
-   [Roadmap] K. Zeilenga (editor), "LDAP: Technical Specification Road
-   Map", draft-ietf-ldapbis-roadmap-xx.txt, a work in progress.
+[Roadmap]   K. Zeilenga (editor), "LDAP: Technical Specification Road
+            Map", draft-ietf-ldapbis-roadmap-xx.txt, a work in progress.
 
-   [UTF-8] Yergeau, F., "UTF-8, a transformation format of ISO 10646",
-   draft-yergeau-rfc2279bis-xx.txt, a work in progress.
+[RFC3629]   Yergeau, F., "UTF-8, a transformation format of ISO 10646",
+            RFC 3629, November 2003.
 
 10.  Informative References
 
@@ -500,19 +491,19 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
    this document or the extent to which any license under such rights
    might or might not be available; neither does it represent that it
    has made any effort to identify any such rights.  Information on the
+   IETF's procedures with respect to rights in standards-track and
+   standards-related documentation can be found in BCP-11.  Copies of
+   claims of rights made available for publication and any assurances of
+   licenses to be made available, or the result of an attempt made to
+   obtain a general license or permission for the use of such
 
 
 
 Smith & Howes      Intended Category: Standards Track           [Page 9]
 \f
-INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
+INTERNET-DRAFT       LDAP: Uniform Resource Locator     13 February 2004
 
 
-   IETF's procedures with respect to rights in standards-track and
-   standards-related documentation can be found in BCP-11.  Copies of
-   claims of rights made available for publication and any assurances of
-   licenses to be made available, or the result of an attempt made to
-   obtain a general license or permission for the use of such
    proprietary rights by implementors or users of this specification can
    be obtained from the IETF Secretariat.
 
@@ -540,15 +531,15 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
    Kurt Zeilenga, Jim Sermersheim, and Hallvard Furuseth deserve special
    thanks for their contributions.
 
-13.  Authors' Address
+13.  Authors' Addresses
 
    Mark Smith, Editor
-   Netscape Communications Corp.
-   360 W. Caribbean Drive
-   Sunnyvale, CA 94089
+   Pearl Crescent, LLC
+   447 Marlpool Dr.
+   Saline, MI 48176
    USA
-   +1 650 937-3477
-   MarkCSmithWork@aol.com
+   +1 734 944-2856
+   mcs@pearlcrescent.com
 
    Tim Howes
    Opsware, Inc.
@@ -556,19 +547,22 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
    Sunnyvale, CA 94085
    USA
    +1 408 744-7509
+   howes@opsware.com
+
+
+
+
 
 
 
 Smith & Howes      Intended Category: Standards Track          [Page 10]
 \f
-INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
+INTERNET-DRAFT       LDAP: Uniform Resource Locator     13 February 2004
 
 
-   howes@opsware.com
-
 14.  Full Copyright Statement
 
-   Copyright (C) The Internet Society (2003).  All Rights Reserved.
+   Copyright (C) The Internet Society (2004).  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
@@ -615,18 +609,20 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
 
 
 
+
+
 Smith & Howes      Intended Category: Standards Track          [Page 11]
 \f
-INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
+INTERNET-DRAFT       LDAP: Uniform Resource Locator     13 February 2004
 
 
    Changed the ABNF for ldapurl to group the dn component with the
    preceding slash.
 
    Changed the extype rule to be an LDAPOID from [Protocol] or an OID
-   description from [RFC3383].
+   description from [LDAPIANA].
 
-   Changed the text about extension types so it references [RFC3383].
+   Changed the text about extension types so it references [LDAPIANA].
    Reordered rules to more closely follow the order the elements appear
    in the URL.
 
@@ -661,21 +657,23 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
    break within '!' sequence.  Reworded last paragraph to clarify which
    characters must be URL escaped.   Added text to indicate that LDAP
    URLs are used for references and referrals.  Added text that refers
-   to the ABNF from RFC 2234.
+   to the ABNF from RFC 2234.  Clarified and strengthened the
+   requirements with respect to processing of URLs that contain
+   recognized and unrecognized extensions (the approach now matches that
+   specified in [Protocol] for LDAP controls).
 
    "Defaults for Fields of the LDAP URL" section: added; formed by
    moving text about defaults out of the "URL Definition" section.
 
-   "URL Processing" section: clarified that connections MAY be reused
-   only if the open connection is compatible with the URL.  Added text
-
 
 
 Smith & Howes      Intended Category: Standards Track          [Page 12]
 \f
-INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
+INTERNET-DRAFT       LDAP: Uniform Resource Locator     13 February 2004
 
 
+   "URL Processing" section: clarified that connections MAY be reused
+   only if the open connection is compatible with the URL.  Added text
    to indicate that use of security services is encouraged and that they
    SHOULD be used when updates are involved.  Removed "dn" from
    discussion of authentication methods.  Added note that the client MAY
@@ -693,7 +691,7 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
 
    "Security Considerations" section: Added a note about connection
    reuse.  Added a note about using strong authentication methods for
-   updates.  Added a reference to RFC 2829.  Added note that simply
+   updates.  Added a reference to [AuthMeth].  Added note that simply
    opening a connection may violate some users' privacy requirements.
 
    "Acknowledgements" section: added statement about this being an
@@ -702,15 +700,16 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
 
    "Normative References" section: renamed from "References" per new RFC
    guidelines. Changed from [1] style to [Protocol] style throughout the
-   document.  Added references to RFCs 2234, 2829, and 3383.  Updated
-   RFC 1738 references to the appropriate sections within RFC 2396.
-   Updated the references to refer to LDAPBis WG documents. Removed the
-   reference to the LDAP Attribute Syntaxes document and added a
-   reference to the Roadmap document.
+   document.  Added references to RFC 2234, RFC 2732, and RFC 3629.
+   Updated all RFC 1738 references to point to the appropriate sections
+   within RFC 2396.  Updated the LDAP references to refer to LDAPBis WG
+   documents.  Removed the reference to the LDAP Attribute Syntaxes
+   document and added references to the [AuthMeth], [LDAPIANA], and
+   [Roadmap] documents.
 
    "Informative References" section: added for clarity.
 
-   Header and "Authors' Address" sections: added "editor" next to Mark
+   Header and "Authors' Addresses" sections: added "editor" next to Mark
    Smith's name.  Updated affiliation and contact information.
 
    Copyright: updated the year.
@@ -719,51 +718,48 @@ INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
 16.  Appendix B: Changes Since Previous Document Revision
 
    This appendix lists all changes relative to the previously published
-   revision, draft-ietf-ldapbis-url-03.txt.  Note that when appropriate
+   revision, draft-ietf-ldapbis-url-04.txt.  Note that when appropriate
    these changes are also included in Appendix A, but are also included
-   here for the benefit of the people who have already reviewed draft-
-   ietf-ldapbis-url-03.txt. This section will be removed before this
-   document is published as an RFC.
 
 
 
 Smith & Howes      Intended Category: Standards Track          [Page 13]
 \f
-INTERNET-DRAFT       LDAP: Uniform Resource Locator      25 October 2003
-
+INTERNET-DRAFT       LDAP: Uniform Resource Locator     13 February 2004
 
-16.1.  Technical Changes
 
-   None.
+   here for the benefit of the people who have already reviewed draft-
+   ietf-ldapbis-url-04.txt. This section will be removed before this
+   document is published as an RFC.
 
 
-16.2.  Editorial Changes
+16.1.  Technical Changes
 
-   "URL Definition" section: added comments in the ABNF to point the
-   reader to the "Escaping Using the % Method" section, which was
-   changed into a section of its own to highlight the importance of
-   escaping the URL components correctly.
+   Clarified and strengthened the requirements with respect to
+   processing of URLs that contain recognized and unrecognized
+   extensions (the approach now matches that specified in [Protocol] for
+   LDAP controls).
 
-   "Examples" section: changed the name of an attribute used in one
-   example from "int" to "four-octet" to avoid potential confusion.
 
-   Replaced all occurrences of "asterix" with the correctly spelled
-   "asterisk."
+16.2.  Editorial Changes
 
-   "Normative References" section: changed UTF-8 reference to point to
-   the UTF-8 Internet Draft; replace [LDAPIANA] Internet Draft reference
-   with a reference to RFC 3383.
+   "URL Definition" section: corrected a section reference to
+   [Protocol].
 
-   "Intellectual Property Rights" section: added.
+   "Examples" section: improved formatting and fixed a typographic error
+   (removed extraneous "IP") in the "four-octet" example.
 
-   Author's Addresses section: New email address for Mark Smith.
+   "Normative References" section: changed the UTF-8 reference to point
+   to RFC 3629, changed the RFC 3383 reference to point to the LDAP IANA
+   Internet Draft, and indented the reference descriptions to enhance
+   readability.
 
-   "Full Copyright Statement" section: updated text to match latest IETF
-   guidelines.
+   Authors' Addresses section: New contact information for Mark Smith.
 
+   Updated the copyright year to 2004.
 
-This Internet Draft expires on 25 April 2004.
 
+This Internet Draft expires on 13 August 2004.
 
 
 
@@ -785,3 +781,4 @@ This Internet Draft expires on 25 April 2004.
 
 Smith & Howes      Intended Category: Standards Track          [Page 14]
 \f
+
index 43fd2cc22f44c6f0203f52592f1ab09ea37e1487..f8f030855ae9f489b59e1e3a2ebe1ea3e2f0e43e 100644 (file)
@@ -1,26 +1,22 @@
 
 
-
-
-
-
 INTERNET-DRAFT                                      Kurt D. Zeilenga
-Intended Category: Standard Track                OpenLDAP Foundation
-Expires in six months                                  Jonghyuk Choi
+Intended Category: Experimental                  OpenLDAP Foundation
+Expires in six months                                 Jong Hyuk Choi
                                                      IBM Corporation
 
-                                                          5 May 2003
+                                                     3 February 2004
 
 
 
 
-                  LDAP Content Synchronization Operation
-                    <draft-zeilenga-ldup-sync-02.txt>
+                The LDAP Content Synchronization Operation
+                    <draft-zeilenga-ldup-sync-05.txt>
 
 
 
 
-1. Status of this Memo
+Status of this Memo
 
   This document is an Internet-Draft and is in full conformance with all
   provisions of Section 10 of RFC2026.
@@ -43,10 +39,10 @@ Expires in six months                                  Jonghyuk Choi
   Internet-Draft Shadow Directories can be accessed at
   <http://www.ietf.org/shadow.html>.
 
-  Copyright 2003, The Internet Society.  All Rights Reserved.
+  Copyright (C) The Internet Society (2004).  All Rights Reserved.
 
-  Please see the Copyright section near the end of this document for
-  more information.
+  Please see the Full Copyright section near the end of this document
+  for more information.
 
 
 
@@ -57,154 +53,214 @@ Expires in six months                                  Jonghyuk Choi
 
 Zeilenga               LDAP Content Sync Operation              [Page 1]
 \f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
 
 Abstract
 
   This specification describes the LDAP (Lightweight Directory Access
-  Protocol) Content Synchronization operation.  The operation allows a
-  client to maintain a shadow copy of a fragment of directory
-  information tree.  It supports both polling for changes and listening
-  for changes.  The operation is defined as an extension of the LDAP
-  Search operation.
+  Protocol) Content Synchronization Operation.  The operation allows a
+  client to maintain a copy of a fragment of directory information tree.
+  It supports both polling for changes and listening for changes.  The
+  operation is defined as an extension of the LDAP Search Operation.
+
+
+Table of Contents
+
+  Status of this Memo                                          1
+  Abstract                                                     2
+  Table of Contents
+  1.   Introduction                                            3
+  1.1.     Background
+  1.2.     Intended Usage                                      4
+  1.3.     Overview                                            5
+  1.4.     Conventions
+  2.   Elements of the Sync Operation                          8
+  2.1.     Common ASN.1 Elements                               9
+  2.2.     Sync Request Control
+  2.3.     Sync State Control
+  2.4.     Sync Done Control                                  10
+  2.5.     Sync Info Message
+  2.6.     Sync Result Codes                                  11
+  3.   Content Synchronization
+  3.1.     Synchronization Session
+  3.2.     Content Determination                              12
+  3.3.     refreshOnly Mode                                   13
+  3.4.     refreshAndPersist Mode                             16
+  3.5.     Search Request Parameters                          17
+  3.6.     objectName Issues                                  18
+  3.7.     Canceling the Sync Operation                       19
+  3.8.     Refresh Required
+  3.9.     Chattiness Considerations                          20
+  3.10.    Operation Multiplexing                             21
+  4.   Meta Information Considerations                        22
+  4.1.     Entry DN
+  4.2.     Operational Attributes
+  4.3.     Collective Attributes                              23
+  4.4.     Access and Other Administrative Controls
+  5.   Interaction with Other Controls
+  5.1.     ManageDsaIT Control                                24
+  5.2.     Subentries Control
+  6.   Shadowing Considerations
+  7.   Security Considerations                                25
+  8.   IANA Considerations
 
 
-Conventions
 
-  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 BCP 14 [RFC2119].
+Zeilenga               LDAP Content Sync Operation              [Page 2]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
+
 
-  Protocol elements are described using ASN.1 [X.680].  The term
-  "BER-encoded" means the element is to be encoded using the Basic
-  Encoding Rules [X.690] under the restrictions detailed in Section 5.1
-  of [RFC2251].
+  8.1.     Object Identifier                                  26
+  8.2.     LDAP Protocol Mechanism
+  8.3.     LDAP Result Codes
+  9.   Acknowledgments
+  10.  Normative References                                   27
+  11.  Informative References                                 28
+  12.  Authors' Addresses                                     29
+  Appendix A.  CSN-based Implementation Considerations
+  Intellectual Property Rights                                31
+  Full Copyright
 
 
 1. Introduction
 
   The Lightweight Directory Access Protocol (LDAP) [RFC3377] provides a
-  mechanism, the search operation [RFC2251], to allow a client to
-  request the return of content matching a complex set of assertions and
-  for the server to return this content, subject to access control and
-  other restrictions, to the client.  However, short of repeating a
-  search operation each time a new copy needed, LDAP does not provide an
-  effective and efficient mechanism for maintaining synchronized copies
-  of directory content.
-
-  This document defines the LDAP Content Synchronization operation, or
-  Sync operation for short, which allows a client to maintain a
-  synchronized shadow copy of a fragment of a Directory Information Tree
-  (DIT).  The Sync operation is defined as a set of controls and other
-  protocol elements which extend the Search operation.
+  mechanism, the search operation [RFC2251], which allows a client to
+  request directory content matching a complex set of assertions and for
+  the server to return this content, subject to access control and other
+  restrictions, to the client.  However, LDAP does not provide (despite
+  the introduction of numerous extensions in this area) an effective and
+  efficient mechanism for maintaining synchronized copies of directory
+  content.  This document introduces a new mechanism specifically
+  designed to met the content synchronization requirements of
+  sophisticated directory applications.
+
+  This document defines the LDAP Content Synchronization Operation, or
+  Sync Operation for short, which allows a client to maintain a
+  synchronized copy of a fragment of a Directory Information Tree (DIT).
+  The Sync Operation is defined as a set of controls and other protocol
+  elements which extend the Search Operation.
 
 
 1.1. Background
 
-  Over the years, a number of directory synchronization approaches have
-  been suggested.  These approaches are inadequate for one or more of
-  the following reasons:
+  Over the years, a number of content synchronization approaches have
+  been suggested for use in LDAP directory services.  These approaches
+  are inadequate for one or more of the following reasons:
 
-    1) do not ensure a reasonable level of convergence;
-    2) fail to detect that convergence cannot be achieved (without
+    - fail to ensure a reasonable level of convergence;
+    - fail to detect that convergence cannot be achieved (without
+      reload);
+    - require pre-arranged synchronization agreements;
+    - require the server to maintain histories of past changes to DIT
+      content and/or meta information;
+    - require the server to maintain synchronization state on a per
+      client basis; and/or
+    - are overly chatty.
 
 
 
-Zeilenga               LDAP Content Sync Operation              [Page 2]
-\f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
 
+Zeilenga               LDAP Content Sync Operation              [Page 3]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
-       reload);
-    3) require pre-arranged synchronization agreements;
-    4) require the server to maintain synchronization state on a per
-       client basis;
-    5) require the server to maintain histories of past changes to DIT
-       content and/or meta information; and/or
-    6) are overly chatty.
 
-  The Sync operation provides eventual convergence of synchronized
-  content when possible and, when not, notification that content reload
+  The Sync Operation provides eventual convergence of synchronized
+  content when possible and, when not, notification that a full reload
   is required.
 
-  The Sync operation does not require pre-arranged synchronization
+  The Sync Operation does not require pre-arranged synchronization
   agreements.
 
-  The Sync operation does not require servers to maintain
-  synchronization state on a per user basis.
-
-  The Sync operation does not require servers to maintain any history of
-  past changes to the DIT or to meta information.  While histories
-  (e.g., change logs, tombstones, DIT snapshots) may be used in the
-  implementation of the Sync operation, the operation may be implemented
-  using purely state-based approaches.
-
-  As the Sync operation does not require servers to maintain any
-  histories of past changes, it can be implemented in environments where
-  it is not feasible to maintain such histories.  Histories, if
-  available, may be used by the server to reduce the number of messages
-  generated and reduce their size.
-
-  The Sync operation chattiness is reasonably bound.
+  The Sync Operation does not require servers to maintain nor to use any
+  history of past changes to the DIT or to meta information.  However,
+  servers may maintain and use histories (e.g., change logs, tombstones,
+  DIT snapshots) to reduce the number of messages generated and to
+  reduce their size.  As it is not always feasible to maintain and use
+  histories, the operation may be implemented using purely (current)
+  state-based approaches.  The Sync Operation allows use of either the
+  state-based approach or the history-based approach in an operation by
+  operation basis to balance the size of history and the amount of
+  traffic.  The Sync Operation also allows the combined use of the
+  state-based and the history-based approaches.
+
+  The Sync Operation does not require servers to maintain
+  synchronization state on a per client basis.  However, servers may
+  maintain and use per client state information to reduce the number of
+  messages generated and the size of such messages.
+
+  A synchronization mechanism can be considered overly chatty when
+  synchronization traffic is not reasonably bounded.  The Sync Operation
+  traffic is bounded by the size of updated (or new) entries and the
+  number of unchanged entries in the content.  The operation is designed
+  to avoid full content exchanges even in the case that the history
+  information available to the server is insufficient to determine the
+  client's state.  The operation is also designed to avoid transmission
+  of out-of-content history information, as its size is not bounded by
+  the content and it is not always feasible to transmit such history
+  information due to security reasons.
+
+  This document includes a number of non-normative appendices providing
+  additional information to server implementors.
 
 
 1.2. Intended Usage
 
-  The Sync operation is intended to be used in applications requiring
-  eventual-convergent content synchronization.  Upon completion of each
-  synchronization phase of the operation, all information to construct
-  an synchronized shadow copy of the content has been provided to the
-  client or the client has been notified that a complete content reload
-  is necessary.  Excepting for transient inconsistencies due to
-  concurrent operation (or other) processing at the server, the shadow
-  copy is an accurate reflection of the content held by the server.
-  Each inconsistency is transient in that it will be corrected during
-  subsequent synchronization requests.
-
-  Possible uses include:
-    - White page service applications may use the Sync operation to
+  The Sync Operation is intended to be used in applications requiring
+  eventually-convergent content synchronization.  Upon completion of
+  each synchronization stage of the operation, all information to
+  construct a synchronized client copy of the content has been provided
+  to the client or the client has been notified that a complete content
+  reload is necessary.  Except for transient inconsistencies due to
+  concurrent operation (or other) processing at the server, the client
 
 
 
-Zeilenga               LDAP Content Sync Operation              [Page 3]
+Zeilenga               LDAP Content Sync Operation              [Page 4]
 \f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
 
-      maintain current shadow copy of a DIT fragment.  For example, an
-      mail user agent which use the sync operation to maintain a local
-      copy of an enterprise address book.
+  copy is an accurate reflection of the content held by the server.
+  Transient inconsistencies will be resolved by subsequent
+  synchronization operations.
 
-    - Meta-information engines may use the Sync operation to maintain a
-      shadow copy of a DIT fragment.
+  Possible uses include:
+    - White page service applications may use the Sync Operation to
+      maintain current copy of a DIT fragment.  For example, a mail user
+      agent which uses the sync operation to maintain a local copy of an
+      enterprise address book.
+
+    - Meta-information engines may use the Sync Operation to maintain a
+      copy of a DIT fragment.
 
-    - Caching proxy services may use the Sync operation to maintain a
+    - Caching proxy services may use the Sync Operation to maintain a
       coherent content cache.
 
     - Lightweight master-slave replication between heterogeneous
-      directory servers.  For example, the Sync operation can be used by
+      directory servers.  For example, the Sync Operation can be used by
       a slave server to maintain a shadow copy of a DIT fragment.
-
-  Note: The International Telephone Union (ITU) has defined the X.500
-        Directory Synchronization Protocol [X.525] which may be used for
-        master-slave replication between LDAP servers.  Other
-        experimental LDAP replication protocols exist.  The Sync
-        operation should be viewed as complementary to these replication
-        protocols.
+      (Note: The International Telephone Union (ITU) has defined the
+      X.500 Directory [X.500] Information Shadowing Protocol (DISP)
+      [X.525] which may be used for master-slave replication between
+      directory servers.  Other experimental LDAP replication protocols
+      also exist.)
 
   This protocol is not intended to be used in applications requiring
   transactional data consistency.
 
-  As this protocol transfers all visible values of entries upon change
-  instead of change deltas, this protocol is not appropriate for
-  bandwidth-challenged applications or deployments.
+  As this protocol transfers all visible values of entries belonging to
+  the content upon change instead of change deltas, this protocol is not
+  appropriate for bandwidth-challenged applications or deployments.
 
 
 1.3. Overview
 
-  This section provides an overview of basis ways the Sync operation can
-  be used to maintain a synchronized shadow copy of a DIT fragment.
+  This section provides an overview of basic ways the Sync Operation can
+  be used to maintain a synchronized client copy of a DIT fragment.
 
     - Polling for Changes: refreshOnly mode
     - Listening for Changes: refreshAndPersist mode
@@ -212,166 +268,216 @@ INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
 
 1.3.1. Polling for Changes (refreshOnly)
 
-  To obtain its initial shadow copy, the client issues a Sync request: a
+  To obtain its initial client copy, the client issues a Sync request: a
   search request with the Sync Request Control with mode set to
   refreshOnly.  The server, much like it would with a normal search
   operation, returns (subject to access controls and other restrictions)
-  the content matching the search criteria (baseObject, scope, filter).
-  Additionally, with each entry returned, the server provides a Sync
-  State control indicating state add.  This control contains the
-  Universally Unique Identifier (UUID) [UUID] of the entry.  Unlike
 
 
 
-Zeilenga               LDAP Content Sync Operation              [Page 4]
+Zeilenga               LDAP Content Sync Operation              [Page 5]
 \f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
 
-  Distinguished Names (DNs), which may change over time, an entry's
-  UUIDs are stable.  The initial content is followed by a
-  searchResultDone with a Sync Done control.  The Sync Done control
+  the content matching the search criteria (baseObject, scope, filter,
+  attributes).  Additionally, with each entry returned, the server
+  provides a Sync State Control indicating state add.  This control
+  contains the Universally Unique Identifier (UUID) [UUID] of the entry
+  [EntryUUID].  Unlike the Distinguished Name (DN), which may change
+  over time, an entry's UUID is stable.  The initial content is followed
+  by a SearchResultDone with a Sync Done Control.  The Sync Done Control
   provides a syncCookie.  The syncCookie represents session state.
 
-  To poll for updates to the shadow copy, the client reissues the Sync
-  operation with the syncCookie previously returned.  The server, much
+  To poll for updates to the client copy, the client reissues the Sync
+  Operation with the syncCookie previously returned.  The server, much
   as it would with a normal search operation, determines which content
   would be returned as if the operation was a normal search operation.
   However, using the syncCookie as an indicator of what content the
   client was sent previously, the server sends copies of entries which
-  have changed with a Sync State control indicating state add.  For each
-  unchanged entry, the server sends an empty entry (e.g., no attributes)
-  with a Sync State control indicating state present.  The set of
-  updates is followed by a searchResultDone with a Sync Done control.
+  have changed with a Sync State Control indicating state add.  For each
+  changed entry, all (modified or unmodified) attributes belonging to
+  the content are sent.
+
+  The server may perform either or both of the two distinct
+  synchronization phases which are distinguished by how to synchronize
+  entries deleted from the content: the present and the delete phases.
+  When the server uses a single phase for the refresh stage, each phase
+  is marked as ended by a SearchResultDone with a Sync Done Control.  A
+  present phase is identified by a FALSE refreshDeletes value in the
+  Sync Done Control.  A delete phase is identified by a TRUE
+  refreshDeletes value.  The present phase may be followed by a delete
+  phase.  The two phases are delimited by a refreshPresent Sync Info
+  Message having a FALSE refreshDone value. In the case that both the
+  phases are used, the present phase is used to bring the client copy up
+  to the state at which the subsequent delete phase can begin.
+
+  In the present phase, the server sends an empty entry (i.e., no
+  attributes) with a Sync State Control indicating state present for
+  each unchanged entry.
+
+  The delete phase may be used when the server can reliably determine
+  which entries in the prior client copy are no longer present in the
+  content and the number of such entries is less than or equal to the
+  number of unchanged entries.  In the delete mode, the server sends an
+  empty entry with a Sync State Control indicating state delete for each
+  entry which is no longer in the content, instead of returning an empty
+  entry with state present for each present entry.
+
+  The server may send syncIdSet Sync Info Messages containing the set of
+  UUIDs of either unchanged present entries or deleted entries, instead
+  of sending multiple individual messages. If refreshDeletes of
+  syncIdSet is set to FALSE, the UUIDs of unchanged present entries are
 
-  If the server can reliably determine which entries in the prior shadow
-  copy are no longer present in the content and the number of such
-  entries is less than or equal to the number of unchanged entries, the
-  server may, instead of returning an empty entry with state present for
-  each present entry, send an empty entry with state delete for each
-  entry which is no longer in the content.  Also, the Sync Done control
-  refreshDeletes is set to TRUE to indicate to the client that this
-  method was used.  This field is FALSE otherwise.
 
-  The synchronized shadow copy of the DIT fragment is constructed by the
+
+Zeilenga               LDAP Content Sync Operation              [Page 6]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
+
+
+  contained in the syncUUIDs set; if refreshDeletes of syncIdSet is set
+  to TRUE, the UUIDs of the entries no longer present in the content are
+  contained in the syncUUIDs set.  An optional cookie can be included in
+  the syncIdSet to represent the state of the content after
+  synchronizing the presence or the absence of the entries contained in
+  the syncUUIDs set.
+
+  The synchronized copy of the DIT fragment is constructed by the
   client.
 
-  If refreshDeletes is FALSE, the new copy includes all changed entries
-  returned by the reissued Sync operation as well as all unchanged
-  entries identified as being present by the reissued Sync operation,
-  but whose content is provided by the previous Sync operation.  The
-  unchanged entries not identified as being present are deleted from the
-  shadow content.  They had been either deleted, moved, or otherwise
-  scoped-out from the content.
+  If refreshDeletes of syncDoneValue is FALSE, the new copy includes all
+  changed entries returned by the reissued Sync Operation as well as all
+  unchanged entries identified as being present by the reissued Sync
+  Operation, but whose content is provided by the previous Sync
+  Operation.  The unchanged entries not identified as being present are
+  deleted from the client content.  They had been either deleted, moved,
+  or otherwise scoped-out from the content.
 
-  If refreshDeletes is TRUE, the new copy includes all changed entries
-  returned by the reissued Sync operation as well as all other entries
-  of the previous copy except those which were identified as having been
-  deleted from the content.
+  If refreshDeletes of syncDoneValue is TRUE, the new copy includes all
+  changed entries returned by the reissued Sync Operation as well as all
+  other entries of the previous copy except for those which are
+  identified as having been deleted from the content.
 
   The client can, at some later time, re-poll for changes to this
-  synchronized shadow copy.
+  synchronized client copy.
 
 
 1.3.2. Listening for Changes (refreshAndPersist)
 
   Polling for changes can be expensive in terms of server, client, and
+  network resources.  The refreshAndPersist mode allows for active
+  updates of changed entries in the content.
 
+  By selecting the refreshAndPersist mode, the client requests the
+  server to send updates of entries that are changed after the initial
+  refresh content is determined.  Instead of sending a SearchResultDone
+  Message as in polling, the server sends a Sync Info Message to the
+  client indicating that the refresh stage is complete and then enters
+  the persist stage.  After receipt of this Sync Info Message, the
+  client will construct a synchronized copy as described in Section
+  1.3.1.
 
+  The server may then send change notifications as the result of the
+  original Sync search request which now remains persistent in the
+  server.  For entries to be added to the returned content, the server
+  sends a SearchResultEntry (with attributes) with a Sync State Control
+  indicating state add.  For entries to be deleted from the content, the
+  server sends a SearchResultEntry containing no attributes and a Sync
 
-Zeilenga               LDAP Content Sync Operation              [Page 5]
-\f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
 
 
-  network resources. The refreshAndPersist mode allows for active
-  updates of changed entries in the content.
+Zeilenga               LDAP Content Sync Operation              [Page 7]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
-  By selecting the refreshAndPersist mode, the client requests the
-  server to send updates of entries that are changed after the the
-  initial refresh content is determined.  Instead of sending a
-  searchResultDone message as described above, the server sends a Sync
-  Info message to the client indicating that refresh phase is complete
-  and then enters persist phase.  After receipt of this Sync Info
-  message, the client will have a synchronized shadow copy as described
-  above.
-
-  The server may then send change notifications.  For entries to be
-  added to the returned content, the server sends a searchResultEntry
-  (with attributes) with a Sync State control indicating state add.  For
-  entries to be deleted from the content, the server sends a
-  searchResultEntry containing with no attributes and a Sync State
-  control indicating state delete.  To modify entries in the return
-  content, the server sends a searchResultEntry (with attributes) with a
-  Sync State control indicating state modify.  Upon modification of an
-  entry, all (modified or unmodified) attributes belonging to the
-  content are sent.
+
+  State Control indicating state delete.  For entries to be modified in
+  the return content, the server sends a SearchResultEntry (with
+  attributes) with a Sync State Control indicating state modify.  Upon
+  modification of an entry, all (modified or unmodified) attributes
+  belonging to the content are sent.
 
   Note that renaming an entry of the DIT may cause an add state change
   where the entry is renamed into the content, a delete state change
   where the entry is renamed out of the content, and a modify state
   change where the entry remains in the content.  Also note that a
-  modification of an entry of the DIT may cause a add, delete, or modify
-  state change to the content.
+  modification of an entry of the DIT may cause an add, delete, or
+  modify state change to the content.
 
   Upon receipt of a change notification, the client updates its copy of
   the content.
 
   If the server desires to update the syncCookie during the persist
-  stage, it may include the syncCookie any Sync State control or Sync
-  Info message returned.
+  stage, it may include the syncCookie in any Sync State Control or Sync
+  Info Message returned.
 
   The operation persists until canceled [CANCEL] by the client or
-  terminated by the server.  A Sync Done control may be attached to
-  searchResultDone message to provide a new syncCookie.
+  terminated by the server.  A Sync Done Control shall be attached to
+  SearchResultDone Message to provide a new syncCookie.
+
+
+1.4. Conventions
+
+  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 BCP 14 [RFC2119].
+
+  Protocol elements are described using ASN.1 [X.680] with implicit
+  tags.  The term "BER-encoded" means the element is to be encoded using
+  the Basic Encoding Rules [X.690] under the restrictions detailed in
+  Section 5.1 of [RFC2251].
 
 
 2. Elements of the Sync Operation
 
   The Sync Operation is defined as an extension to the LDAP Search
   Operation [RFC2251] where the directory user agent (DUA or client)
-  submits a SearchRequest message with a Sync Request control and the
+  submits a SearchRequest Message with a Sync Request Control and the
   directory system agent (DSA or server) responses with zero or more
+  SearchResultEntry Messages, each with a Sync State Control; zero or
+  more SearchResultReference Messages, each with a Sync State Control;
+  zero or more Sync Info Intermediate Response Messages; and a
+  SearchResultDone Message with a Sync Done Control.
 
 
 
-Zeilenga               LDAP Content Sync Operation              [Page 6]
-\f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
 
+Zeilenga               LDAP Content Sync Operation              [Page 8]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
-  SearchResultEntry messages, each with a Sync State control; zero or
-  more SearchResultReference messages, each with a Sync State control;
-  zero or more Sync Intermediate Response messages; and a
-  searchResultDone message with a Sync Done control.
 
   To allow clients to discover support for this operation, servers
-  implementing this operation SHOULD publish the IANA-ASSIGNED-OID.1 as
-  a value of supportedControl root DSE attribute.
+  implementing this operation SHOULD publish the
+  1.3.6.1.4.1.4203.1.9.1.1 as a value of 'supportedControl' attribute
+  [RFC2252] of the root DSA-specific entry (DSE).  A server MAY choose
+  to advertise this extension only when the client is authorized to use
+  it.
 
 
-2.1 Common ASN.1 elements
+2.1 Common ASN.1 Elements
 
 2.1.1 syncUUID
 
-  The syncUUID is a notational convenience to indicate that, while the
-  syncUUID type is encoded as an OCTET STRING, its value is restricted
-  to the string representation of an Universally Unique Identifier
-  (UUID) defined in [UUID].
+  The syncUUID data type is an OCTET STRING holding a 128-bit (16-octet)
+  Universally Unique Identifier (UUID) [UUID].
 
-      syncUUID ::= OCTET STRING
+      syncUUID ::= OCTET STRING (SIZE(16))
+           -- constrained to UUID
 
 
-  2.1.2 syncCookie
+2.1.2 syncCookie
 
   The syncCookie is a notational convenience to indicate that, while the
   syncCookie type is encoded as an OCTET STRING, its value is an opaque
   value containing information about the synchronization session and its
   state.  Generally, the session information would include a hash of the
-  operation parameters which the server requires not be changed; the
-  synchronization state information includes a commit (log) sequence
-  number, a change sequence number, or a time stamp; and a digital
-  signature for detection of tampering.
+  operation parameters which the server requires not be changed and the
+  synchronization state information would include a commit (log)
+  sequence number, a change sequence number, or a time stamp.  For
+  convenience of description, the term no cookie refers either to null
+  cookie or to a cookie with pre-initialized synchronization state.
 
       syncCookie ::= OCTET STRING
 
@@ -379,38 +485,40 @@ INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
 2.2 Sync Request Control
 
   The Sync Request Control is an LDAP Control [RFC2251, Section 4.1.2]
-  where the controlType is the object identifier IANA-ASSIGNED-OID.1 and
-  the controlValue, an OCTET STRING, contains a BER-encoded
-  syncRequestValue.  The criticality field is either TRUE or FALSE.
+  where the controlType is the object identifier
+  1.3.6.1.4.1.4203.1.9.1.1 and the controlValue, an OCTET STRING,
+  contains a BER-encoded syncRequestValue.  The criticality field is
+  either TRUE or FALSE.
 
       syncRequestValue ::= SEQUENCE {
           mode ENUMERATED {
               -- 0 unused
               refreshOnly       (1),
               -- 2 reserved
+              refreshAndPersist (3)
 
 
 
-Zeilenga               LDAP Content Sync Operation              [Page 7]
+Zeilenga               LDAP Content Sync Operation              [Page 9]
 \f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
 
-              refreshAndPersist (3)
           },
-          cookie syncCookie OPTIONAL
+          cookie     syncCookie OPTIONAL,
+          reloadHint BOOLEAN DEFAULT FALSE
       }
 
-  The Sync Request Control is only applicable to the searchRequest
-  message.
+  The Sync Request Control is only applicable to the SearchRequest
+  Message.
 
 
 2.3 Sync State Control
 
   The Sync State Control is an LDAP Control [RFC2251, Section 4.1.2]
-  where the controlType is the object identifier IANA-ASSIGNED-OID.2 and
-  the controlValue, an OCTET STRING, contains a BER-encoded
-  syncStateValue.  The criticality is FALSE.
+  where the controlType is the object identifier
+  1.3.6.1.4.1.4203.1.9.1.2 and the controlValue, an OCTET STRING,
+  contains a BER-encoded syncStateValue.  The criticality is FALSE.
 
       syncStateValue ::= SEQUENCE {
           state ENUMERATED {
@@ -420,26 +528,26 @@ INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
               delete (3)
           },
           entryUUID syncUUID,
-          cookie syncCookie OPTIONAL
+          cookie    syncCookie OPTIONAL
       }
 
   The Sync State Control is only applicable to SearchResultEntry and
-  SearchResultReference messages.
+  SearchResultReference Messages.
 
 
 2.4 Sync Done Control
 
   The Sync Done Control is an LDAP Control [RFC2251, Section 4.1.2]
-  where the controlType is the object identifier IANA-ASSIGNED-OID.3 and
-  the controlValue contains a BER-encoded syncDoneValue.  The
-  criticality is FALSE (and hence absent).
+  where the controlType is the object identifier
+  1.3.6.1.4.1.4203.1.9.1.3 and the controlValue contains a BER-encoded
+  syncDoneValue.  The criticality is FALSE (and hence absent).
 
       syncDoneValue ::= SEQUENCE {
-          cookie syncCookie OPTIONAL,
-          refreshDeletes BOOLEAN DEFAULT FALSE,
+          cookie          syncCookie OPTIONAL,
+          refreshDeletes  BOOLEAN DEFAULT FALSE
       }
 
-  The Sync Done Control is only applicable to SearchResultDone message.
+  The Sync Done Control is only applicable to SearchResultDone Message.
 
 
 2.5 Sync Info Message
@@ -447,147 +555,182 @@ INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
 
 
 
-Zeilenga               LDAP Content Sync Operation              [Page 8]
+Zeilenga               LDAP Content Sync Operation             [Page 10]
 \f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
 
   The Sync Info Message is an LDAP Intermediate Response Message
   [LDAPIRM] where responseName is the object identifier
-  IANA-ASSIGNED-OID.4 and responseValue contains a BER-encoded
+  1.3.6.1.4.1.4203.1.9.1.4 and responseValue contains a BER-encoded
   syncInfoValue.  The criticality is FALSE (and hence absent).
 
       syncInfoValue ::= CHOICE {
-           newcookie [0] syncCookie,
-           refreshDone [1] SEQUENCE {
-           cookie syncCookie OPTIONAL,
-           refreshDeletes BOOLEAN DEFAULT FALSE
-           }
+          newcookie      [0] syncCookie,
+          refreshDelete  [1] SEQUENCE {
+              cookie         syncCookie OPTIONAL,
+              refreshDone    BOOLEAN DEFAULT TRUE
+          },
+          refreshPresent [2] SEQUENCE {
+              cookie         syncCookie OPTIONAL,
+              refreshDone    BOOLEAN DEFAULT TRUE
+          },
+          syncIdSet      [3] SEQUENCE {
+              cookie         syncCookie OPTIONAL,
+              refreshDeletes BOOLEAN DEFAULT FALSE,
+              syncUUIDs      SET OF syncUUID
+          }
       }
 
 
 2.6 Sync Result Codes
 
-  The following LDAP resultCodes [RFC2251] are defined:
+  The following LDAP resultCode [RFC2251] is defined:
 
-      syncRefreshRequired (IANA-ASSIGNED-CODE-0)
+      e-syncRefreshRequired (IANA-ASSIGNED-CODE)
 
 
 3. Content Synchronization
 
-  The Sync Operation is invoked by the client sending a searchRequest
-  message with a Sync Request Control.
+  The Sync Operation is invoked by the client sending a SearchRequest
+  Message with a Sync Request Control.
 
-  The absence of a cookie indicates a request for initial content while
-  the presence of a cookie indicates a request for content update.
-  Synchronization Sessions are discussed in Section 3.1.  Content
-  Determination is discussed in Section 3.2.
+  The absence of a cookie or an initialized synchronization state in a
+  cookie indicates a request for initial content while the presence of a
+  cookie representing a state of a client copy indicates a request for
+  content update.  Synchronization Sessions are discussed in Section
+  3.1.  Content Determination is discussed in Section 3.2.
 
   The mode is either refreshOnly or refreshAndPersist.  The refreshOnly
-  and refreshAndPersist modes are discussed in Section 3.3 and 3.4,
-  respectively. The refreshOnly mode consists only of a refresh stage,
-  while the refreshAndPersist mode consists of a refresh stage and a
-  subsequent persist stage.
+  and refreshAndPersist modes are discussed in Section 3.3 and Section
+  3.4, respectively.  The refreshOnly mode consists only of a refresh
+  stage, while the refreshAndPersist mode consists of a refresh stage
+  and a subsequent persist stage.
 
 
-3.1. Synchronization Session
 
-  A sequence of Sync Operations where the last cookie returned by a
-  operation is provided by the client in the next operation are said to
-  belong to the same Synchronization Session.
 
-  The client MUST specify the same content controlling parameters (see
-  Section 3.5) in each Search Request of the session.  The client SHOULD
-  also issue each Sync request of a session under the same
-  authentication and authorization associations with equivalent
 
+Zeilenga               LDAP Content Sync Operation             [Page 11]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
 
-Zeilenga               LDAP Content Sync Operation              [Page 9]
-\f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
+3.1. Synchronization Session
 
+  A sequence of Sync Operations where the last cookie returned by the
+  server for one operation is provided by the client in the next
+  operation are said to belong to the same Synchronization Session.
 
-  integrity and confidential protections.  If the server does not
-  recognize the request cookie or the request is made under different
-  associations or inequivalent protections, the server SHALL process the
-  request as if no cookie had been provided.
+  The client MUST specify the same content controlling parameters (see
+  Section 3.5) in each Search Request of the session.  The client SHOULD
+  also issue each Sync request of a session under the same
+  authentication and authorization associations with equivalent
+  integrity and protections.  If the server does not recognize the
+  request cookie or the request is made under different associations or
+  non-equivalent protections, the server SHALL return the initial
+  content as if no cookie had been provided or return an empty content
+  with the e-syncRefreshRequired LDAP result code.  The decision between
+  the return of the initial content and the return of the empty content
+  with the e-syncRefreshRequired result code MAY be based on reloadHint
+  in the Sync Request Control from the client.  If the server recognizes
+  the request cookie as representing empty or initial synchronization
+  state of the client copy, the server SHALL return the initial content.
 
   A Synchronization Session may span multiple LDAP sessions between the
   client and the server.  The client SHOULD issue each Sync request of a
-  session to the same server.
+  session to the same server.  (Note: Shadowing considerations are
+  discussed in Section 6.)
 
 
 3.2.  Content Determination
 
   The content to be provided is determined by parameters of the Search
   Request, as described in [RFC2251], and possibly other controls.  The
-  same content SHOULD be used in each Sync request of a session.  If
-  different content is requested and the server is unwilling or unable
-  to process the request, the server SHALL process the request as if no
-  cookie had been provided.
+  same content parameters SHOULD be used in each Sync request of a
+  session.  If different content is requested and the server is
+  unwilling or unable to process the request, the server SHALL return
+  the initial content as if no cookie had been provided or return an
+  empty content with the e-syncRefreshRequired LDAP result code.  The
+  decision between the return of the initial content and the return of
+  the empty content with the e-syncRefreshRequired result code MAY be
+  based on reloadHint in the Sync Request Control from the client.
 
   The content may not necessarily include all entries or references
   which would be returned by a normal search operation nor, for those
   entries included, not all attributes returned by a normal search.
-  Where the server is unwilling or unable to provide synchronization for
-  an attribute for a set of entries, the server MUST treat all filter
-  components matching against these attribute as Undefined and MUST NOT
-  return the attribute in searchResultEntry responses.
+  When the server is unwilling or unable to provide synchronization for
+  any attribute for a set of entries, the server MUST treat all filter
+  components matching against these attributes as Undefined and MUST NOT
+  return these attributes in SearchResultEntry responses.
+
+
+
+
+Zeilenga               LDAP Content Sync Operation             [Page 12]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
+
 
   Servers SHOULD support synchronization for all non-collective
-  user-applications attributes for all entries.
+  user-application attributes for all entries.
 
   The server may also return continuation references to other servers or
   to itself.  The latter is allowed as the server may partition the
   entries it holds into separate synchronization contexts.
 
-  The client may chase all or some of these continuations, each in a
-  separate LDAP session.
+  The client may chase all or some of these continuations, each as a
+  separate content synchronization session.
 
 
-3.3.  refreshOnly mode
+3.3.  refreshOnly Mode
 
-  A Sync request with mode refreshOnly and no cookie is a poll for
-  initial content.  A Sync request with mode refreshOnly and cookie is a
-  poll for content update.
+  A Sync request with mode refreshOnly and with no cookie is a poll for
+  initial content.  A Sync request with mode refreshOnly and with a
+  cookie representing a synchronization state is a poll for content
+  update.
 
 
 3.3.1.  Initial Content Poll
 
   Upon receipt of the request, the server provides the initial content
+  using a set of zero or more SearchResultEntry and
+  SearchResultReference Messages followed by a SearchResultDone Message.
 
-
-
-Zeilenga               LDAP Content Sync Operation             [Page 10]
-\f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
-
-
-  using a set of zero or more searchResultEntry and
-  searchResultReference messages followed by a searchResultDone message.
-
-  Each searchResultEntry message SHALL include a Sync State control of
+  Each SearchResultEntry Message SHALL include a Sync State Control of
   state add, entryUUID containing the entry's UUID, and no cookie.  Each
-  searchResultReference message SHALL include a Sync State control of
+  SearchResultReference Message SHALL include a Sync State Control of
   state add, entryUUID containing the UUID associated with the reference
-  (normally the referral [RFC3296] object's entryUUID), and no cookie.
-  The searchResultDone message SHALL include a Sync Done control.  The
-  refreshDeletes SHALL be FALSE.
+  (normally the UUID of the associated named referral [RFC3296] object),
+  and no cookie.  The SearchResultDone Message SHALL include a Sync Done
+  Control having refreshDeletes set to FALSE.
 
   A resultCode value of success indicates the operation successfully
   completed.  Otherwise, the result code indicates the nature of
-  failure.
+  failure.  The server may return e-syncRefreshRequired result code on
+  the initial content poll if it is safe to do so when it is unable to
+  perform the operation due to various reasons. reloadHint is set to
+  FALSE in the SearchRequest Message requesting the initial content
+  poll.
 
-  If the operation is successful, a cookie SHOULD be returned for use in
-  subsequent Sync operations.
+  If the operation is successful, a cookie representing the
+  synchronization state of the current client copy SHOULD be returned
+  for use in subsequent Sync Operations.
 
 
 3.3.2.  Content Update Poll
 
+
+
+
+Zeilenga               LDAP Content Sync Operation             [Page 13]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
+
+
   Upon receipt of the request the server provides the content refresh
-  using a set of zero or more searchResultEntry and
-  searchResultReference messages followed by a searchResultDone message.
+  using a set of zero or more SearchResultEntry and
+  SearchResultReference Messages followed by a SearchResultDone Message.
 
   The server is REQUIRED to either:
       a) provide the sequence of messages necessary for eventual
@@ -595,295 +738,411 @@ INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
          copy,
 
       b) treat the request as an initial content request (e.g., ignore
-         the cookie),
+         the cookie or the synchronization state represented in the
+         cookie),
+
+      c) indicate that the incremental convergence is not possible by
+         returning e-syncRefreshRequired,
+
+      d) return a resultCode other than success or
+         e-syncRefreshRequired.
+
+  A Sync Operation may consist of a single present phase, a single
+  delete phase, or a present phase followed by a delete phase.
+
+  In each phase, for each entry or reference which has been added to the
+  content or been changed since the previous Sync Operation indicated by
+  the cookie, the server returns a SearchResultEntry or
+  SearchResultReference Message, respectively, each with a Sync State
+  Control consisting of state add, entryUUID containing the UUID of the
+  entry or reference, and no cookie.  Each SearchResultEntry Message
+  represents the current state of a changed entry.  Each
+  SearchResultReference Message represents the current state of a
+  changed reference.
+
+  In the present phase, for each entry which has not been changed since
+  the previous Sync Operation, an empty SearchResultEntry is returned
+  whose objectName reflects the entry's current DN, the attributes field
+  is empty, and a Sync State Control consisting of state present,
+  entryUUID containing the UUID of the entry, and no cookie.  For each
+  reference which has not been changed since the previous Sync
+  Operation, an empty SearchResultReference containing an empty SEQUENCE
+  OF LDAPURL is returned with a Sync State Control consisting of state
+  present, entryUUID containing the UUID of the entry, and no cookie.
+  No messages are sent for entries or references which are no longer in
+  the content.
 
-      c) indicate that convergence is not possible by returning
-         syncRefreshRequired,
+  Multiple empty entries with a Sync State Control of state present
+  SHOULD be coalesced into one or more Sync Info Messages of syncIdSet
+  value with refreshDeletes set to FALSE.  syncUUIDs contain a set of
+  UUIDs of the entries and references unchanged since the last Sync
 
-      d) return a resultCode other than success or syncRefreshRequired.
 
-  For each entry or reference added to the content or was changed since
-  the previous Sync operation indicated by the cookie, the server
-  returns a searchResultEntry or searchResultReference message,
-  respectively, each with a Sync State cookie of state add, entryUUID
-  containing the UUID of the entry or reference, and no cookie.  Each
-  searchResultEntry message represents the current state of a changed
-  entry.  Each SearchResultReference message represents the current
-  state of a changed reference.
 
-  For each entry which has not been changed since the previous Sync
+Zeilenga               LDAP Content Sync Operation             [Page 14]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
+
+
+  Operation.  syncUUIDs may be empty.  The Sync Info Message of
+  syncIdSet may contain cookie to represent the state of the content
+  after performing the synchronization of the entries in the set.
+
+  In the delete phase, for each entry no longer in the content, the
+  server returns a SearchResultEntry whose objectName reflects a past DN
+  of the entry or is empty, the attributes field is empty, and a Sync
+  State Control consisting of state delete, entryUUID containing the
+  UUID of the deleted entry, and no cookie.  For each reference no
+  longer in the content, a SearchResultReference containing an empty
+  SEQUENCE OF LDAPURL is returned with a Sync State Control consisting
+  of state delete, entryUUID containing the UUID of the deleted
+  reference, and no cookie.
+
+  Multiple empty entries with a Sync State Control of state delete
+  SHOULD be coalesced into one or more Sync Info Messages of syncIdSet
+  value with refreshDeletes set to TRUE.  syncUUIDs contain a set of
+  UUIDs of the entries and references which has been deleted from the
+  content since the last Sync Operation.  syncUUIDs may be empty.  The
+  Sync Info Message of syncIdSet may contain cookie to represent the
+  state of the content after performing the synchronization of the
+  entries in the set.
+
+  When a present phase is followed by a delete phase, the two phases are
+  delimited by a Sync Info Message containing syncInfoValue of
+  refreshPresent, which may contain cookie representing the state after
+  completing the present phase.  The refreshPresent contains refreshDone
+  which is always FALSE in the refreshOnly mode of Sync Operation
+  because it is followed by a delete phase.
+
+  If a Sync Operation consists of a single phase, each phase and hence
+  the Sync Operation are marked ended by a SearchResultDone Message with
+  Sync Done Control which SHOULD contain cookie representing the state
+  of the content after completing the Sync Operation.  The Sync Done
+  Control contains refreshDeletes which is set to FALSE for the present
+  phase and set to TRUE for the delete phase.
+
+  If a Sync Operation consists of a present phase followed by a delete
+  phase, the Sync Operation are marked ended at the end of the delete
+  phase by a SearchResultDone Message with Sync Done Control which
+  SHOULD contain cookie representing the state of the content after
+  completing the Sync Operation.  The Sync Done Control contains
+  refreshDeletes which is set to TRUE.
+
+  The client can specify whether it prefers to receive an initial
+  content by supplying reloadHint of TRUE or to receive a
+  e-syncRefreshRequired resultCode by supplying reloadHint of FALSE
+  (hence absent), in the case that the server determines that it is
 
 
 
-Zeilenga               LDAP Content Sync Operation             [Page 11]
+Zeilenga               LDAP Content Sync Operation             [Page 15]
 \f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
-
-
-  operation, a searchResultEntry is returned whose objectName reflects
-  the entry's current DN, the attributes field is empty, and a Sync
-  State control of state present, entryUUID containing the UUID of the
-  entry, and no cookie.  For each reference which has not been changed
-  since the previous Sync operation, a searchResultReference containing
-  an empty SEQUENCE OF LDAPURL is returned with a Sync State control of
-  state present, entryUUID containing the UUID of the entry, and no
-  cookie.  No messages are sent for entries or references which are no
-  longer in content.
-
-  As an alternative to sending messages for each entry and reference
-  which has not been changed, the server may instead return the
-  following.  For each entry no longer in content, return a
-  searchResultEntry whose objectName reflects a past DN of the entry or
-  is empty, the attributes field is empty, and a Sync State control of
-  state delete, entryUUID containing the UUID of the deleted entry, and
-  no cookie.  For each reference no longer in content, a
-  searchResultReference containing an empty SEQUENCE OF LDAPURL is
-  returned with a a Sync State control of state delete, entryUUID
-  containing the UUID of the deleted reference, and no cookie.
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
-  A resultCode value of success indicates the operation successfully
-  completed.  Otherwise, the result code indicates the nature of
-  failure.
 
-  If the operation is successful, a cookie SHOULD be returned for use in
-  subsequent Sync operations.
+  impossible or inefficient to achieve the eventual convergence by
+  continuing the current incremental synchronization thread.
+
+  A resultCode value of success indicates the operation is successfully
+  completed.  A resultCode value of e-syncRefreshRequired indicates that
+  a full or partial refresh is needed.  Otherwise, the result code
+  indicates the nature of failure.  A cookie is provided in the Sync
+  Done Control for use in subsequent Sync Operations for incremental
+  synchronization.
 
 
-3.4.  refreshAndPersist mode
+3.4.  refreshAndPersist Mode
 
   A Sync request with mode refreshAndPersist asks for initial content or
   content update (during the refresh stage) followed by change
   notifications (during the persist stage).
 
 
-3.4.1. refresh stage
+3.4.1. refresh Stage
 
   The content refresh is provided as described in Section 3.3 excepting
-  that successful completion of content refresh is indicated by sending
-  a Sync Info with state refreshDone message instead of a
-  SearchResultDone message with resultCode success.  A cookie SHOULD be
-  returned for use in subsequent Sync operations.
+  that the successful completion of content refresh is indicated by
+  sending a Sync Info Message of refreshDelete or refreshPresent with a
+  refreshDone value set to TRUE instead of a SearchResultDone Message
+  with resultCode success.  A cookie SHOULD be returned in the Sync Info
+  Message to represent the state of the content after finishing the
+  refresh stage of the Sync Operation.
 
 
-3.4.2. persist stage
+3.4.2. persist Stage
 
   Change notifications are provided during the persist stage.
 
-
-
-Zeilenga               LDAP Content Sync Operation             [Page 12]
-\f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
-
-
   As updates are made to the DIT the server notifies the client of
-  changes to the content.  DIT updates may cause entries references to
-  be added to the content, deleted from the content, or modify entries
-  in the content.  DIT updates may also cause references to be added,
-  deleted, or modified within the content.
+  changes to the content.  DIT updates may cause entries and references
+  to be added to the content, deleted from the content, or modified
+  within the content.  DIT updates may also cause references to be
+  added, deleted, or modified within the content.
 
   Where DIT updates cause an entry to be added to the content, the
-  server provides a searchResultEntry message which represents the entry
+  server provides a SearchResultEntry Message which represents the entry
   as it appears in the content.  The message SHALL include a Sync State
-  control with state of add, entryUUID containing the entry's UUID, and
+  Control with state of add, entryUUID containing the entry's UUID, and
   an optional cookie.
 
   Where DIT updates cause a reference to be added to the content, the
-  server provides a searchResultReference message which represents the
+  server provides a SearchResultReference Message which represents the
   reference in the content.  The message SHALL include a Sync State
-  control with state of add, entryUUID containing the UUID associated
+
+
+
+Zeilenga               LDAP Content Sync Operation             [Page 16]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
+
+
+  Control with state of add, entryUUID containing the UUID associated
   with the reference, and an optional cookie.
 
-  Where DIT updates cause an entry to be modified in the content, the
-  server provides a searchResultEntry message which represents the entry
-  as it appears in the content.  The message SHALL include a Sync State
-  control with state of modify, entryUUID containing the entry's UUID,
-  and an optional cookie.
+  Where DIT updates cause an entry to be modified within the content,
+  the server provides a SearchResultEntry Message which represents the
+  entry as it appears in the content.  The message SHALL include a Sync
+  State Control with state of modify, entryUUID containing the entry's
+  UUID, and an optional cookie.
 
-  Where DIT updates cause a reference to be modified in the content, the
-  server provides a searchResultEntry message which represents the
+  Where DIT updates cause a reference to be modified within the content,
+  the server provides a SearchResultEntry Message which represents the
   reference in the content.  The message SHALL include a Sync State
-  control with state of modify, entryUUID containing the UUID associated
+  Control with state of modify, entryUUID containing the UUID associated
   with the reference, and an optional cookie.
 
   Where DIT updates cause an entry to be deleted from the content, the
-  server provides a searchResultReference message with an empty SEQUENCE
-  OF LDAPURL.  The message SHALL include a Sync State control with state
+  server provides a SearchResultReference Message with an empty SEQUENCE
+  OF LDAPURL.  The message SHALL include a Sync State Control with state
   of delete, entryUUID containing the UUID associated with the
   reference, and an optional cookie.
 
   Where DIT updates cause a reference to be deleted from the content,
-  the server provides a searchResultEntry message with no attributes.
-  The message SHALL include a Sync State control with state of delete,
+  the server provides a SearchResultEntry Message with no attributes.
+  The message SHALL include a Sync State Control with state of delete,
   entryUUID containing the entry's UUID, and an optional cookie.
 
-  With each of these messages, the server may provide a new cookie to be
-  used in subsequent Sync operations.  Additionally, the server may also
-  return Sync Info messages of choice newCookie to provide a new cookie.
-  The client SHOULD use newest (last) cookie it received from the server
-  in subsequent Sync operations.
+  Multiple empty entries with a Sync State Control of state delete
+  SHOULD be coalesced into one or more Sync Info Messages of syncIdSet
+  value with refreshDeletes set to TRUE. syncUUIDs contain a set of
+  UUIDs of the entries and references which has been deleted from the
+  content.  The Sync Info Message of syncIdSet may contain cookie to
+  represent the state of the content after performing the
+  synchronization of the entries in the set.
 
+  With each of these messages, the server may provide a new cookie to be
+  used in subsequent Sync Operations.  Additionally, the server may also
+  return Sync Info Messages of choice newCookie to provide a new cookie.
+  The client SHOULD use the newest (last) cookie it received from the
+  server in subsequent Sync Operations.
 
 
+3.5.    Search Request Parameters
 
+  As stated in Section 3.1, the client SHOULD specify the same content
+  controlling parameters in each Search Request of the session.  All
+  fields of the SearchRequest Message are considered content controlling
+  parameters except for sizeLimit and timeLimit.
 
-Zeilenga               LDAP Content Sync Operation             [Page 13]
-\f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
 
 
-3.5.    Search Request Parameters
 
-  As stated in Section 3.1, the client SHOULD specify the same content
-  controlling parameters (see Section 3.5) in each Search Request of the
-  session.  All fields of the SearchRequest message are considered
-  content controlling parameters except for sizeLimit and timeLimit.
+Zeilenga               LDAP Content Sync Operation             [Page 17]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
 
-3.5.1.  baseObject Issues
+3.5.1.  baseObject
 
-  As with the normal search operation, the refresh and persist phases
+  As with the normal search operation, the refresh and persist stages
   are not isolated from DIT changes.  It is possible that the entry
-  referred to be the baseObject be deleted, renamed, or moved.  It is
+  referred to by the baseObject is deleted, renamed, or moved.  It is
   also possible that alias object used in finding the entry referred to
   by the baseObject is changed such that the baseObject refers to a
   different entry.
 
   If the DIT is updated during processing of the Sync Operation in a
-  manner that causes the baseObject to no longer refers to any entry or
-  changes which entry the baseObject refers to, the server SHALL return
-  an appropriate non-success result code such as noSuchObject,
-  aliasProblem, aliasDereferencingProblem, referral, or
-  syncRefreshRequired.
+  manner that causes the baseObject to no longer refer to any entry or
+  in a manner that changes the entry the baseObject refers to, the
+  server SHALL return an appropriate non-success result code such as
+  noSuchObject, aliasProblem, aliasDereferencingProblem, referral, or
+  e-syncRefreshRequired.
 
 
-3.5.2.  derefAliases Issues
+3.5.2.  derefAliases
 
   This operation does not support alias dereferencing during searching.
   The client SHALL specify neverDerefAliases or derefFindingBaseObj for
-  the searchRequest derefAliases parameter.  The server SHALL treat
+  the SearchRequest derefAliases parameter.  The server SHALL treat
   other values (e.g., derefInSearching, derefAlways) as protocol errors.
 
 
-3.5.3.  sizeLimit Issues
+3.5.3.  sizeLimit
 
-  The sizeLimit applies only to entries (regardless of their syncState)
-  returned during refreshOnly processing or the refresh stage of the
-  refreshAndPersist processing.
+  The sizeLimit applies only to entries (regardless of their state in
+  Sync State Control) returned during the refreshOnly operation or the
+  refresh stage of the refreshAndPersist operation.
 
 
-3.5.4.  timeLimit Issues
+3.5.4.  timeLimit
 
-  For a refreshOnly Sync operation, the timeLimit applies to the whole
+  For a refreshOnly Sync Operation, the timeLimit applies to the whole
   operation.  For a refreshAndPersist operation, the timeLimit applies
-  to processing up to and including generating the Sync Info with state
-  refreshDone message.
+  only to the refresh stage including the generation of the Sync Info
+  Message with a refreshDone value of TRUE.
 
 
+3.5.5.  filter
 
+  The client SHOULD avoid filter assertions which apply to the values of
+  the attributes likely to be considered by the server as ones holding
+  meta-information.  See Section 4.
 
 
-Zeilenga               LDAP Content Sync Operation             [Page 14]
-\f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
-
+3.6.  objectName
 
-3.5.5.  filter Issues
 
-  The client SHOULD avoid filter assertions which apply to values of
-  attributes likely to be considered by the server as holding meta-
-  information.  See section 4.
 
+Zeilenga               LDAP Content Sync Operation             [Page 18]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
-3.6.  objectName Issues
 
-  The Sync operation uses entryUUID values provided in the Sync State
-  control as the primary keys to entries.  The client MUST use these
+  The Sync Operation uses entryUUID values provided in the Sync State
+  Control as the primary keys to entries.  The client MUST use these
   entryUUIDs to correlate synchronization messages.
 
   In some circumstances the DN returned may not reflect the entry's
   current DN.  In particular, when the entry is being deleted from the
-  content, the server MAY provide an empty DN if the server does not
+  content, the server may provide an empty DN if the server does not
   wish to disclose the entry's current DN (or, if deleted from the DIT,
   the entry's last DN).
 
   It should also be noted that the entry's DN may be viewed as meta
-  information (see section 4.1).
+  information (see Section 4.1).
 
 
 3.7.  Canceling the Sync Operation
 
-  Servers SHOULD implement the LDAP Cancel [CANCEL] operation and
-  support cancellation of outstanding Sync operations as described here.
+  Servers MUST implement the LDAP Cancel [CANCEL] Operation and support
+  cancellation of outstanding Sync Operations as described here.
 
-  To cancel an outstanding Sync Operation, the client SHOULD issue a
-  Cancel operation [CANCEL]....
+  To cancel an outstanding Sync Operation, the client issues an LDAP
+  Cancel [CANCEL] Operation.
 
+  If at any time the server becomes unwilling or unable to continue
+  processing a Sync Operation, the server SHALL return a
+  SearchResultDone with a non-success resultCode indicating the reason
+  for the termination of the operation.
 
-3.7. Refresh Required
+  Whether the client or the server initiated the termination, the server
+  may provide a cookie in the Sync Done Control for use in subsequent
+  Sync Operations.
 
-  In order to achieve the eventual-convergent synchronization, the
-  server may terminate the Sync operation in refresh or persist stage by
-  returning a syncRefreshRequired resultCode to the client.  The client
-  may then request a full reload (e.g., no cookie) instead of
-  incremental synchronization in order to obtain a new copy of the
-  content.  In case that the client issues incremental synchronization
-  requests between the issue of a syncRefreshRequired and that of a full
-  reload, the server should send a syncRefreshRequired response again,
-  but the client may receive one or more searchResultEntry responses
-  before it receives the syncRefreshRequired response.
 
-  The server may also choose to provide a full copy in the refresh stage
-  (e.g., ignore the cookie) instead of providing an incremental refresh
-  in order to achieve the eventual convergence.
+3.8. Refresh Required
 
+  In order to achieve the eventually-convergent synchronization, the
+  server may terminate the Sync Operation in the refresh or the persist
+  stage by returning a e-syncRefreshRequired resultCode to the client.
+  If no cookie is provided, a full refresh is needed. If a cookie
+  representing a synchronization state is provided in this response, an
+  incremental refresh is needed.
 
+  To obtain a full refresh, the client then issues a new synchronization
+  request with no cookie.  To obtain an incremental reload, the client
+  issues a new synchronization with the provided cookie.
 
-Zeilenga               LDAP Content Sync Operation             [Page 15]
+  The server may choose to provide a full copy in the refresh stage
+  (e.g., ignore the cookie or the synchronization state represented in
+  the cookie) instead of providing an incremental refresh in order to
+
+
+
+Zeilenga               LDAP Content Sync Operation             [Page 19]
 \f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
 
+  achieve the eventual convergence.
+
+  The decision between the return of the initial content and the return
+  of the e-syncRefreshRequired result code may be based on reloadHint in
+  the Sync Request Control from the client.
+
   In the case of persist stage Sync, the server returns the resultCode
-  of syncRefreshRequired to the client to indicate that the client needs
-  to issue a full reload operation (e.g., no cookie) in order to obtain
-  a synchronized copy of the content.
+  of e-syncRefreshRequired to the client to indicate that the client
+  needs to issue a new Sync Operation in order to obtain a synchronized
+  copy of the content. If no cookie is provided, a full refresh is
+  needed.  If a cookie representing a synchronization state is provided,
+  an incremental refresh is needed.
 
-  The server may also return syncRefreshRequired if it determines that a
-  refresh would be more efficient than sending all the messages required
-  for convergence.
+  The server may also return e-syncRefreshRequired if it determines that
+  a refresh would be more efficient than sending all the messages
+  required for convergence.
 
+  It is noted that the client may receive one or more of
+  SearchResultEntry, SearchResultReference, and/or Sync Info Messages
+  before it receives SearchResultDone Message with the
+  e-syncRefreshRequired result code.
 
-3.8. Chattiness Considerations
+
+3.9. Chattiness Considerations
 
   The server MUST ensure that the number of entry messages generated to
   refresh the client content does not exceed the number of entries
   presently in the content.  While there is no requirement for servers
-  to maintain historical information, if the server has sufficient
-  history to allow it to reliably determine which entries in the prior
-  shadow copy are no longer present in the content and the number of
-  such entries is less than equal the number of unchanged entries, the
+  to maintain history information, if the server has sufficient history
+  to allow it to reliably determine which entries in the prior client
+  copy are no longer present in the content and the number of such
+  entries is less than or equal to the number of unchanged entries, the
   server SHOULD generate delete entry messages instead of present entry
   messages (see Section 3.3.2).
 
+  When the amount of history information maintained in the server is not
+  enough for the clients to perform infrequent refreshOnly Sync
+  Operations, it is likely that the server has incomplete history
+  information (e.g. due to truncation) by the time those clients connect
+  again.
+
+  The server SHOULD NOT resort to full reload when the history
+  information is not enough to generate delete entry messages.  The
+  server SHOULD generate either present entry messages only or present
+  entry messages followed by delete entry messages to bring the client
+  copy to the current state.  In the latter case, the present entry
+  messages bring the client copy to a state covered by the history
+  information maintained in the server.
+
+
+
+Zeilenga               LDAP Content Sync Operation             [Page 20]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
+
+
   The server SHOULD maintain enough (current or historical) state
-  information (such as a context-wide last modify time stamp), to
-  determine that no changes were made in the context since the content
-  to refresh was provided and, and when no changes were made, generate
-  zero delete entry messages instead of present messages.
+  information (such as a context-wide last modify time stamp) to
+  determine if no changes were made in the context since the content
+  refresh was provided and, and when no changes were made, generate zero
+  delete entry messages instead of present messages.
+
+  The server SHOULD NOT use the history information when its use does
+  not reduce the synchronization traffic or when its use can expose
+  sensitive information not allowed to be received by the client.
 
   The server implementor should also consider chattiness issues which
-  span multiple Sync operations of a session.  As noted in Section 3.7,
-  the server may return syncRefreshRequired if it determines that a
-  refresh would be more efficient than continuing under the current
-  operation.
+  span multiple Sync Operations of a session.  As noted in Section 3.8,
+  the server may return e-syncRefreshRequired if it determines that a
+  reload would be more efficient than continuing under the current
+  operation.  If reloadHint in the Sync Request is TRUE, the server may
+  initiate a reload without directing the client to request a reload.
 
   The server SHOULD transfer a new cookie frequently to avoid having to
   transfer information already provided to the client.  Even where DIT
   changes do not cause content synchronization changes to be
   transferred, it may be advantageous to provide a new cookie using a
-  Sync Info message.  However, the server SHOULD avoid overloading the
-  client or network with Sync Info messages.
+  Sync Info Message.  However, the server SHOULD avoid overloading the
+  client or network with Sync Info Messages.
 
   During persist mode, the server SHOULD coalesce multiple outstanding
   messages updating the same entry.  The server MAY delay generation of
@@ -893,11 +1152,41 @@ INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
   short enough that the transient inconsistency induced by the delay is
   corrected in a timely manner.
 
+  The server SHOULD use syncIdSet Sync Info Message when there are
+  multiple delete or present messages to reduce the amount of
+  synchronization traffic.
 
+  It is also noted that there may be many clients interested in a
+  particular directory change, and servers attempting to service all of
+  these at once may cause congestion on the network.  The congestion
+  issues are magnified when the change requires a large transfer to each
+  interested client.  Implementors and deployers of servers should take
+  steps to prevent and manage network congestion.
 
-Zeilenga               LDAP Content Sync Operation             [Page 16]
+
+3.10. Operation Multiplexing
+
+  The LDAP protocol model [RFC2251] allows operations to be multiplexed
+  over a single LDAP session.  Clients SHOULD NOT maintain multiple LDAP
+
+
+
+Zeilenga               LDAP Content Sync Operation             [Page 21]
 \f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
+
+
+  sessions with the same server.  Servers SHOULD ensure that responses
+  from concurrently processed operations are interleaved fairly.
+
+  Clients SHOULD combine Sync Operations whose result set is largely
+  overlapping.  This avoids having to return multiple messages, once for
+  each overlapping session, for changes to entries in the overlap.
+
+  Clients SHOULD NOT combine Sync Operations whose result sets are
+  largely non-overlapping with each other.  This ensures that an event
+  requiring a e-syncRefreshRequired response can be limited to as few
+  result sets as possible.
 
 
 4. Meta Information Considerations
@@ -907,19 +1196,21 @@ INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
   As an entry's DN is constructed from its relative DN (RDN) and the
   entry's parent's DN, it is often viewed as meta information.
 
-  While renaming or moving a superior to an entry causes the entry's DN
-  to change, that change SHOULD NOT, by itself, cause synchronization
-  message to be sent for that entry.  However, if renaming or moving of
-  a superior could cause the entry to added or deleted from the content
-  and, if so, appropriate synchronization messages should be generated
-  to indicate this to the client.
+  While renaming or moving to a new superior causes the entry's DN to
+  change, that change SHOULD NOT, by itself, cause synchronization
+  messages to be sent for that entry.  However, if the renaming or the
+  moving could cause the entry to be added or deleted from the content,
+  appropriate synchronization messages should be generated to indicate
+  this to the client.
 
-  Where a server treats the entry's DN as meta information, the server
+  When a server treats the entry's DN as meta information, the server
   SHALL either
-      - evaluate all MatchingRuleAssertions to TRUE if matching a value
-  of an attribute of the entry and otherwise Undefined, or
-        - evaluate all MatchingRuleAssertion with dnAttributes of TRUE
-        as Undefined.
+
+      - evaluate all MatchingRuleAssertions [RFC2251] to TRUE if
+        matching a value of an attribute of the entry and otherwise
+        Undefined, or
+      - evaluate all MatchingRuleAssertion with dnAttributes of TRUE as
+        Undefined.
 
   The latter choice is offered for ease of server implementation.
 
@@ -933,38 +1224,37 @@ INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
   For example, in servers which implement X.501 subschema model [X.501],
   servers should not support synchronization of the subschemaSubentry
   attribute as its value is determined by values held and administrated
+
+
+
+Zeilenga               LDAP Content Sync Operation             [Page 22]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
+
+
   in subschema subentries.
 
-  For a counter example, servers which implement aliases
-  [RFC2256][X.501] can support synchronization of the aliasedObjectName
-  attribute as its values are held and administrated as part of the
-  alias entries.
+  As a counter example, servers which implement aliases [RFC2256][X.501]
+  can support synchronization of the aliasedObjectName attribute as its
+  values are held and administrated as part of the alias entries.
 
   Servers SHOULD support synchronization of the following operational
   attributes: createTimestamp, modifyTimestamp, creatorsName,
   modifiersName [RFC2252].  Servers MAY support synchronization of other
-  operational attributes.  Synchronization of operational attributes is
-  discussed in Section 4.1.
+  operational attributes.
 
 
 4.3. Collective Attributes
 
-
-
-Zeilenga               LDAP Content Sync Operation             [Page 17]
-\f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
-
-
   A collective attribute is "a user attribute whose values are the same
   for each member of an entry collection" [X.501].  Use of collective
-  attributes in LDAP is detailed in [COLLECTIVE].
+  attributes in LDAP is discussed in [RFC3371].
 
   Modification of a collective attribute generally affects the content
-  of multiple entries, each a member of the collection.  It is
+  of multiple entries, which are the members of the collection.  It is
   inefficient to include values of collective attributes visible in
   entries of the collection, as a single modification of a collective
-  attribute require transmission of multiple SearchResultEntry (one of
+  attribute requires transmission of multiple SearchResultEntry (one for
   each entry of the collection which the modification affected) to be
   transmitted.
 
@@ -973,345 +1263,381 @@ INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
   collective attributes appearing in collective attribute subentries.
 
 
-4.4. Access and other administrative controls
+4.4. Access and Other Administrative Controls
 
   Entries are commonly subject to access and other administrative
-  controls.  While portions of the policy information governing a
+  Controls.  While portions of the policy information governing a
   particular entry may be held in the entry, policy information is often
   held elsewhere (in superior entries, in subentries, in the root DSE,
-  in configuration files, ...).  Because of this, changes to policy
+  in configuration files etc.).  Because of this, changes to policy
   information make it difficult to ensure eventual convergence during
   incremental synchronization.
 
   Where it is impractical or infeasible to generate content changes
   resulting from a change to policy information, servers may opt to
-  return syncRefreshRequired or treat the Sync Operation as an initial
-  content request (e.g., ignore the cookie).
+  return e-syncRefreshRequired or treat the Sync Operation as an initial
+  content request (e.g., ignore the cookie or the synchronization state
+  represented in the cookie).
+
+
 
 
-5. Interaction with other controls
+
+Zeilenga               LDAP Content Sync Operation             [Page 23]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
+
+
+5. Interaction with Other Controls
 
   The Sync Operation may be used with:
 
       - ManageDsaIT Control [RFC3296]
-      - Subentries Control [SUBENTRY]
+      - Subentries Control [RFC3672]
 
-  as described below.  The Sync operation may be used with other LDAP
+  as described below.  The Sync Operation may be used with other LDAP
   extensions as detailed in other documents.
 
 
-5.1. ManageDsaIT control
+5.1. ManageDsaIT Control
 
-  The ManageDsaIT control [RFC3296] indicates that the operation acts
+  The ManageDsaIT Control [RFC3296] indicates that the operation acts
   upon the DSA Information Tree and causes referral and other special
+  entries to be treated as object entries with respect to the operation.
 
 
+5.2. Subentries Control
 
-Zeilenga               LDAP Content Sync Operation             [Page 18]
-\f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
+  The Subentries Control is used with the search operation "to control
+  the visibility of entries and subentries which are within scope"
+  [RFC3672].  When used with the Sync Operation, the subentries control
+  and other factors (search scope, filter, etc.) are used to determine
+  whether an entry or subentry appear in the content or not.
 
 
-  objects to be treated as normal objects with respect to the operation.
+6. Shadowing Considerations
 
+  As noted in [RFC2251], some servers may hold shadow copies of entries
+  which can be used to answer search and comparison queries.  Such
+  servers may also support content synchronization requests.  This
+  section discusses considerations for implementors and deployers for
+  the implementation and deployment of the Sync operation in shadowed
+  directories.
 
-5.2. Subentries control
+  While a client may know of multiple servers which are equally capable
+  of being used to obtain particular directory content from, a client
+  SHOULD NOT assume that each of these server is equally capable of
+  continuing a content synchronization session.  As stated in Section
+  3.1, the client SHOULD issue each Sync request of a Sync session to
+  the same server.
 
-  The Subentries control is used with the search operation "to control
-  the visibility of entries and subentries which are within scope"
-  [SUBENTRY].  When used with the Sync Operation, the subentries control
-  and other factors (search scope, filter, etc.) are used to determining
-  whether an entry or subentry appear in the content or not.
+  However, through domain naming or IP address redirection or other
+  techniques, multiple physical servers can be made to appear as one
+  logical server to a client.  Only servers which are equally capable in
+  regards to their support for the Sync operation and which hold equally
+  complete copies of the entries should be made to appear as one logical
+
+
+
+Zeilenga               LDAP Content Sync Operation             [Page 24]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
+
+
+  server.  In particular, each physical server acting as one logical
+  server SHOULD be equally capable of continuing a content
+  synchronization based upon cookies provided by any of the other
+  physical servers without requiring a full reload.  Because there is no
+  standard LDAP shadowing mechanism, the specification of how to
+  independently implement equally capable servers (as well as the
+  precise definition of "equally capable") is left to future documents.
 
+  It is noted that it may be difficult for the server to reliably
+  determine what content was provided to the client by another server,
+  especially in the shadowing environments which allow shadowing events
+  to be coalesced.  Where so, the use of the delete phase discussed in
+  Section 3.3.2 may not be applicable.
 
-6. Security Considerations
+
+7. Security Considerations
 
   In order to maintain a synchronized copy of the content, a client is
   to delete information from its copy of the content as described above.
   However, the client may maintain knowledge of information disclosed to
   it by the server separate from its copy of the content used for
   synchronization.  Management of this knowledge is beyond the scope of
-  this document.
+  this document.  Servers should be careful not to disclose information
+  for content which the client is not authorized to have knowledge of
+  and/or about.
 
   While the information provided by a series of refreshOnly Sync
-  operations is similar to that provided by a series of Search
-  operations, persist stage may disclose additional information.  A
+  Operations is similar to that provided by a series of Search
+  Operations, persist stage may disclose additional information.  A
   client may be able to discern information about the particular
   sequence of update operations which caused content change.
 
   Implementors should take precautions against malicious cookie content,
   including malformed cookies or valid cookies used with different
   security associations and/or protections in attempt to obtain
-  unauthorized access to information.
+  unauthorized access to information.  Servers may include a digital
+  signature in the cookie to detect tampering.
 
-  The Sync operation may be the target of denial of service attacks.
-  Implementors should provide safeguards to ensure these mechanisms are
-  not abused.  Servers may place access control or other restrictions
-  upon the use of this operation.
+  The operation may be the target of direct denial of service attacks.
+  Implementors should provide safeguards to ensure the operation is not
+  abused.  Servers may place access control or other restrictions upon
+  the use of this operation.
 
-  Implementors of this (or any) LDAP extension should be familiar with
-  general LDAP security considerations [RFC3377].
+  It is noted that even small updates to the directory may cause
+  significant amount of traffic to be generated to clients using this
+  operation.  A user could abuse its update privileges to mount an
+  indirect denial of service to these clients, other clients, and/or
+  portions of the network.  Servers should provide safeguards to ensure
 
 
-7. IANA Considerations
 
-  Registration of the following values is requested.
-
-
-7.1.  Object Identifier
+Zeilenga               LDAP Content Sync Operation             [Page 25]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
 
+  update operations are not abused.
 
+  Implementors of this (or any) LDAP extension should be familiar with
+  general LDAP security considerations [RFC3377].
 
-Zeilenga               LDAP Content Sync Operation             [Page 19]
-\f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
 
+8. IANA Considerations
 
-  It is requested that IANA register upon Standards Action an LDAP
-  Object Identifier to identify elements of the LDAP Content
-  Synchronization Operation as defined in this document.
+  Registration of the following values is requested.
 
-      Subject: Request for LDAP Object Identifier Registration
-      Person & email address to contact for further information:
-          Kurt Zeilenga <kurt@OpenLDAP.org>
-      Specification: RFCXXXX
-      Author/Change Controller: IESG
-      Comments:
-          Identifies elements of the LDAP Content Synchronization Operation
+  The OID arc 1.3.6.1.4.1.4203.1.9.1 was assigned [ASSIGN] by OpenLDAP
+  Foundation, under its IANA-assigned private enterprise allocation
+  [PRIVATE], for use in this specification.
 
 
-7.2.  LDAP Protocol Mechanism
+8.2.  LDAP Protocol Mechanism
 
-  It is requested that IANA register upon Standards Action the LDAP
-  Protocol Mechanism described in this document.
+  It is requested that IANA register the LDAP Protocol Mechanism
+  described in this document.
 
       Subject: Request for LDAP Protocol Mechanism Registration
-      Object Identifier: IANA-ASSIGNED-OID
+      Object Identifier: 1.3.6.1.4.1.4203.1.9.1.1
       Description: LDAP Content Synchronization Control
       Person & email address to contact for further information:
           Kurt Zeilenga <kurt@openldap.org>
       Usage: Control
-      Specification: RFCXXXX
+      Specification: RFC XXXX
       Author/Change Controller: IESG
       Comments: none
 
 
-7.3.  LDAP Result Codes
+8.3.  LDAP Result Codes
 
-  It is requested that IANA register upon Standards Action the LDAP
-  Result Codes described in this document.
+  It is requested that IANA register the LDAP Result Code described in
+  this document.
 
       Subject: LDAP Result Code Registration
       Person & email address to contact for further information:
           Kurt Zeilenga <kurt@OpenLDAP.org>
-      Result Code Name: syncRefreshRequired (IANA-ASSIGNED-CODE-0)
-      Specification: RFCXXXX
+      Result Code Name: e-syncRefreshRequired (IANA-ASSIGNED-CODE)
+      Specification: RFC XXXX
       Author/Change Controller: IESG
       Comments:  none
 
 
-8. Acknowledgment
+9. Acknowledgments
 
-  This work borrows significantly from the LDAP Client Update Protocol
-  [LCUP].  This work also benefited Persistent Search [PSEARCH],
-  Triggered Search [TSEARCH], and Directory Synchronization [DIRSYNC]
+  This document borrows significantly from the LDAP Client Update
 
 
 
-Zeilenga               LDAP Content Sync Operation             [Page 20]
+Zeilenga               LDAP Content Sync Operation             [Page 26]
 \f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
-
-
-  efforts.  This work also borrows from "Lightweight Directory Access
-  Protocol (v3)" [RFC2251].
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
 
-9. Normative References
+  Protocol [LCUP], a product of the IETF LDUP working group.  This
+  document also benefited from Persistent Search [PSEARCH], Triggered
+  Search [TSEARCH], and Directory Synchronization [DIRSYNC] works.  This
+  document also borrows from "Lightweight Directory Access Protocol
+  (v3)" [RFC2251].
 
-  [RFC2119]    S. Bradner, "Key words for use in RFCs to Indicate
-               Requirement Levels", BCP 14 (also RFC 2119), March 1997.
 
-  [RFC2251]    M. Wahl, T. Howes, S. Kille, "Lightweight Directory
-               Access Protocol (v3)", RFC 2251, December 1997.
+10. Normative References
 
-  [RFC2252]    M. Wahl, A. Coulbeck, T. Howes, S. Kille, "Lightweight
-               Directory Access Protocol (v3):  Attribute Syntax
-               Definitions", RFC 2252, December 1997.
+  [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
+                Requirement Levels", BCP 14 (also RFC 2119), March 1997.
 
-  [RFC2256]    M. Wahl, "A Summary of the X.500(96) User Schema for use
-               with LDAPv3", RFC 2256, December 1997.
+  [RFC2251]     Wahl, M., T. Howes and S. Kille, "Lightweight Directory
+                Access Protocol (v3)", RFC 2251, December 1997.
 
-  [RFC2830]    J. Hodges, R. Morgan, and M. Wahl, "Lightweight Directory
-               Access Protocol (v3): Extension for Transport Layer
-               Security", RFC 2830, May 2000.
+  [RFC2252]     Wahl, M., A. Coulbeck, T. Howes, and S. Kille,
+                "Lightweight Directory Access Protocol (v3):  Attribute
+                Syntax Definitions", RFC 2252, December 1997.
 
-  [RFC3296]    K. Zeilenga, "Named Subordinate References in Lightweight
-               Directory Access Protocol (LDAP) Directories", RFC 3296,
-               July 2002.
+  [RFC3296]     Zeilenga, K., "Named Subordinate References in
+                Lightweight Directory Access Protocol (LDAP)
+                Directories", RFC 3296, July 2002.
 
-  [RFC3377]    J. Hodges, R.L. Morgan, "Lightweight Directory Access
-               Protocol (v3): Technical Specification", RFC 3377,
-               September 2002.
+  [RFC3377]     Hodges, J. and R. Morgan, "Lightweight Directory Access
+                Protocol (v3): Technical Specification", RFC 3377,
+                September 2002.
 
-  [LDAPIRM]    R. Harrison, K. Zeilenga, "LDAP Intermediate Response
-               Message", draft-rharrison-ldap-intermediate-resp-xx.txt
-               (a work in progress).
+  [RFC3671]     Zeilenga, K., "Collective Attributes in LDAP", RFC 3671,
+                December 2003.
 
-  [SUBENTRY]   K. Zeilenga, S. Legg, "Subentries in LDAP",
-               draft-zeilenga-ldap-subentry-xx.txt, a work in progress.
+  [RFC3672]     Zeilenga, K. and S. Legg, "Subentries in LDAP", RFC
+                3672, December 2003.
 
-  [X.680]      ITU-T, "Abstract Syntax Notation One (ASN.1) -
-               Specification of Basic Notation", X.680, 1994.
+  [CANCEL]      Zeilenga, K., "LDAP Cancel Extended Operation",
+                draft-zeilenga-ldap-cancel-xx.txt, a work in progress.
+  [EntryUUID]   Zeilenga, K., "The LDAP EntryUUID Operational
+                Attribute", draft-zeilenga-ldap-uuid-xx.txt, a work in
+                progress.
 
-  [X.690]      ITU-T, "Specification of ASN.1 encoding rules:  Basic,
-               Canonical, and Distinguished Encoding Rules", X.690,
-               1994.
+  [LDAPIRM]     Harrison, R. and Zeilenga, K., "LDAP Intermediate
+                Response",
+                draft-rharrison-ldap-intermediate-resp-00.txt, a work in
+                progress.
 
-  [CANCEL]     K. Zeilenga, "LDAP Cancel Extended Operation",
-               draft-zeilenga-ldap-cancel-xx.txt, a work in progress.
+  [UUID]        International Organization for Standardization (ISO),
+                "Information technology - Open Systems Interconnection -
+                Remote Procedure Call", ISO/IEC 11578:1996
 
 
 
 
-Zeilenga               LDAP Content Sync Operation             [Page 21]
+Zeilenga               LDAP Content Sync Operation             [Page 27]
 \f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
 
-  [UUID]       International Organization for Standardization (ISO),
-               "Information technology - Open Systems Interconnection -
-               Remote Procedure Call", ISO/IEC 11578:1996.
+  [X.680]       International Telecommunication Union -
+                Telecommunication Standardization Sector, "Abstract
+                Syntax Notation One (ASN.1) - Specification of Basic
+                Notation", X.680(1997) (also ISO/IEC 8824-1:1998).
 
+  [X.690]       International Telecommunication Union -
+                Telecommunication Standardization Sector, "Specification
+                of ASN.1 encoding rules: Basic Encoding Rules (BER),
+                Canonical Encoding Rules (CER), and Distinguished
+                Encoding Rules (DER)", X.690(1997) (also ISO/IEC
+                8825-1:1998).
 
-10. Informative References
 
-  [RFC3383]  K. Zeilenga, "IANA Considerations for LDAP", BCP 64 (also
-               RFC 3383), September 2002.
+11. Informative References
 
-  [X.500]    ITU-T Rec. X.500, "The Directory: Overview of Concepts,
-               Models and Service", 1993.
+  [RFC2256]     Wahl, M., "A Summary of the X.500(96) User Schema for
+                use with LDAPv3", RFC 2256, December 1997.
 
-  [X.511]      ITU, "The Directory: Abstract Service Definition", ITU-T
-               Rec. X.511, 1993.
+  [RFC3383]     Zeilenga, K., "IANA Considerations for LDAP", BCP 64
+                (also RFC 3383), September 2002.
 
-  [X.525]      ITU, "The Directory: Replication", ITU-T Rec. X.525,
-               1993.
+  [PRIVATE]     IANA, "Private Enterprise Numbers",
+                http://www.iana.org/assignments/enterprise-numbers.
 
-  [COLLECTIVE] K. Zeilenga, "Collective Attributes in LDAP",
-               draft-zeilenga-ldap-collective-xx.txt, a work in
-               progress.
+  [ASSIGN]      OpenLDAP Foundation, "OpenLDAP OID Delegations",
+                http://www.openldap.org/foundation/oid-delegate.txt.
 
-  [DIRSYNC]    M. Armijo, "Microsoft LDAP Control for Directory
-               Synchronization", draft-armijo-ldap-dirsync-xx.txt, a
-               work in progress.
+  [X.500]       International Telecommunication Union -
+                Telecommunication Standardization Sector, "The Directory
+                -- Overview of concepts, models and services,"
+                X.500(1993) (also ISO/IEC 9594-1:1994).
 
-  [LCUP]       R. Megginson, et. al., "LDAP Client Update Protocol",
-               draft-ietf-ldup-lcup-xx.txt, a work in progress.
+  [X.511]       International Telecommunication Union -
+                Telecommunication Standardization Sector, "The
+                Directory: Abstract Service Definition", X.511(1993).
 
-  [PSEARCH]    M. Smith, et. al., "Persistent Search: A Simple LDAP
-               Change Notification Mechanism",
-               draft-ietf-ldapext-psearch-xx.txt, a work in progress.
+  [X.525]       International Telecommunication Union -
+                Telecommunication Standardization Sector, "The
+                Directory: Replication", X.525(1993).
 
-  [TSEARCH]    M. Wahl, "LDAPv3 Triggered Search Control",
-               draft-ietf-ldapext-trigger-xx.txt, a work in progress.
+  [UUIDinfo]    The Open Group, "Universally Unique Identifier" appendix
+                of the CAE Specification "DCE 1.1: Remote Procedure
+                Calls", Document Number C706,
+                <http://www.opengroup.org/products/publications/
+                catalog/c706.htm> (appendix available at:
+                <http://www.opengroup.org/onlinepubs/9629399/
+                apdxa.htm>), August 1997.
 
-  [UUID-CSN]   K. Zeilenga, J. Choi, "LDAP UUID and CSN Operational
-               Attributes", draft-zeilenga-ldap-uuid-csn-xx.txt, a work
-               (not yet) in progress.
 
 
-10. Authors' Address
 
-  Kurt D. Zeilenga
-  OpenLDAP Foundation
-  <Kurt@OpenLDAP.org>
+Zeilenga               LDAP Content Sync Operation             [Page 28]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
 
+  [DIRSYNC]     Armijo, M., "Microsoft LDAP Control for Directory
+                Synchronization", draft-armijo-ldap-dirsync-xx.txt, a
+                work in progress.
 
+  [LCUP]        Megginson, R., et. al., "LDAP Client Update Protocol",
+                draft-ietf-ldup-lcup-xx.txt, a work in progress.
 
-Zeilenga               LDAP Content Sync Operation             [Page 22]
-\f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
+  [PSEARCH]     Smith, M., et. al., "Persistent Search: A Simple LDAP
+                Change Notification Mechanism",
+                draft-ietf-ldapext-psearch-xx.txt, a work in progress.
 
+  [TSEARCH]     Wahl, M., "LDAPv3 Triggered Search Control",
+                draft-ietf-ldapext-trigger-xx.txt, a work in progress.
 
-  Jonghyuk Choi
-  IBM Corporation
-  <jongchoi@us.ibm.com>
-
-
-Full Copyright
 
-  Copyright 2003, The Internet Society.  All Rights Reserved.
+12. Authors' Addresses
 
-  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.
+  Kurt D. Zeilenga
+  OpenLDAP Foundation
+  <Kurt@OpenLDAP.org>
 
-  The limited permissions granted above are perpetual and will not be
-  revoked by the Internet Society or its successors or assigns.
+  Jong Hyuk Choi
+  IBM Corporation
+  <jongchoi@us.ibm.com>
 
-  This document and the information contained herein is provided on an
-  "AS IS" basis and THE AUTHORS, THE INTERNET SOCIETY, AND THE INTERNET
-  ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED,
-  INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
-  INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
-  WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
 
 
-Appendix - CSN-based Implementation Considerations
+Appendix A.  CSN-based Implementation Considerations
 
   This appendix is provided for informational purposes only, it is not a
   normative part of the LDAP Content Synchronization Operation's
   technical specification.
 
-  This appendix discusses some of the implementation considerations
-  associated with a Change Sequence Number [UUID-CSN] based approaches
-  to supporting the LDAP Content Synchronization Operation.
+  This appendix discusses LDAP Content Synchronization Operation server
+  implementation considerations associated with a Change Sequence Number
+  based approaches.
 
-  Change Sequence Number-based approaches are targetted for use in
-  servers which do not maintain historical information (e.g., change
-  logs, state snapshots, etc.) about changes made to the Directory and
-  hence, must rely on current directory state and minimal
-  synchronization state information embedded in Sync Cookie.   Servers
+  Change Sequence Number based approaches are targeted for use in
+  servers which do not maintain history information (e.g., change logs,
+  state snapshots, etc.) about changes made to the Directory and hence,
+  must rely on current directory state and minimal synchronization state
+  information embedded in Sync Cookie.   Servers which maintain history
+  information should consider other approaches which exploit the history
+  information.
 
+  A Change Sequence Number is effectively a time stamp which has
+  sufficient granularity to ensure that the precedence relationship in
+  time of two updates to the same object can be determined.  Change
 
 
-Zeilenga               LDAP Content Sync Operation             [Page 23]
+
+Zeilenga               LDAP Content Sync Operation             [Page 29]
 \f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
-
-
-  which maintain historical information should consider an other
-  approaches which exploit the historical information.
-
-  A Change Sequence Number is, effectively a time stamp has sufficient
-  granularity to ensure that relationship in time of two updates to the
-  same object can be determined.  Change Sequence Numbers are not to be
-  confused with Commit Sequence Numbers or Commit Log Record Numbers.  A
-  Commit Sequence Number allow one to determine how to two commits (to
-  the same object or different objects) relate to each other in time.
-  Change Sequence Number associated with different entries may be
-  committed out of order.  In the remainder of this Appendix, the term
-  CSN refers to a Change Sequence Number.
-
-  In these approaches, the server not only maintains an entry CSN
-  operational attribute for each directory entry (as discussed in [UUID-
-  CSN], but maintains a value which we will call the context CSN.  The
-  context CSN is the greatest committed entry CSN which is not greater
-  than any outstanding entry CSNs for all entries in a directory
-  context.  The values of context CSN are used in syncCookie values as
-  synchronization state indicators.
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
+
+
+  Sequence Numbers are not to be confused with Commit Sequence Numbers
+  or Commit Log Record Numbers.  A Commit Sequence Number allows one to
+  determine how two commits (to the same object or different objects)
+  relate to each other in time.  Change Sequence Number associated with
+  different entries may be committed out of order.  In the remainder of
+  this Appendix, the term CSN refers to a Change Sequence Number.
+
+  In these approaches, the server not only maintains a CSN for each
+  directory entry (the entry CSN), but also maintains a value which we
+  will call the context CSN.  The context CSN is the greatest committed
+  entry CSN which is not greater than any outstanding (uncommitted)
+  entry CSNs for all entries in a directory context.  The values of
+  context CSN are used in syncCookie values as synchronization state
+  indicators.
 
   As search operations are not isolated from individual directory update
   operations and individual update operations cannot be assumed to be
@@ -1320,48 +1646,110 @@ INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
   equal to the greatest entry CSN in the content.  The content
   incorporates all the relevant changes whose change sequence number is
   less than or equal to context CSN before search processing.  The
-  content may also incorporate any subset of the the changes whose
-  change sequence number is greater than context CSN before search
-  processing but less than or equal to the context CSN after search
-  processing.  The content does not incorporate any of the changes whose
-  CSN is greater than the context CSN after search processing.
+  content may also incorporate any subset of the changes whose change
+  sequence number is greater than context CSN before search processing
+  but less than or equal to the context CSN after search processing.
+  The content does not incorporate any of the changes whose CSN is
+  greater than the context CSN after search processing.
 
   A simple server implementation could use value of the context CSN
   before search processing to indicate state.  Such an implementation
   would embed this value into each SyncCookie returned.  We'll call this
   the cookie CSN.  When a refresh was requested, the server would simply
-  entry "update" messages for all entries in the content whose CSN is
-  greater than the cookie CSN and entry "present" messages for all other
-  entries in the content.  However, if the current context CSN is same
-  as the cookie CSN, the server should instead generate zero "updates",
-  zero "delete" messages and indicate refreshDeletes of TRUE as the
-  directory has not changed.
+  generate "update" messages for all entries in the content whose CSN is
+  greater than the supplied cookie CSN and generate "present" messages
+  for all other entries in the content.  However, if the current context
+  CSN is the same as the cookie CSN, the server should instead generate
+  zero "updates" and zero "delete" messages, and indicate refreshDeletes
+  of TRUE as the directory has not changed.
 
   The implementation should also consider the impact of changes to meta
   information, such as access controls, which affects content
   determination.  One approach is for the server to maintain a context
+  wide meta information CSN or meta CSN.  This meta CSN would be updated
+  whenever meta information affecting content determination was changed.
+  If the value of the meta CSN is greater than cookie CSN, the server
+  should ignore the cookie and treat the request as an initial request
+  for content.
 
 
 
-Zeilenga               LDAP Content Sync Operation             [Page 24]
+
+Zeilenga               LDAP Content Sync Operation             [Page 30]
 \f
-INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
 
-  wide meta information CSN or meta CSN.  This meta CSN would be updated
-  whenever meta information affecting content determination was changed.
-  If the value of the meta CSN is greater than cookie CSN, the server
-  should ignore the cookie and treat the request as an initial request
-  for content.
+  Additionally, servers may want to consider maintaining some
+  per-session history information to reduce the number of messages
+  needed to be transferred during incremental refreshes.  Specifically,
+  a server could record information about entries as they leave the
+  scope of a disconnected sync session and later use this information to
+  generate delete messages instead of present messages.
+
+  When the history information is truncated, the CSN of the latest
+  truncated history information entry may be recorded as the truncated
+  CSN of the history information. The truncated CSN may be used to
+  determine whether a client copy can be covered by the history
+  information by comparing it to the synchronization state contained in
+  the cookie supplied by the client.
+
+  When there are a large number of sessions, it may make sense to
+  maintain such history only for the selected clients.  Also, servers
+  taking this approach need to consider resource consumption issues to
+  ensure reasonable server operation and to protect against abuse.  It
+  may be appropriate to restrict this mode of operation by policy.
+
+
+
+
+Intellectual Property Rights
 
+  The IETF takes no position regarding the validity or scope of any
+  intellectual property or other rights that might be claimed to pertain
+  to the implementation or use of the technology described in this
+  document or the extent to which any license under such rights might or
+  might not be available; neither does it represent that it has made any
+  effort to identify any such rights.  Information on the IETF's
+  procedures with respect to rights in standards-track and
+  standards-related documentation can be found in BCP-11.  Copies of
+  claims of rights made available for publication and any assurances of
+  licenses to be made available, or the result of an attempt made to
+  obtain a general license or permission for the use of such proprietary
+  rights by implementors or users of this specification can be obtained
+  from the IETF Secretariat.
 
+  The IETF invites any interested party to bring to its attention any
+  copyrights, patents or patent applications, or other proprietary
+  rights which may cover technology that may be required to practice
+  this standard.  Please address the information to the IETF Executive
+  Director.
 
 
 
+Full Copyright
+
 
 
+Zeilenga               LDAP Content Sync Operation             [Page 31]
+\f
+INTERNET-DRAFT         draft-zeilenga-ldup-sync-05       3 February 2004
 
 
+  Copyright (C) The Internet Society (2004). 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.
 
 
 
@@ -1399,5 +1787,6 @@ INTERNET-DRAFT         draft-zeilenga-ldup-sync-02            5 May 2003
 
 
 
-Zeilenga               LDAP Content Sync Operation             [Page 25]
+Zeilenga               LDAP Content Sync Operation             [Page 32]
 \f
+