RFC 1804
Schema Publishing in X.500 Directory
RFC 1804: Schema Publishing in X.500 Directory ๐
okay bestie, so this is RFC 1804 and it's giving Experimental ๐งช. It came out in June 1995 from the Network Working Group, written by G. Mansfield (AIC Laboratories), P. Rajeev (Hughes Software Systems), S. Raghavan (Indian Institute of Technology, Madras), and T. Howes (University of Michigan) ๐. The header doesn't list any RFCs it obsoletes or updates โจ.
Status of this Memo ๐
this memo defines an Experimental Protocol for the Internet community ๐งช. it does NOT specify an Internet standard of any kind ๐ . discussion and suggestions for improvement are requested ๐ฌ. distribution of this memo is unlimited ๐.
Abstract ๐ฎ
the X.500 directory is a super powerful way to store and fetch info about objects ๐๏ธ. but to read that info, everything in the directory has to know the schema, and right now the only way to pass schemas around the Internet is ftp ๐ฉ. that's a major problem because the Directory keeps growing ๐. this doc solves schema distribution using the directory's own existing mechanisms ๐ง . it gives a naming scheme for schema objects and a meta-schema for storing them, and it explains how to fetch unknown schemas from the directory at runtime ๐ฆ.
Table of Contents ๐
1. Introduction 2
2. Schema Management 2
3. Storage of Schema Information in the Directory 3
4. Retrieval of Schema from the Directory 5
5. The Meta-Schema 6
6. References 9
7. Security Considerations 9
8. Authors' Addresses 10
1. Introduction โจ
the X.500 Directory [1] is used for a wide range of stuff ๐. we're talking name and address lookup, network management, restaurant info, even bibliographic services ๐. all of this info is spread out and managed across lots of autonomous sites ๐บ๏ธ. to make sense of it, the components of the directory need to know the structure and representation of the info, which is the schema ๐งฉ.
the network is distributed and standardization is slow ๐ข, so making the schema rules themselves accessible turned into a real challenge ๐ค. a way to make the schema reachable by the functional components of the directory is urgently required ๐จ.
the 1993 X.500 Directory Standard [2] tried to tackle schema management and distribution ๐ ๏ธ. its framework does let you store and retrieve schema info in the directory ๐. the catch is that resolving unknown OIDs will require both the DUA and the DSA to be compliant with [2] ๐ฌ.
so in this doc we propose a solution that uses the directory's existing mechanisms [1] themselves ๐ . we name schema objects with a naming scheme and store them with a meta-schema ๐๏ธ. this lets unknown objects in the directory get resolved algorithmically ๐ค. and until 1993 X.500 Directory Standard implementations are around, it's an interim solution to the schema publishing problem ๐ซถ.
2. Schema Management ๐ง
the directory's storage and retrieval mechanism is powerful and flexible ๐ช. but the real key to the directory is knowing the schema rules for the objects it represents ๐. to spread that knowledge around, we need good schema management mechanisms ๐ธ. schema management involves:
- Storage of schema information in the directory ๐ฆ
- Algorithmic access to and retrieval of schema information in the directory ๐
- Definition of rules for schema modification ๐
- Propagation of schema information from one component of the directory to other components of directory ๐ก
in this doc we focus on getting schema out of the directory ๐ฏ. since schema objects are defined and employed, you can modify, add, and delete them with existing directory mechanisms ๐ ๏ธ. but synchronizing the schema with the DIB is an operational issue that needs more attention ๐. schema propagation also needs more work and is outside the scope of this document ๐ โโ๏ธ.
the strategy here is simple and workable ๐. it doesn't add any DAP/DSP functionality, which is honestly so clean ๐งผ. the directory's distributed framework helps avoid scalability problems too ๐. basically it lets schema objects be stored in a distributed way, and the naming scheme lets you retrieve them algorithmically ๐ง. the downside? more than one directory read operation may be needed to get info about an object and its attributes, because objects and attributes are stored as separate entries ๐ญ.
all the schema info for objects in a naming context is stored below that context's root entry ๐ณ. so the same DSA can supply schema info stored in that DSA ๐ . no need to contact another DSA to resolve the schema of an object that lives in the local DSA ๐.
3. Storage of Schema Information in the Directory ๐๏ธ
schema info may be stored and distributed using mechanisms external to the X.500 directory standard [5] ๐. but this doc proposes storing schema info in the directory itself โจ. here's why it's a whole vibe:
- The components of the directory can access the schema information using the standard directory protocols ๐.
- The nature of the directory naturally allows the schema to be distributed ๐. schema used locally can be kept in the local DSA itself ๐ก, while schema for general objects like person, organization etc can be made available to all components of the directory by publishing it ๐ข.
in the operational model, schema info in the directory is expected to complement the schema info held in central repositories ๐ค.
3.1. Naming Scheme for the Schema ๐ท๏ธ
schema info is stored in a distributed manner ๐งฉ. we propose a model where each naming context stores the schema relevant to it ๐ .
Root
\
\
+-------------\----------------------+
| C=IN DSA-1 |
| / \ |
| / \ |
| / \ |
| / \ |
| / cn=subschema |
| / / / | \ \ \ |
| / / / | \ \ \ |
| / oid= oid= |
+--/---------------------------------+
/
+----------------------/----------------------+
| o=IIT, Madras DSA-2 |
| / \ |
| / \ |
| / \ |
| / \ |
| ou=CSE cn=subschema |
| / \ / /| \ \ \ |
| / \ / / | \ \ \ |
|ipni=spark cn=Rajeev oid=ipni oid= |
+---------------------------------------------+
Figure 1: DIT with schema objects
to store the schema info, we define an object called a subschema object ๐. this object can live anywhere in the Directory Information Tree (DIT) ๐ณ. the subschema is defined as a subclass of Top ๐. the subschema entry is stored below the root entry of a naming context ๐ช. the root entry of a naming context must contain a subschema subentry, named {CN= Subschema} ๐. this standard naming is necessary so components of the directory can easily and algorithmically find the schema entries ๐. all schema info relevant to that naming context is stored below the subschema entry ๐ฆ. children of the subschema entry store info about objects, attribute types, attribute syntaxes, or matching rules ๐ง. the DIT structure is shown in Figure 1 ๐ผ๏ธ. schema for these objects is given in section 5 ๐.
4. Retrieval of Schema from the Directory ๐ต๏ธโโ๏ธ
when any component of the directory runs into an unknown object during a directory operation, it resolves the schema like this ๐.
the RDN component at the leaf-end of the name of the object whose schema is being resolved gets replaced by the RDNs oid=<object identifier of the new object>, CN=subschema, and a read request goes out for the newly formed name ๐ค. if the entry isn't found, two RDN components from the leaf-end get replaced by oid=<object identifier of the new object>, CN=subschema and another read is attempted ๐. this keeps going until the read succeeds ๐.
let's run an example ๐ฌ. say we're resolving the schema of the object IPNI=spark, OU=Department of Computer Science, O=Indian Institute of Technology, Madras , C=IN, and a component doesn't know the schema for IPNI (IP Node Image) ๐ค. here's the procedure:
Let the object id for the object IPNI be ipni ๐. the RDN IPNI=spark is removed from the distinguished name of the entry, and the RDNs oid=ipni, CN= Subschema are appended ๐งท. the name formed is oid=ipni, CN=subschema, OU=Department of Computer Science, O=Indian Institute of Technology, Madras, C=IN, and a read request is initiated on it ๐จ. if the distinguished name OU= Department of Computer Science, O=Indian Institute of Technology, Madras, C=IN is the context prefix of a naming context, this read will return the schema for the object IPNI ๐. if it isn't, the read fails ๐ฌ. then a read is initiated with the distinguished name oid=ipni, CN= subschema, O=Indian Institute of Technology, Madras, C=IN ๐. for the DIT structure in Figure-1, this query succeeds and the schema info gets returned โ
. the schema for the requested object is always located below the starting entry of the naming context where the entry is located ๐.
5. The Meta-Schema ๐งฌ
the meta-schema is where the schema objects get their OIDs ๐. here's the definition:
experimental = 1.3.6.1.3
schema OBJECT IDENTIFIER
::= {experimental 65}
schemaObjectClass OBJECT IDENTIFIER
::= {schema.1}
schemaAttribute OBJECT IDENTIFIER
::= {schema.2}
subschema OBJECT CLASS
Subclass of TOP
MUST CONTAIN {
commonName
- - For naming
}
::= {schemaObjectClass.1}
okay the meta-schema is about to get SO good ๐ง here's how the object classes are built ๐
objectClass OBJECT CLASS
Subclass of TOP
MUST CONTAIN {
objectIdentifier
- - This field stores the object identifier of object
- - represented by an object class entry. This attribute
- - is used for naming an object class entry.
}
MAY CONTAIN {
commonName,
- - This field is used to store the name of the object
mandatoryNamingAttributes,
mandatoryAttributes,
optionalNamingAttibutes,
optionalAttributes,
obsolete,
description,
subClassOf
}
::= {schemaObjectClass.2}
attributeType OBJECT CLASS
Subclass of Top
MUST CONTAIN {
objectIdentifier
}
MAY CONTAIN {
commonName,
- - used to store the name of the attribute type
constraint,
attributeSyntax,
multivalued,
obsolete,
matchRules,
description
}
::= {schemaObjectClass.3}
matchingRule OBJECT CLASS
Subclass of Top
MUST CONTAIN {
objectIdentifier
}
MAY CONTAIN {
commonName,
matchtype,
description,
obsolete
}
::= {schemaObjectClass.4}
objectIdentifier ATTRIBUTE
WITH ATTRIBUTE-SYNTAX
objectIdentifierSyntax
::= {schemaAttribute.1}
mandatoryNamingAttributes ATTRIBUTE
WITH ATTRIBUTE-SYNTAX
SET OF OBJECT IDENTIFIER
::= {schemaAttribute.2}
mandatoryAttributes ATTRIBUTE
WITH ATTRIBUTE-SYNTAX
SET OF OBJECT IDENTIFIER
::= {schemaAttribute.3}
optionalNamingAttibutes ATTRIBUTE
WITH ATTRIBUTE-SYNTAX
SET OF OBJECT IDENTIFIER
::= {schemaAttribute.4}
optionalAttibutes ATTRIBUTE
WITH ATTRIBUTE-SYNTAX
SET OF OBJECT IDENTIFIER
::= {schemaAttribute.5}
obsolete ATTRIBUTE
WITH ATTRIBUTE-SYNTAX
BOOLEAN
-- DEFAULT FALSE
::= {schemaAttribute.6}
subClassOf ATTRIBUTE
WITH ATTRIBUTE-SYNTAX
SET OF OBJECT IDENTIFIER
::= {schemaAttribute.7}
constraint ATTRIBUTE
WITH ATTRIBUTE-SYNTAX
Constraint
::= {schemaAttribute.8}
Constraint ::=Choice {
StringConstraint,
IntegerConstraint
}
StringConstraint ::= SEQUENCE {
shortest INTEGER,
longest INTEGER
}
IntegerConstraint ::= SEQUENCE {
lowerbound INTEGER,
upperbound INTEGER OPTIONAL
}
attributeSyntax ATTRIBUTE
WITH ATTRIBUTE-SYNTAX
ASN1DataType
::= {schemaAttribute.9}
multivalued ATTRIBUTE
WITH ATTRIBUTE-SYNTAX
BOOLEAN -- DEFAULT FALSE
::= {schemaAttribute.10}
matchRules ATTRIBUTE
WITH ATTRIBUTE-SYNTAX
SET OF OBJECT IDENTIFIER
::= {schemaAttribute.11}
matchtype ATTRIBUTE
WITH ATTRIBUTE-SYNTAX
INTEGER {
PRESENT (0),
EQUALITY (1),
ORDERING (2),
CASESENSITIVEMATCH (3),
CASEINSENSITIVEMATCH (4)
}
::= {schemaAttribute.12}
6. References โจ
[1] CCITT. "Data Communication Networks: Directory", Recommendations X.500 - X.521 1988.
[2] CCITT. "Data Communication Networks: Directory", Recommendations X.500 - X.525 1993.
[3] Barker, P., and S. Kille, "The COSINE and Internet X.500 Schema", RFC 1274, University College London, November 1991.
[4] Howes, T., "Schema Information in the X.500 Directory", Work in Progress, University of Michigan, July 1992.
[5] Howes, T., Rossen, K., Sataluri, S., and R. Wright, "Procedures for Formalization, Evolution, and Maintenance of the Internet X.500 Directory Schema", Work in Progress, June 1995.
7. Security Considerations ๐
Security issues are not discussed in this memo. ๐ So bestie, this doc has zero security content, no cap ๐
8. Authors' Addresses ๐
Glenn Mansfield
AIC Systems Laboratories,
6-6-3, Minami Yoshinari, Aoba-Ku, Sendai,
Japan
Phone: +81 (22) 279-3310
Fax: +81 (22) 279-3640
EMail: glenn@aic.co.jp
P. V. Rajeev
Hughes Software Systems,
2nd Floor, International Trade Tower,
Nehru Place, New Delhi,
India
EMail: rajeev%hss@lando.hns.com
S. V. Raghavan
Department of Computer Science and Engineering,
Indian Institute of Technology, Madras 600 036,
India
EMail: svr@iitm.ernet.in
Tim Howes
University of Michigan
ITD Research Systems
535 W William St.
Ann Arbor, MI 48103-4943, USA
Phone: +1 (313) 747-4454
EMail: tim@umich.edu
๐ฆ where this page comes from
- ietf: rfc1804 1995-06
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms