Internet DRAFT - draft-hollstein-extended-ldif

draft-hollstein-extended-ldif



Independent Submission                               Christian Hollstein
INTERNET-DRAFT                                                TeraCortex
Intended Status: Proposed Standard                         November 2013
Expires 2014/05/26
draft-hollstein-extended-ldif-01.txt


   The Extended LDAP Data Interchange Format (EXLDIF)


Status of This Memo

   This document is not an Internet Standards Track specification.
   It is published for examination, experimental implementation, and
   evaluation. Distribution of this memo is unlimited.



Abstract

   LDIF (LDAP Data Interchange Format) has been specified in RFC2849.
   It covers the LDAP operations ADD, MODIFY, DELETE and MODDN.
   This document specifies how other LDAP operations can be represented
   in a text file. Implementations may take such text files to send
   appropriate LDAP requests to a server and process the responses. This
   work was inspired by the need for a general configurable LDAP client
   used in functional and stress testing of LDAP servers.
 


Copyright Notice

   Copyright (c) 2013 IETF Trust and the persons identified as the
   document authors. All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document. Please review these documents
   carefully, as they describe your rights and restrictions with
   respect to this document.

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.
      
   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF). Note that other groups may also distribute
   working documents as Internet-Drafts. The list of current
   Internet-Drafts is at http://datatracker.ietf.org/drafts/current.

   Internet-Drafts are draft documents valid for a maximum of six
   months and may be updated, replaced, or obsoleted by other
   documents at any time. It is inappropriate to use Internet-
   Drafts as reference material or to cite them other than as
   "work in progress."

Hollstein                                                       [Page 1]

                    Extended LDIF                          November 2013

Table of Contents

   1.  Overview .......................................................3
   1.1.  Conventions and Terminology ..................................3
   2.  Extended LDIF Operations .......................................3
   2.1.  Relation to existing standards documents .....................3
   2.2.  BIND .........................................................5
   2.3.  UNBIND .......................................................5
   2.4.  COMPARE ......................................................5
   2.5.  SEARCH .......................................................5
   2.6.  EXTENDED .....................................................6
   2.7.  ABANDON ......................................................6
   3.  Response Value Processing ......................................6
   4.  Security Considerations ........................................7
   5.  IANA Considerations ............................................7
   6.  Acknowledgments ................................................7
   7.  References .....................................................7
   7.1.  Normative References .........................................7
   7.2.  Informative References .......................................7


































Hollstein                                                       [Page 2]

                    Extended LDIF                          November 2013



1.  Overview

   This document extends the LDIF format [RFC2849] to cover all
   LDAP operations that can be sent by a LDAP client. For each of
   the operations BIND, UNBIND, COMPARE, SEARCH, EXTENDED, ABANDON
   [RFC4511] it specifies the fields needed to encode a complete
   LDAP request for submission to a server.



1.1.  Conventions and Terminology

   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 [RFC2119].



2.  Extended LDIF Operations

2.1.  Relation to existing standards documents

  The ABNF of the LDIF syntax in [RFC2849] contains this definition of
  a change record:

  changerecord = "changetype:" FILL
                  (change-add / change-delete /
                   change-modify / change-moddn)



  This is extended as follows:

  changerecord = "changetype:" FILL
                  (change-add / change-delete /
                   change-modify / change-moddn /
                   operation-bind / operation-unbind /
                   operation-compare / operation-search /
                   operation-extended / operation-abandon)

  Implementations MAY assume change-add if the "changetype:" line is
  absent. This violation of [RFC2849] is accepted to maintain backward
  compatibility with the widely distributed OpenLDAP shell API.

  Either of the additional operations is covered in the following
  chapters.  In order to maintain backward compatibility the keyword
  "changetype" is also used for the additional operations despite the
  fact that with the possible exception of EXTENDED they are no update
  operations, thus cannot change any data in a LDAP server.



Hollstein                                                       [Page 3]

                    Extended LDIF                          November 2013



  The ABNF forms below make use of ABNF definitions already presented
  in [RFC2849] and [RFC4515]. Of particular interest are:

  - ldif-change-record   This is the basic entity containing the
                         definitions for any particular LDAP operation.

  - dn-spec              This specifies a distinguished name. All
                         additional operations have a distinguished
                         name starting with the keyword "dn:". The
                         distinguished name value may be empty. There
                         is exactly one dn-spec per ldif-change-record.

  - control              This specifies a control (LDAP V3 only).
             
  - attrval-spec         This specifies the OID or name of an attribute
                         possibly with attribute type options and / or
                         attribute value.

  - value-spec           This specifies an attribute value or the
                         value part of an keyword - value pair. Values
                         may be given in clear text, base64 encoded or
                         by import from an external file.          

  - ldap-oid             This specifies an object identifier in numbers
                         and dot notation.

  - filter               A search filter as specified in [RFC4515].

  - DIGIT                A single byte decimal character (0 - 9)

  - FILL                 Zero or more spaces

  - SEP                  Line separator


   Beside making use of these definitions Extended LDIF has no backward
   impact on existing specifications nor does it have any effect on
   their implementations.














Hollstein                                                       [Page 4]

                    Extended LDIF                          November 2013

