Network Working Group M. Wahl Request for Comments: DRAFT Sun Microsystems, Inc. Expires: January 2001 July 2000 LDAPv3 Data Model Definitions 1. Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet- Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. Discussion of this document should take place on the LDAP Extensions Working Group mailing list . Copyright Notice Copyright (C) The Internet Society (2000). All Rights Reserved. 2. Abstract The Lightweight Directory Access Protocol (LDAP) is based on an underlying data model which is derived from X.500(1993). The data model is visible to LDAP clients through protocol interactions. This document defines the terms and their relationships which form the LDAPv3 data model. 3. Data Model LDAP was originally defined in terms of X.500 as an X.500 access mechanism, but can be used to access non-X.500 directories also. An LDAP server MUST act in accordance with the X.500(1993) series of ITU-T recommendations when providing the service, except as modified by the LDAP RFCs themselves. However, it is not required that an LDAP server make use of any X.500 protocols in providing this service, e.g. LDAP can be mapped onto any other directory system so long as the X.500 data and service model as used in LDAP is not violated in the LDAP interface. Wahl Expires: January 2001 [Page 1] INTERNET-DRAFT LDAPv3 Data Model Definitions July 2000 3.1. Assumptions This document makes significant use of ITU-T Rec. X.501(1993). Implementors are strongly advised to be familiar with X.501(1993) clauses 1-8, as well as X.500(1993) and X.511(1993), before reading the rest of this document. Due to ITU-T copyright restrictions, the text from the ITU-T documents cannot be included here. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", and "MAY" in this document are to be interpreted as described in RFC 2119 [1]. 3.2. Document Relationship This document REPLACES RFC 2251 sections 3.2 through 3.4. This document UPDATES RFC 2251 section 4.1.3, 4.1.4, 4.1.5, 4.1.5.1, 4.1.6, 4.1.7, 4.1.8, 4.1.9 and 4.1.11. This document UPDATES RFC 2252 sections 4.2, 4.3, 4.4, 4.5, 5, 6, 7 and 8. 4. Definitions These are listed in alphabetical order. Section heading numbers and full XREF details will be added in a later draft. * Abstract Object Class The term "Abstract Object Class" is defined in X.501(1993) section 8.3.1. Abstract object classes are one kind of object class (XREF). The superclasses of an abstract object class, if any, MUST be other abstract object classes. "top" is an example of an abstract object class. Support for the "top" object class is MANDATORY, as required by RFC 2251. Servers MAY support other abstract classes. * Alias Entry The string name of the alias pointer in LDAP is different from that of X.501(1993), as LDAP bases its definition on RFC 1274. An alias entry is a kind of entry (XREF), which has the alias object class and the aliasedObjectName attribute both present (aliasedObjectName is a mandatory attribute of the alias object class). An alias entry MUST be a leaf entry, as required by X.501(1993) section 7.4. Wahl Expires: January 2001 [Page 2] INTERNET-DRAFT LDAPv3 Data Model Definitions July 2000 In LDAP, support for aliases is OPTIONAL. An LDAP server which does not support aliases SHOULD NOT allow entries with aliasedObjectName attribute to be created in the DIT contained by that server. See also X.501(1993) section 9.5. * Approximate Matching X.511(1993) and RFC 2251 defines an approximate match filter item as part of the search filter. As the attribute type description (XREF) does not include the approximate matching rule, support for approximate matching is implementation-dependent. An approximate matching algorithm implemented by an LDAP server SHOULD be based on the following requirements: - the assertion value syntax SHOULD be the same as the attribute value syntax, - all assertion values which compare TRUE for equality SHOULD compare TRUE for approximate match as well. Support for approximate matching of attributes which are subtypes of the name attribute is RECOMMENDED. Examples of algorithms which have be used for this purpose include SOUNDEX and METAPHONE, however these algorithms do not support non-ASCII letters. Support for approximate matching of attributes with Directory String syntax (1.3.6.1.4.1.1466.115.121.1.15) is RECOMMENDED. Support for approximate matching of attributes with all other syntaxes is OPTIONAL. * Attribute The basis of the Attribute in LDAP is defined in X.501(1993) section 8.1, however it is not exactly the same as the definition in the 1993 recommendation, due to the use of the Attribute Description rather than the Attribute Type. In LDAP, an attribute consists of an Attribute Description (XREF) and a set of one or more associated attribute values (XREF). An attribute is part of an entry or other kind of DSE. Attributes in a non-entry DSE MAY be implemented differently and behave like operational attributes. Attribute ::= SEQUENCE { type AttributeDescription, vals SET OF AttributeValue } Wahl Expires: January 2001 [Page 3] INTERNET-DRAFT LDAPv3 Data Model Definitions July 2000 The LDAP server MUST ensure that each attribute contains at least one value. Note that due to access control or other restrictions an Attribute transferred in protocol may have an empty set. This is described in RFC 2251 section 4.5.2, concerning the PartialAttributeList ASN.1 type. Each attribute value is distinct in the set; there are no duplicates. The LDAP server MUST ensure that no two values in a single attribute compare TRUE for equality. The order of attribute values within the values set is undefined and implementation-dependent, and MUST NOT be relied upon. An LDAP server could reorder the list of values presented by or to the client. * Attribute Description The term "Attribute Description" is defined by LDAP and is not part of X.501(1993). An Attribute Description is a superset of the definition of the Attribute Type (XREF). In the LDAP protocol, an Attribute Description is encoded as a UTF-8 string. AttributeDescription ::= LDAPString Note that its LDAP protocol encoding in ASN.1 is the same as AttributeType, but the AttributeDescription allows additional options to be specified. The content of the AttributeDescription string is generated by the production of in the following BNF: ::= [ ";" ] ::=