RFC 2927

MIME Directory Profile for LDAP Schema

πŸ“… published September 2000, from ietf

RFC 2927: MIME Directory Profile for LDAP Schema πŸŽ€

Okay bestie, this is RFC 2927 πŸ’– It came out of the Network Working Group, written by M. Wahl at Sun Microsystems, Inc., and it's dated September 2000. The category is Informational, so it's giving info, not a standard 🌸 The title block doesn't list anything it obsoletes or updates ✨

Status of this Memo πŸ“œ

This memo is here to provide information for the Internet community. It is not an Internet standard of any kind πŸ™…β€β™€οΈ Anyone can distribute it, with no limits.

Copyright (C) The Internet Society (2000). All Rights Reserved. 🌈

Abstract πŸ“

This doc defines a MIME directory profile (a multipurpose internet mail extensions thing πŸ“¨) for holding an LDAP schema, which is a lightweight directory access protocol thing πŸ—‚οΈ It's meant for talking to the Internet schema listing service.

The big keywords in here, "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL", get read exactly the way RFC 2119 [4] describes 🧠


1. Overview ✨

This doc explains how a MIME type can carry a single LDAPv3 schema definition πŸ’Œ

A schema for LDAPv3 is a bundle of object class, attribute type, matching rule and syntax definitions, as many as you want 🫢 These concepts are defined in the LDAPv3 protocol definition [2]. The schema MAY get a numeric OID from a schema listing or registration service.

A schema can import definitions from another schema, BUT imports don't chain. They're not transitive πŸ™…β€β™€οΈ

For example, say a schema has a "modem" object class that's a subclass of the X.521 "device" object class. In that case, the schema MUST import the definitions of X.521 πŸ”—

2. The "schema-ldap-0" MIME Directory Profile Registration πŸ’–

Here's how this profile is identified, straight from the registration template πŸŽ€

To: ietf-mime-direct@imc.org
Subject: Registration of text/directory MIME profile "schema-ldap-0"

Profile name: schema-ldap-0

Profile purpose: To represent a schema defined for use with LDAPv3
servers.

Profile types: SOURCE, ldapSchemas, attributeTypes, matchingRules,
objectClasses, matchingRuleUse, ldapSyntaxes

Special notes, bestie πŸ’…

The charset parameter MUST be present on the MIME content, and its value MUST be utf-8. That way schema values can be used as LDAPv3 attribute values without any character set translation 🌸

The BEGIN and END types don't get used here, and neither does type grouping πŸ™ˆ

Every type in this profile except ldapSchemas can be multi-valued. Each value sits on its own contentline, and the values can show up in any order. They don't have to be grouped by type 🧚

The SOURCE type is optional. If values are there, they SHOULD be URIs of the ldap form. When the URI is in the ldap form, the object it points to is a subschema entry. Other forms are reserved for future stuff πŸ¦‹

In this version, exactly one ldapSchemas value MUST be present. (Later versions might let you have more than one ldapSchemas value in a content, so stay tuned πŸ‘€)

Heads up, implementers 🚨 Values of the profile types in most contents are gonna be way longer than 76 bytes. There might also be non-ASCII characters and embedded CRLFs inside values, which could mean you need to quote the value or use a content transfer encoding 😭

If a contentline has a context parameter whose value isn't ldap, that contentline SHOULD be ignored πŸ™ƒ

Intended usage: COMMON πŸ’œ

3. MIME Directory Type Registrations πŸ¦‹

This document defines all the types except SOURCE, which is used in the schema-ldap-0 profile. SOURCE is defined in [1]. These types are mainly for the schema-ldap-0 directory profile, though they might be applicable to other profiles defined in the future 🌈

3.1. ldapSchemas πŸ’…

To: ietf-mime-direct@imc.org
Subject: Registration of text/directory MIME type ldapSchemas

Type name: ldapSchemas
  • Type purpose: To represent the LDAPv3 attribute ldapSchemas, which is defined in section A.1.
  • Type encoding: 8bit
  • Type valuetype: text, encoded according to the BNF in section A.2.
  • Type special notes: Each value of this type spells out the contents of an LDAP schema definition. Every object class, attribute, matching rule, matching rule use and syntax referenced in a ldapSchemas value MUST either be defined in one of the schemas referenced in the "IMPORTS" field, or be present in the content that holds this value. 🧩
  • Intended usage: COMMON

3.2. attributeTypes πŸ’–

To: ietf-mime-direct@imc.org
Subject: Registration of text/directory MIME type attributeTypes

Type name: attributeTypes
  • Type purpose: To represent the LDAPv3 attribute attributeTypes, defined in section 5.1.6 of [4].
  • Type encoding: 8bit
  • Type valuetype: text, encoded according to the BNF of AttributeTypeDescription given in section 4.2 of [4].
  • Type special notes: Each value of this type gives one LDAPv3 attribute type definition. The syntax and matching rules referenced in a attributeTypes value MUST either be present in this content, or be defined in one of the schemas referenced in the "IMPORTS" field of the ldapSchemas line. πŸ”
  • Intended usage: COMMON

3.3. matchingRules 🎯