2.2.  BIND

    BIND            = dn-spec SEP *control SEP operation-bind

    operation-bind  = "bind"  SEP
                      "version:" FILL 1*DIGIT SEP
                      "authentication:" FILL ("simple" / "sasl") SEP
                      authentication SEP

    authentication  = (auth-simple / auth-sasl)

    auth-simple     = "passwd" value-spec

    auth-sasl       = "mechanism" value-spec SEP
                      "credentials" value-spec


2.3.  UNBIND

    UNBIND            = dn-spec SEP *control SEP operation-unbind

    operation-unbind  = "unbind" SEP



2.4.  COMPARE

    COMPARE            = dn-spec SEP *control SEP operation-compare

    operation-compare  = "compare" SEP
                         1*attrval-spec

    Please note that the value in attrval-spec may be absent. [RFC4511]
    does not specify how a server shall respond to a compare request
    with empty attribute value or how a server shall respond to a
    compare request targeting an attribute with no stored value.



2.5.  SEARCH

    SEARCH             = dn-spec SEP *control SEP operation-search

    operation-search   = "scope:" FILL ("base" / "one" / "sub") SEP
                         "deref:" FILL ("never" / "search" /
                                        "find" / "always") SEP
                         "sizelimit:" FILL 1*DIGIT SEP
                         "timelimit:" FILL 1*DIGIT SEP
                         "attrsonly:" FILL ("true" / "false") SEP
                         "filter:" FILL filter SEP
                         attribute-selector

   attribute-selector  = *("attribute:" FILL AttributeType SEP)

Hollstein                                                       [Page 5]

                    Extended LDIF                          November 2013

2.6.  EXTENDED

    EXTENDED           = dn-spec SEP *control SEP operation-extended

    operation-extended = "extended" SEP
                         "oid:" FILL ldap-oid SEP
                         "value" 0*1(value-spec) SEP
                         "responses:" FILL 1*DIGIT SEP

   The value-spec contains either no value or a single value. The value
   for the "responses" keyword is an integer. It MUST give the number
   of responses the client will receive from the server. In most cases
   there will be just one response. Some implementations of extended
   requests might call for zero or more than one responses.



2.7.  ABANDON

    ABANDON           = dn-spec SEP *control SEP operation-abandon

    operation-abandon = "messageId:" FILL 1*DIGIT SEP

    The value of the "messageId" keyword is an integer. It gives the
    identifier of a previous LDAP message sent by the client.


3.  Response Value Processing

   This document does not define any procedural logic in the sense of
   algorithmic behavior. This means, that a simple implementation can
   just take the sequence of Extended LDIF records from an input text
   file, translate them to LDAP protocol level and send them to the
   wire. However, there are a couple of points that need consideration:

   - SEARCH and COMPARE operations may yield result data containing
     valuable information beyond the fact wether the operation was
     successful or not. In many cases the LDAP client should display
     the received data or use data content for further decision taking.

   - EXTENDED operations could yield response values that must be used
     in subsequent LDAP operations, as is the case in LDAP transactions
     [RFC5805].

   - Message identifiers of LDAP operations may be used in subsequent
     ABANDON operations to cancel previous requests.

   - It may be useful to execute LDAP operations in repetitive loops
     or execute them conditionally based on the outcome of previous
     operations or external program input.

   These issues cannot be solved within the scope of Extended LDIF.
   They will be addressed by a different specification.

Hollstein                                                       [Page 6]

                    Extended LDIF                          November 2013


4.  Security Considerations

   In addition to the security issues of LDIF files [RFC2849] Extended
   LDIF may contain authentication information used for BIND operations.
   This sensitive data MUST NOT be displayed to unauthorized people.

   General security considerations [RFC4510], especially those
   associated with update operations [RFC4511], apply to this extension.



5. IANA Considerations

   There are no new object identifiers associated with this
   specification.



6.  Acknowledgments

   The author gratefully acknowledges the contributions made by
   Internet Engineering Task Force participants.



7.  References

7.1.  Normative References

   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
                 Requirement Levels", RFC 2119, March 1997.

   [RFC2849]     Good, G., "The LDAP Data Interchange Format (LDIF) -
                 Technical Specification", RFC 2849, June 2000.

   [RFC4510]     Zeilenga, K., Ed., "Lightweight Directory Access
                 Protocol (LDAP): Technical Specification Road Map", RFC
                 4510, June 2006.

   [RFC4511]     Sermersheim, J., Ed., "Lightweight Directory Access
                 Protocol (LDAP): The Protocol", RFC 4511, June 2006.

   [RFC4515]     Smith, M., Ed., Howes, T., "Lightweight Directory
                 Access Protocol (LDAP): String Representation of
                 Search Filters", RFC 4515, June 2006.



7.2.  Informative References

   [RFC5805]     Zeilenga, K., "Lightweight Directory Access Protocol
                 (LDAP) Transactions", RFC 5805, March 2010.

Hollstein                                                       [Page 7]

                    Extended LDIF                          November 2013


Author's Address

   Christian Hollstein
   TeraCortex

   EMail: eldif@teracortex.com















































Hollstein                                                       [Page 8]