Home | History | Annotate | Line # | Download | only in rfc
      1 
      2 
      3 
      4 
      5 
      6 
      7 Network Working Group                                        K. Zeilenga
      8 Request for Comments: 4521                           OpenLDAP Foundation
      9 BCP: 118                                                       June 2006
     10 Category: Best Current Practice
     11 
     12 
     13                           Considerations for
     14         Lightweight Directory Access Protocol (LDAP) Extensions
     15 
     16 Status of This Memo
     17 
     18    This document specifies an Internet Best Current Practices for the
     19    Internet Community, and requests discussion and suggestions for
     20    improvements.  Distribution of this memo is unlimited.
     21 
     22 Copyright Notice
     23 
     24    Copyright (C) The Internet Society (2006).
     25 
     26 Abstract
     27 
     28    The Lightweight Directory Access Protocol (LDAP) is extensible.  It
     29    provides mechanisms for adding new operations, extending existing
     30    operations, and expanding user and system schemas.  This document
     31    discusses considerations for designers of LDAP extensions.
     32 
     33 
     34 
     35 
     36 
     37 
     38 
     39 
     40 
     41 
     42 
     43 
     44 
     45 
     46 
     47 
     48 
     49 
     50 
     51 
     52 
     53 
     54 
     55 
     56 
     57 
     58 Zeilenga                 Best Current Practice                  [Page 1]
     59 
     61 RFC 4521                    LDAP Extensions                    June 2006
     62 
     63 
     64 Table of Contents
     65 
     66    1. Introduction ....................................................3
     67       1.1. Terminology ................................................3
     68    2. General Considerations ..........................................4
     69       2.1. Scope of Extension .........................................4
     70       2.2. Interaction between extensions .............................4
     71       2.3. Discovery Mechanism ........................................4
     72       2.4. Internationalization Considerations ........................5
     73       2.5. Use of the Basic Encoding Rules ............................5
     74       2.6. Use of Formal Languages ....................................5
     75       2.7. Examples ...................................................5
     76       2.8. Registration of Protocol Values ............................5
     77    3. LDAP Operation Extensions .......................................6
     78       3.1. Controls ...................................................6
     79            3.1.1. Extending Bind Operation with Controls ..............6
     80            3.1.2. Extending the Start TLS Operation with Controls .....7
     81            3.1.3. Extending the Search Operation with Controls ........7
     82            3.1.4. Extending the Update Operations with Controls .......8
     83            3.1.5. Extending the Responseless Operations with Controls..8
     84       3.2. Extended Operations ........................................8
     85       3.3. Intermediate Responses .....................................8
     86       3.4. Unsolicited Notifications ..................................9
     87    4. Extending the LDAP ASN.1 Definition .............................9
     88       4.1. Result Codes ...............................................9
     89       4.2. LDAP Message Types .........................................9
     90       4.3. Authentication Methods ....................................10
     91       4.4. General ASN.1 Extensibility ...............................10
     92    5. Schema Extensions ..............................................10
     93       5.1. LDAP Syntaxes .............................................11
     94       5.2. Matching Rules ............................................11
     95       5.3. Attribute Types ...........................................12
     96       5.4. Object Classes ............................................12
     97    6. Other Extension Mechanisms .....................................12
     98       6.1. Attribute Description Options .............................12
     99       6.2. Authorization Identities ..................................12
    100       6.3. LDAP URL Extensions .......................................12
    101    7. Security Considerations ........................................12
    102    8. Acknowledgements ...............................................13
    103    9. References .....................................................13
    104       9.1. Normative References ......................................13
    105       9.2. Informative References ....................................15
    106 
    107 
    108 
    109 
    110 
    111 
    112 
    113 
    114 
    115 Zeilenga                 Best Current Practice                  [Page 2]
    116 
    118 RFC 4521                    LDAP Extensions                    June 2006
    119 
    120 
    121 1.  Introduction
    122 
    123    The Lightweight Directory Access Protocol (LDAP) [RFC4510] is an
    124    extensible protocol.
    125 
    126    LDAP allows for new operations to be added and for existing
    127    operations to be enhanced [RFC4511].
    128 
    129    LDAP allows additional schema to be defined [RFC4512][RFC4517].  This
    130    can include additional object classes, attribute types, matching
    131    rules, additional syntaxes, and other elements of schema.  LDAP
    132    provides an ability to extend attribute types with options [RFC4512].
    133 
    134    LDAP supports a Simple Authentication and Security Layer (SASL)
    135    authentication method [RFC4511][RFC4513].  SASL [RFC4422] is
    136    extensible.  LDAP may be extended to support additional
    137    authentication methods [RFC4511].
    138 
    139    LDAP supports establishment of Transport Layer Security (TLS)
    140    [RFC4511][RFC4513].  TLS [RFC4346] is extensible.
    141 
    142    LDAP has an extensible Uniform Resource Locator (URL) format
    143    [RFC4516].
    144 
    145    Lastly, LDAP allows for certain extensions to the protocol's Abstract
    146    Syntax Notation - One (ASN.1) [X.680] definition to be made.  This
    147    facilitates a wide range of protocol enhancements, for example, new
    148    result codes needed to support extensions to be added through
    149    extension of the protocol's ASN.1 definition.
    150 
    151    This document describes practices that engineers should consider when
    152    designing extensions to LDAP.
    153 
    154 1.1.  Terminology
    155 
    156    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
    157    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
    158    document are to be interpreted as described in BCP 14 [RFC2119].  In
    159    this document, "the specification", as used by BCP 14, RFC 2119,
    160    refers to the engineering of LDAP extensions.
    161 
    162    The term "Request Control" refers to a control attached to a client-
    163    generated message sent to a server.  The term "Response Control"
    164    refers to a control attached to a server-generated message sent to a
    165    client.
    166 
    167 
    168 
    169 
    170 
    171 
    172 Zeilenga                 Best Current Practice                  [Page 3]
    173 
    175 RFC 4521                    LDAP Extensions                    June 2006
    176 
    177 
    178    DIT stands for Directory Information Tree.
    179    DSA stands for Directory System Agent, a server.
    180    DSE stands for DSA-Specific Entry.
    181    DUA stands for Directory User Agent, a client.
    182    DN stands for Distinguished Name.
    183 
    184 2.  General Considerations
    185 
    186 2.1.  Scope of Extension
    187 
    188    Mutually agreeing peers may, within the confines of an extension,
    189    agree to significant changes in protocol semantics.  However,
    190    designers MUST consider the impact of an extension upon protocol
    191    peers that have not agreed to implement or otherwise recognize and
    192    support the extension.  Extensions MUST be "truly optional"
    193    [RFC2119].
    194 
    195 2.2.  Interaction between extensions
    196 
    197    Designers SHOULD consider how extensions they engineer interact with
    198    other extensions.
    199 
    200    Designers SHOULD consider the extensibility of extensions they
    201    specify.  Extensions to LDAP SHOULD themselves be extensible.
    202 
    203    Except where it is stated otherwise, extensibility is implied.
    204 
    205 2.3.  Discovery Mechanism
    206 
    207    Extensions SHOULD provide adequate discovery mechanisms.
    208 
    209    As LDAP design is based upon the client-request/server-response
    210    paradigm, the general discovery approach is for the client to
    211    discover the capabilities of the server before utilizing a particular
    212    extension.  Commonly, this discovery involves querying the root DSE
    213    and/or other DSEs for operational information associated with the
    214    extension.  LDAP provides no mechanism for a server to discover the
    215    capabilities of a client.
    216 
    217    The 'supportedControl' attribute [RFC4512] is used to advertise
    218    supported controls.  The 'supportedExtension' attribute [RFC4512] is
    219    used to advertise supported extended operations.  The
    220    'supportedFeatures' attribute [RFC4512] is used to advertise
    221    features.  Other root DSE attributes MAY be defined to advertise
    222    other capabilities.
    223 
    224 
    225 
    226 
    227 
    228 
    229 Zeilenga                 Best Current Practice                  [Page 4]
    230 
    232 RFC 4521                    LDAP Extensions                    June 2006
    233 
    234 
    235 2.4.  Internationalization Considerations
    236 
    237    LDAP is designed to support the full Unicode [Unicode] repertory of
    238    characters.  Extensions SHOULD avoid unnecessarily restricting
    239    applications to subsets of Unicode (e.g., Basic Multilingual Plane,
    240    ISO 8859-1, ASCII, Printable String).
    241 
    242    LDAP Language Tag options [RFC3866] provide a mechanism for tagging
    243    text (and other) values with language information.  Extensions that
    244    define attribute types SHOULD allow use of language tags with these
    245    attributes.
    246 
    247 2.5.  Use of the Basic Encoding Rules
    248 
    249    Numerous elements of LDAP are described using ASN.1 [X.680] and are
    250    encoded using a particular subset [Protocol, Section 5.2] of the
    251    Basic Encoding Rules (BER) [X.690].  To allow reuse of
    252    parsers/generators used in implementing the LDAP "core" technical
    253    specification [RFC4510], it is RECOMMENDED that extension elements
    254    (e.g., extension specific contents of controlValue, requestValue,
    255    responseValue fields) described by ASN.1 and encoded using BER be
    256    subjected to the restrictions of [Protocol, Section 5.2].
    257 
    258 2.6.  Use of Formal Languages
    259 
    260    Formal languages SHOULD be used in specifications in accordance with
    261    IESG guidelines [FORMAL].
    262 
    263 2.7.  Examples
    264 
    265    Example DN strings SHOULD conform to the syntax defined in [RFC4518].
    266    Example LDAP filter strings SHOULD conform to the syntax defined in
    267    [RFC4515].  Example LDAP URLs SHOULD conform to the syntax defined in
    268    [RFC4516].  Entries SHOULD be represented using LDIF [RFC2849].
    269 
    270 2.8.  Registration of Protocol Values
    271 
    272    Designers SHALL register protocol values of their LDAP extensions in
    273    accordance with BCP 64, RFC 4520 [RFC4520].  Specifications that
    274    create new extensible protocol elements SHALL extend existing
    275    registries or establish new registries for values of these elements
    276    in accordance with BCP 64, RFC 4520 [RFC4520] and BCP 26, RFC 2434
    277    [RFC2434].
    278 
    279 
    280 
    281 
    282 
    283 
    284 
    285 
    286 Zeilenga                 Best Current Practice                  [Page 5]
    287 
    289 RFC 4521                    LDAP Extensions                    June 2006
    290 
    291 
    292 3.  LDAP Operation Extensions
    293 
    294    Extensions SHOULD use controls in defining extensions that complement
    295    existing operations.  Where the extension to be defined does not
    296    complement an existing operation, designers SHOULD consider defining
    297    an extended operation instead.
    298 
    299    For example, a subtree delete operation could be designed as either
    300    an extension of the delete operation or as a new operation.  As the
    301    feature complements the existing delete operation, use of the control
    302    mechanism to extend the delete operation is likely more appropriate.
    303 
    304    As a counter (and contrived) example, a locate services operation (an
    305    operation that would return for a DN a set of LDAP URLs to services
    306    that may hold the entry named by this DN) could be designed as either
    307    a search operation or a new operation.  As the feature doesn't
    308    complement the search operation (e.g., the operation is not contrived
    309    to search for entries held in the Directory Information Tree), it is
    310    likely more appropriate to define a new operation using the extended
    311    operation mechanism.
    312 
    313 3.1.  Controls
    314 
    315    Controls [Protocol, Section 4.1.11] are the RECOMMENDED mechanism for
    316    extending existing operations.  The existing operation can be a base
    317    operation defined in [RFC4511] (e.g., search, modify) , an extended
    318    operation (e.g., Start TLS [RFC4511], Password Modify [RFC3062]), or
    319    an operation defined as an extension to a base or extended operation.
    320 
    321    Extensions SHOULD NOT return Response controls unless the server has
    322    specific knowledge that the client can make use of the control.
    323    Generally, the client requests the return of a particular response
    324    control by providing a related request control.
    325 
    326    An existing operation MAY be extended to return IntermediateResponse
    327    messages [Protocol, Section 4.13].
    328 
    329    Specifications of controls SHALL NOT attach additional semantics to
    330    the criticality of controls beyond those defined in [Protocol,
    331    Section 4.1.11].  A specification MAY mandate the criticality take on
    332    a particular value (e.g., TRUE or FALSE), where appropriate.
    333 
    334 3.1.1.  Extending Bind Operation with Controls
    335 
    336    Controls attached to the request and response messages of a Bind
    337    Operation [RFC4511] are not protected by any security layers
    338    established by that Bind operation.
    339 
    340 
    341 
    342 
    343 Zeilenga                 Best Current Practice                  [Page 6]
    344 
    346 RFC 4521                    LDAP Extensions                    June 2006
    347 
    348 
    349    Specifications detailing controls extending the Bind operation SHALL
    350    detail that the Bind negotiated security layers do not protect the
    351    information contained in these controls and SHALL detail how the
    352    information in these controls is protected or why the information
    353    does not need protection.
    354 
    355    It is RECOMMENDED that designers consider alternative mechanisms for
    356    providing the function.  For example, an extended operation issued
    357    subsequent to the Bind operation (hence, protected by the security
    358    layers negotiated by the Bind operation) might be used to provide the
    359    desired function.
    360 
    361    Additionally, designers of Bind control extensions MUST also consider
    362    how the controls' semantics interact with individual steps of a
    363    multi-step Bind operation.  Note that some steps are optional and
    364    thus may require special attention in the design.
    365 
    366 3.1.2.  Extending the Start TLS Operation with Controls
    367 
    368    Controls attached to the request and response messages of a Start TLS
    369    Operation [RFC4511] are not protected by the security layers
    370    established by the Start TLS operation.
    371 
    372    Specifications detailing controls extending the Start TLS operation
    373    SHALL detail that the Start TLS negotiated security layers do not
    374    protect the information contained in these controls and SHALL detail
    375    how the information in these controls is protected or why the
    376    information does not need protection.
    377 
    378    It is RECOMMENDED that designers consider alternative mechanisms for
    379    providing the function.  For example, an extended operation issued
    380    subsequent to the Start TLS operation (hence, protected by the
    381    security layers negotiated by the Start TLS operation) might be used
    382    to provided the desired function.
    383 
    384 3.1.3.  Extending the Search Operation with Controls
    385 
    386    The Search operation processing has two distinct phases:
    387 
    388       -  finding the base object; and
    389 
    390       -  searching for objects at or under that base object.
    391 
    392    Specifications of controls extending the Search Operation should
    393    clearly state in which phase(s) the control's semantics apply.
    394    Semantics of controls that are not specific to the Search Operation
    395    SHOULD apply in the finding phase.
    396 
    397 
    398 
    399 
    400 Zeilenga                 Best Current Practice                  [Page 7]
    401 
    403 RFC 4521                    LDAP Extensions                    June 2006
    404 
    405 
    406 3.1.4.  Extending the Update Operations with Controls
    407 
    408    Update operations have properties of atomicity, consistency,
    409    isolation, and durability ([ACID]).
    410 
    411       -  atomicity: All or none of the DIT changes requested are made.
    412 
    413       -  consistency: The resulting DIT state must be conform to schema
    414          and other constraints.
    415 
    416       -  isolation: Intermediate states are not exposed.
    417 
    418       -  durability: The resulting DIT state is preserved until
    419          subsequently updated.
    420 
    421    When defining a control that requests additional (or other) DIT
    422    changes be made to the DIT, these additional changes SHOULD NOT be
    423    treated as part of a separate transaction.  The specification MUST be
    424    clear as to whether the additional DIT changes are part of the same
    425    or a separate transaction as the DIT changes expressed in the request
    426    of the base operation.
    427 
    428    When defining a control that requests additional (or other) DIT
    429    changes be made to the DIT, the specification MUST be clear as to the
    430    order in which these and the base changes are to be applied to the
    431    DIT.
    432 
    433 3.1.5.  Extending the Responseless Operations with Controls
    434 
    435    The Abandon and Unbind operations do not include a response message.
    436    For this reason, specifications for controls designed to be attached
    437    to Abandon and Unbind requests SHOULD mandate that the control's
    438    criticality be FALSE.
    439 
    440 3.2.  Extended Operations
    441 
    442    Extended Operations [Protocol, Section 4.12] are the RECOMMENDED
    443    mechanism for defining new operations.  An extended operation
    444    consists of an ExtendedRequest message, zero or more
    445    IntermediateResponse messages, and an ExtendedResponse message.
    446 
    447 3.3.  Intermediate Responses
    448 
    449    Extensions SHALL use IntermediateResponse messages instead of
    450    ExtendedResponse messages to return intermediate results.
    451 
    452 
    453 
    454 
    455 
    456 
    457 Zeilenga                 Best Current Practice                  [Page 8]
    458 
    460 RFC 4521                    LDAP Extensions                    June 2006
    461 
    462 
    463 3.4.  Unsolicited Notifications
    464 
    465    Unsolicited notifications [Protocol, Section 4.4] offer a capability
    466    for the server to notify the client of events not associated with the
    467    operation currently being processed.
    468 
    469    Extensions SHOULD be designed such that unsolicited notifications are
    470    not returned unless the server has specific knowledge that the client
    471    can make use of the notification.  Generally, the client requests the
    472    return of a particular unsolicited notification by performing a
    473    related extended operation.
    474 
    475    For example, a time hack extension could be designed to return
    476    unsolicited notifications at regular intervals that were enabled by
    477    an extended operation (which possibly specified the desired
    478    interval).
    479 
    480 4.  Extending the LDAP ASN.1 Definition
    481 
    482    LDAP allows limited extension [Protocol, Section 4] of the LDAP ASN.1
    483    definition [Protocol, Appendix B] to be made.
    484 
    485 4.1.  Result Codes
    486 
    487    Extensions that specify new operations or enhance existing operations
    488    often need to define new result codes.  The extension SHOULD be
    489    designed such that a client has a reasonably clear indication of the
    490    nature of the successful or non-successful result.
    491 
    492    Extensions SHOULD use existing result codes to indicate conditions
    493    that are consistent with the intended meaning [RFC4511][X.511] of
    494    these codes.  Extensions MAY introduce new result codes [RFC4520]
    495    where no existing result code provides an adequate indication of the
    496    nature of the result.
    497 
    498    Extensions SHALL NOT disallow or otherwise restrict the return of
    499    general service result codes, especially those reporting a protocol,
    500    service, or security problem, or indicating that the server is unable
    501    or unwilling to complete the operation.
    502 
    503 4.2.  LDAP Message Types
    504 
    505    While extensions can specify new types of LDAP messages by extending
    506    the protocolOp CHOICE of the LDAPMessage SEQUENCE, this is generally
    507    unnecessary and inappropriate.  Existing operation extension
    508    mechanisms (e.g., extended operations, unsolicited notifications, and
    509    intermediate responses) SHOULD be used instead.  However, there may
    510    be cases where an extension does not fit well into these mechanisms.
    511 
    512 
    513 
    514 Zeilenga                 Best Current Practice                  [Page 9]
    515 
    517 RFC 4521                    LDAP Extensions                    June 2006
    518 
    519 
    520    In such cases, a new extension mechanism SHOULD be defined that can
    521    be used by multiple extensions that have similar needs.
    522 
    523 4.3.  Authentication Methods
    524 
    525    The Bind operation currently supports two authentication methods,
    526    simple and SASL.  SASL [RFC4422] is an extensible authentication
    527    framework used by multiple application-level protocols (e.g., BEEP,
    528    IMAP, SMTP).  It is RECOMMENDED that new authentication processes be
    529    defined as SASL mechanisms.  New LDAP authentication methods MAY be
    530    added to support new authentication frameworks.
    531 
    532    The Bind operation's primary function is to establish the LDAP
    533    association [RFC4513].  No other operation SHALL be defined (or
    534    extended) to establish the LDAP association.  However, other
    535    operations MAY be defined to establish other security associations
    536    (e.g., IPsec).
    537 
    538 4.4.  General ASN.1 Extensibility
    539 
    540    Section 4 of [RFC4511] states the following:
    541 
    542       In order to support future extensions to this protocol,
    543       extensibility is implied where it is allowed per ASN.1 (i.e.,
    544       sequence, set, choice, and enumerated types are extensible).  In
    545       addition, ellipses (...)  have been supplied in ASN.1 types that
    546       are explicitly extensible as discussed in [RFC4520].  Because of
    547       the implied extensibility, clients and servers MUST (unless
    548       otherwise specified) ignore trailing SEQUENCE components whose
    549       tags they do not recognize.
    550 
    551    Designers SHOULD avoid introducing extensions that rely on
    552    unsuspecting implementations to ignore trailing components of
    553    SEQUENCE whose tags they do not recognize.
    554 
    555 5.  Schema Extensions
    556 
    557    Extensions defining LDAP schema elements SHALL provide schema
    558    definitions conforming with syntaxes defined in [Models, Section
    559    4.1].  While provided definitions MAY be reformatted (line wrapped)
    560    for readability, this SHALL be noted in the specification.
    561 
    562    For definitions that allow a NAME field, new schema elements SHOULD
    563    provide one and only one name.  The name SHOULD be short.
    564 
    565    Each schema definition allows a DESC field.  The DESC field, if
    566    provided, SHOULD contain a short descriptive phrase.  The DESC field
    567    MUST be regarded as informational.  That is, the specification MUST
    568 
    569 
    570 
    571 Zeilenga                 Best Current Practice                 [Page 10]
    572 
    574 RFC 4521                    LDAP Extensions                    June 2006
    575 
    576 
    577    be written such that its interpretation is the same with and without
    578    the provided DESC fields.
    579 
    580    The extension SHALL NOT mandate that implementations provide the same
    581    DESC field in the schema they publish.  Implementors MAY replace or
    582    remove the DESC field.
    583 
    584    Published schema elements SHALL NOT be redefined.  Replacement schema
    585    elements (new OIDs, new NAMEs) SHOULD be defined as needed.
    586 
    587    Schema designers SHOULD reuse existing schema elements, where
    588    appropriate.  However, any reuse MUST not alter the semantics of the
    589    element.
    590 
    591 5.1.  LDAP Syntaxes
    592 
    593    Each LDAP syntax [RFC4517] is defined in terms of ASN.1 [X.680].
    594    Each extension detailing an LDAP syntax MUST specify the ASN.1 data
    595    definition associated with the syntax.  A distinct LDAP syntax SHOULD
    596    be created for each distinct ASN.1 data definition (including
    597    constraints).
    598 
    599    Each LDAP syntax SHOULD have a string encoding defined for it.  It is
    600    RECOMMENDED that this string encoding be restricted to UTF-8
    601    [RFC3629] encoded Unicode [Unicode] characters.  Use of Generic
    602    String Encoding Rules (GSER) [RFC3641][RFC3642] or other generic
    603    string encoding rules to provide string encodings for complex ASN.1
    604    data definitions is RECOMMENDED.  Otherwise, it is RECOMMENDED that
    605    the string encoding be described using a formal language (e.g., ABNF
    606    [RFC4234]).  Formal languages SHOULD be used in specifications in
    607    accordance with IESG guidelines [FORMAL].
    608 
    609    If no string encoding is defined, the extension SHALL specify how the
    610    transfer encoding is to be indicated.  Generally, the extension
    611    SHOULD mandate use of binary or other transfer encoding option.
    612 
    613 5.2.  Matching Rules
    614 
    615    Three basic kinds of matching rules (e.g., EQUALITY, ORDERING, and
    616    SUBSTRING) may be associated with an attribute type.  In addition,
    617    LDAP provides an extensible matching rule mechanism.
    618 
    619    The matching rule specification SHOULD detail which kind of matching
    620    rule it is and SHOULD describe which kinds of values it can be used
    621    with.
    622 
    623    In addition to requirements stated in the LDAP technical
    624    specification, equality matching rules SHOULD be commutative.
    625 
    626 
    627 
    628 Zeilenga                 Best Current Practice                 [Page 11]
    629 
    631 RFC 4521                    LDAP Extensions                    June 2006
    632 
    633 
    634 5.3.  Attribute Types
    635 
    636    Designers SHOULD carefully consider how the structure of values is to
    637    be restricted.  Designers SHOULD consider that servers will only
    638    enforce constraints of the attribute's syntax.  That is, an attribute
    639    intended to hold URIs, but that has directoryString syntax, is not
    640    restricted to values that are URIs.
    641 
    642    Designers SHOULD carefully consider which matching rules, if any, are
    643    appropriate for the attribute type.  Matching rules specified for an
    644    attribute type MUST be compatible with the attribute type's syntax.
    645 
    646    Extensions specifying operational attributes MUST detail how servers
    647    are to maintain and/or utilize values of each operational attribute.
    648 
    649 5.4.  Object Classes
    650 
    651    Designers SHOULD carefully consider whether each attribute of an
    652    object class is required ("MUST") or allowed ("MAY").
    653 
    654    Extensions specifying object classes that allow (or require)
    655    operational attributes MUST specify how servers are to maintain
    656    and/or utilize entries belonging to these object classes.
    657 
    658 6.  Other Extension Mechanisms
    659 
    660 6.1.  Attribute Description Options
    661 
    662    Each option is identified by a string of letters, numbers, and
    663    hyphens.  This string SHOULD be short.
    664 
    665 6.2.  Authorization Identities
    666 
    667    Extensions interacting with authorization identities SHALL support
    668    the LDAP authzId format [RFC4513].  The authzId format is extensible.
    669 
    670 6.3.  LDAP URL Extensions
    671 
    672    LDAP URL extensions are identified by a short string, a descriptor.
    673    Like other descriptors, the string SHOULD be short.
    674 
    675 7.  Security Considerations
    676 
    677    LDAP does not place undue restrictions on the kinds of extensions
    678    that can be implemented.  While this document attempts to outline
    679    some specific issues that designers need to consider, it is not (and
    680 
    681 
    682 
    683 
    684 
    685 Zeilenga                 Best Current Practice                 [Page 12]
    686 
    688 RFC 4521                    LDAP Extensions                    June 2006
    689 
    690 
    691    cannot be) all encompassing.  Designers MUST do their own evaluations
    692    of the security considerations applicable to their extensions.
    693 
    694    Designers MUST NOT assume that the LDAP "core" technical
    695    specification [RFC4510] adequately addresses the specific concerns
    696    surrounding their extensions or assume that their extensions have no
    697    specific concerns.
    698 
    699    Extension specifications, however, SHOULD note whether security
    700    considerations specific to the feature they are extending, as well as
    701    general LDAP security considerations, apply to the extension.
    702 
    703 8.  Acknowledgements
    704 
    705    The author thanks the IETF LDAP community for their thoughtful
    706    comments.
    707 
    708    This work builds upon "LDAP Extension Style Guide" [GUIDE] by Bruce
    709    Greenblatt.
    710 
    711 9.  References
    712 
    713 9.1.  Normative References
    714 
    715    [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
    716               Requirement Levels", BCP 14, RFC 2119, March 1997.
    717 
    718    [RFC2434]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
    719               IANA Considerations Section in RFCs", BCP 26, RFC 2434,
    720               October 1998.
    721 
    722    [RFC2849]  Good, G., "The LDAP Data Interchange Format (LDIF) -
    723               Technical Specification", RFC 2849, June 2000.
    724 
    725    [RFC3629]  Yergeau, F., "UTF-8, a transformation format of ISO
    726               10646", STD 63, RFC 3629, November 2003.
    727 
    728    [RFC3641]  Legg, S., "Generic String Encoding Rules (GSER) for ASN.1
    729               Types", RFC 3641, October 2003.
    730 
    731    [RFC3642]  Legg, S., "Common Elements of Generic String Encoding
    732               Rules (GSER) Encodings", RFC 3642, October 2003.
    733 
    734    [RFC4512]  Zeilenga, K., "Lightweight Directory Access Protocol
    735               (LDAP): Directory Information Models", RFC 4512, June
    736               2006.
    737 
    738 
    739 
    740 
    741 
    742 Zeilenga                 Best Current Practice                 [Page 13]
    743 
    745 RFC 4521                    LDAP Extensions                    June 2006
    746 
    747 
    748    [RFC3866]  Zeilenga, K., Ed., "Language Tags and Ranges in the
    749               Lightweight Directory Access Protocol (LDAP)", RFC 3866,
    750               July 2004.
    751 
    752    [RFC4234]  Crocker, D. and P. Overell, "Augmented BNF for Syntax
    753               Specifications: ABNF", RFC 4234, October 2005.
    754 
    755    [RFC4510]  Zeilenga, K., Ed., "Lightweight Directory Access Protocol
    756               (LDAP): Technical Specification Road Map", RFC 4510, June
    757               2006.
    758 
    759    [RFC4511]  Sermersheim, J., Ed., "Lightweight Directory Access
    760               Protocol (LDAP): The Protocol", RFC 4511, June 2006.
    761 
    762    [RFC4512]  Zeilenga, K., "Lightweight Directory Access Protocol
    763               (LDAP): Directory Information Models", RFC 4512, June
    764               2006.
    765 
    766    [RFC4513]  Harrison, R., Ed., "Lightweight Directory Access Protocol
    767               (LDAP): Authentication Methods and Security Mechanisms",
    768               RFC 4513, June 2006.
    769 
    770    [RFC4515]  Smith, M., Ed. and T. Howes, "Lightweight Directory Access
    771               Protocol (LDAP): String Representation of Search Filters",
    772               RFC 4515, June 2006.
    773 
    774    [RFC4516]  Smith, M., Ed. and T. Howes, "Lightweight Directory Access
    775               Protocol (LDAP): Uniform Resource Locator", RFC 4516, June
    776               2006.
    777 
    778    [RFC4517]  Legg, S., Ed., "Lightweight Directory Access Protocol
    779               (LDAP): Syntaxes and Matching Rules", RFC 4517, June 2006.
    780 
    781    [RFC4518]  Zeilenga, K., "Lightweight Directory Access Protocol
    782               (LDAP): String Representation of Distinguished Names", RFC
    783               4518, June 2006.
    784 
    785    [RFC4520]  Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
    786               Considerations for the Lightweight Directory Access
    787               Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
    788 
    789    [RFC4422]  Melnikov, A., Ed. and K. Zeilenga, Ed., "Simple
    790               Authentication and Security Layer (SASL)", RFC 4422, June
    791               2006.
    792 
    793 
    794 
    795 
    796 
    797 
    798 
    799 Zeilenga                 Best Current Practice                 [Page 14]
    800 
    802 RFC 4521                    LDAP Extensions                    June 2006
    803 
    804 
    805    [Unicode]  The Unicode Consortium, "The Unicode Standard, Version
    806               3.2.0" is defined by "The Unicode Standard, Version 3.0"
    807               (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5),
    808               as amended by the "Unicode Standard Annex #27: Unicode
    809               3.1" (http://www.unicode.org/reports/tr27/) and by the
    810               "Unicode Standard Annex #28: Unicode 3.2"
    811               (http://www.unicode.org/reports/tr28/).
    812 
    813    [FORMAL]   IESG, "Guidelines for the use of formal languages in IETF
    814               specifications",
    815               <http://www.ietf.org/IESG/STATEMENTS/pseudo-code-in-
    816               specs.txt>, 2001.
    817 
    818    [X.511]    International Telecommunication Union - Telecommunication
    819               Standardization Sector, "The Directory: Abstract Service
    820               Definition", X.511(1993) (also ISO/IEC 9594-3:1993).
    821 
    822    [X.680]    International Telecommunication Union - Telecommunication
    823               Standardization Sector, "Abstract Syntax Notation One
    824               (ASN.1) - Specification of Basic Notation", X.680(2002)
    825               (also ISO/IEC 8824-1:2002).
    826 
    827    [X.690]    International Telecommunication Union - Telecommunication
    828               Standardization Sector, "Specification of ASN.1 encoding
    829               rules: Basic Encoding Rules (BER), Canonical Encoding
    830               Rules (CER), and Distinguished Encoding Rules (DER)",
    831               X.690(2002) (also ISO/IEC 8825-1:2002).
    832 
    833 9.2.  Informative References
    834 
    835    [ACID]     Section 4 of ISO/IEC 10026-1:1992.
    836 
    837    [GUIDE]    Greenblatt, B., "LDAP Extension Style Guide", Work in
    838               Progress.
    839 
    840    [RFC3062]  Zeilenga, K., "LDAP Password Modify Extended Operation",
    841               RFC 3062, February 2001.
    842 
    843    [RFC4346]  Dierks, T. and E. Rescorla, "The Transport Layer Security
    844               (TLS) Protocol Version 1.1", RFC 4346, April 2006.
    845 
    846 Author's Address
    847 
    848    Kurt D. Zeilenga
    849    OpenLDAP Foundation
    850 
    851    EMail: Kurt (a] OpenLDAP.org
    852 
    853 
    854 
    855 
    856 Zeilenga                 Best Current Practice                 [Page 15]
    857 
    859 RFC 4521                    LDAP Extensions                    June 2006
    860 
    861 
    862 Full Copyright Statement
    863 
    864    Copyright (C) The Internet Society (2006).
    865 
    866    This document is subject to the rights, licenses and restrictions
    867    contained in BCP 78, and except as set forth therein, the authors
    868    retain all their rights.
    869 
    870    This document and the information contained herein are provided on an
    871    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
    872    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
    873    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
    874    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
    875    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
    876    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
    877 
    878 Intellectual Property
    879 
    880    The IETF takes no position regarding the validity or scope of any
    881    Intellectual Property Rights or other rights that might be claimed to
    882    pertain to the implementation or use of the technology described in
    883    this document or the extent to which any license under such rights
    884    might or might not be available; nor does it represent that it has
    885    made any independent effort to identify any such rights.  Information
    886    on the procedures with respect to rights in RFC documents can be
    887    found in BCP 78 and BCP 79.
    888 
    889    Copies of IPR disclosures made to the IETF Secretariat and any
    890    assurances of licenses to be made available, or the result of an
    891    attempt made to obtain a general license or permission for the use of
    892    such proprietary rights by implementers or users of this
    893    specification can be obtained from the IETF on-line IPR repository at
    894    http://www.ietf.org/ipr.
    895 
    896    The IETF invites any interested party to bring to its attention any
    897    copyrights, patents or patent applications, or other proprietary
    898    rights that may cover technology that may be required to implement
    899    this standard.  Please address the information to the IETF at
    900    ietf-ipr (a] ietf.org.
    901 
    902 Acknowledgement
    903 
    904    Funding for the RFC Editor function is provided by the IETF
    905    Administrative Support Activity (IASA).
    906 
    907 
    908 
    909 
    910 
    911 
    912 
    913 Zeilenga                 Best Current Practice                 [Page 16]
    914 
    916