To: ietf-mime-direct@imc.org
Subject: Registration of text/directory MIME type matchingRules

Type name: matchingRules
  • Type purpose: To represent the LDAPv3 attribute matchingRules, defined in section 5.1.8 of [4].
  • Type encoding: 8bit
  • Type valuetype: text, encoded according to the BNF of MatchingRuleDescription given in section 4.5 of [4].
  • Type special notes: Each value of this type gives one matching rule definition. The syntax referenced in a matchingRules value MUST either be present in this content, or be defined in one of the schemas referenced in the "IMPORTS" field of the ldapSchemas line. ✨
  • Intended usage: COMMON

3.4. objectClasses 🌸

To: ietf-mime-direct@imc.org
Subject: Registration of text/directory MIME type objectClasses

Type name: objectClasses
  • Type purpose: To represent the LDAPv3 attribute objectClasses, defined in section 5.1.7 of [4].
  • Type encoding: 8bit
  • Type valuetype: text, encoded according to the BNF of ObjectClassDescription given in section 4.4 of [4].
  • Type special notes: Each value of this type gives one LDAPv3 object class definition. The attributes and object classes referenced in a objectClasses value MUST either be present in this content, or be defined in one of the schemas referenced in the "IMPORTS" field of the ldapSchemas line. 🧸
  • Intended usage: COMMON

3.5. matchingRuleUse 🫧

To: ietf-mime-direct@imc.org
Subject: Registration of text/directory MIME type matchingRuleUse

Type name: matchingRuleUse
  • Type purpose: To represent the LDAPv3 attribute matchingRuleUse, defined in section 5.1.9 of [4].
  • Type encoding: 8bit
  • Type valuetype: text, encoded according to the BNF of MatchingRuleUseDescription given in section 4.5 of [4].
  • Type special notes: Each value of this type spells out a relationship between a matching rule and attribute types. The matching rule and attribute types referenced in a matchingRuleUse value MUST either be present in this content, or be defined in one of the schemas referenced in the "IMPORTS" statement of the ldapSchemas line. πŸ”—
  • Intended usage: COMMON

3.6. ldapSyntaxes 🧚

To: ietf-mime-direct@imc.org
Subject: Registration of text/directory MIME type ldapSyntaxes

Type name: ldapSyntaxes
  • Type purpose: To represent the LDAPv3 attribute ldapSyntaxes, defined in section 5.3.1 of [3].
  • Type encoding: 8bit
  • Type valuetype: text, encoded according to the BNF of SyntaxDescription given in section 4.3.3 of [3].
  • Type special notes: Each value of this type gives a single LDAPv3 attribute value syntax. πŸ’œ
  • Intended usage: COMMON

A.2. LDAP Schema Definition syntax definition ✨

okay bestie, this one is the syntax for an LDAP Schema Definition πŸŽ€ the value is a whole schema bundle that points at its own OID plus the stuff it pulls in from other schemas πŸ¦‹

      ( 1.3.6.1.4.1.1466.115.121.1.56 DESC 'LDAP Schema Definition' )

values in this syntax get written using the following BNF πŸ’…

      LdapSchema = "(" whsp
        numericoid whsp
        [ "NAME" qdescrs ]
        [ "OBSOLETE" whsp ]
        [ "IMPORTS" oids ]
        [ "CLASSES" oids ]
        [ "ATTRIBUTES" oids ]
        [ "MATCHING-RULES" oids ]
        [ "SYNTAXES" oids ]
        whsp ")"

the numericoid is the thing that uniquely identifies the schema πŸ”₯ a new OID should be assigned if any of the fields of the schema change 😭 and it is not possible to import definitions from a schema until an OID has been assigned to it πŸ™ˆ

the "NAME" field has optional human-readable labels for the schema 🌸

the "OBSOLETE" field is there if the schema is obsolete 🧚

the "IMPORTS" field lists the OIDs of other schemas that get incorporated by reference into this one 🫢 it is an error to have an attribute type or object class defined in a schema with the same name but a different OID as an attribute type or object class in an imported schema πŸ’€ it is also an error to import from two schema definitions where there are attribute types or object classes with the same names but different OIDs πŸ’€

the "CLASSES" field lists the OIDs of object classes defined in this schema πŸ’œ a schema does not have to contain any object class definitions 🌈 a schema must not contain two object class definitions of the same name but with different OIDs 🚫

the "ATTRIBUTES" field lists the OIDs of attribute types defined in this schema πŸ“ a schema does not have to contain any object class definitions 🌸 a schema must not contain two attribute type definitions of the same name but with different OIDs 🚫

the "MATCHING-RULES" field lists the OIDs of matching rules defined in this schema πŸ¦‹ a schema does not have to contain any matching rules ✨

the "SYNTAXES" field lists the OIDs of syntaxes defined in this schema πŸ’– a schema does not have to contain any syntaxes πŸŽ€


Copyright (C) The Internet Society (2000). All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET 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.

Acknowledgement 🫢

Funding for the RFC Editor function is currently provided by the Internet Society. πŸ’…

πŸ“¦ where this page comes from