summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc1804.txt
blob: f4a72f3823d3a83aa0068b40e50962c85c44b359 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
Network Working Group                                       G. Mansfield
Request for Comments: 1804                              AIC Laboratories
Category: Experimental                                         P. Rajeev
                                                 Hughes Software Systems
                                                             S. Raghavan
                                  Indian Institute of Technology, Madras
                                                                T. Howes
                                                  University of Michigan
                                                               June 1995


                  Schema Publishing in X.500 Directory

Status of this Memo

   This memo defines an Experimental Protocol for the Internet
   community.  This memo 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 provides a powerful mechanism for storing and
   retrieving information about objects of interest.  To interpret the
   information stored in the directory, the schema must be known to all
   the components of the directory. Presently, there are no means other
   than ftp to distribute schema information across the Internet.  This
   is proving to be a severe constraint as the Directory is growing.
   This document presents a solution to the schema distribution problem
   using the existing mechanisms of the directory. A naming scheme for
   naming schema objects and a meta-schema for storing schema objects is
   presented. The procedures for fetching unknown schema from the
   directory at runtime are described.

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







Mansfield, et al              Experimental                      [Page 1]
^L
RFC 1804          Schema Publishing in X.500 Directory         June 1995


1. Introduction

   The X.500 Directory [1] is now used for a wide range of applications
   from name/address lookup to network management, from restaurant
   information to bibliographic information services. This information
   is distributed and managed across a network of many autonomous sites.
   In order to interpret the information stored in the directory, the
   components of the directory must have knowledge about the structure
   and representation (schema) of the information held within the
   directory.

   The distributed nature of the network and the relatively slow process
   of standardization have given rise to the challenging task of making
   accessible the information about the schema rules themselves.  A
   mechanism for making the schema accessible to the functional
   components of the directory is urgently required.

   The 1993 X.500 Directory Standard [2] has attempted to address the
   problem of schema management and distribution. The 1993 framework
   does provide the means for storing and retrieving schema information
   in the directory. However, the resolution of unknown OIDs will
   require both the DUA and the DSA to be compliant with [2].

   In this document we propose a solution using the existing mechanisms
   of the directory [1] itself. We present a naming scheme for naming
   schema objects and a meta-schema for storing schema objects in the
   directory.  The proposal allows the algorithmic resolution of unknown
   objects in the directory and in the absence of 1993 X.500 Directory
   Standard implementations provides an interim solution to the schema
   publishing problem.

2. Schema Management

   The storage and retrieval mechanism provided by the directory is
   powerful and flexible.  However, the key to the directory is the
   knowledge of the schema rules defined for the objects represented in
   the directory.  To facilitate the diffusion of this knowledge
   appropriate schema management mechanisms need to be designed.  Schema
   management involves:

        o Storage of schema information in the directory
        o Algorithmic access to and retrieval of schema information
          in the directory
        o Definition of rules for schema modification
        o Propagation of schema information from one component of the
          directory to other components of directory





Mansfield, et al              Experimental                      [Page 2]
^L
RFC 1804          Schema Publishing in X.500 Directory         June 1995


   In this document we concentrate on the aspect of schema
   access/retrieval from the directory. Since schema objects are defined
   and employed, the modification , addition and deletion of schema
   objects can be carried out using existing directory mechanisms. But
   the operational issue of synchronizing the schema with the DIB will
   require further attention.  Similarly the issue of schema propagation
   requires further work and is outside the scope of this document.  The
   strategy proposed in this document has a very simple and workable
   approach.  No added DAP/DSP functionality is envisaged. At the same
   time by using the directory's distributed framework scalability
   problems are avoided.  In essence, it allows the distributed storage
   of schema objects and proposes a naming scheme which allows
   algorithmic schema retrieval. Of course, on the down side, more than
   one directory read operation may be required to retrieve the
   information about an object and its attributes, as objects and
   attributes are stored as separate entries in the directory.

   As schema information of all objects in a naming context are stored
   below the root entry of that naming context, the same DSA will be
   able to supply the schema information stored in that DSA. Thus there
   is no need to contact another DSA for resolving the schema of an
   object stored in the local DSA.

3. Storage of Schema Information in the Directory

   The schema information may be stored and distributed using mechanisms
   external to the X.500 directory standard [5]. This document proposes
   storing schema information in the directory.  It has the following
   advantages:

        o The components of the directory can access the schema
          information using the standard directory protocols.

        o The nature of the directory naturally allows the schema
          to be distributed. Schema used locally can be kept in the
          local DSA itself whereas 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, the schema information in the directory is
   expected to complement the schema information held in central
   repositories.









Mansfield, et al              Experimental                      [Page 3]
^L
RFC 1804          Schema Publishing in X.500 Directory         June 1995


3.1  Naming Scheme for the Schema

   The schema information is stored in a distributed manner.  We propose
   a model in which 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 information, an object called subschema object is
   defined. This object can come 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 methodology is necessary
   so that the components of the directory can easily and
   algorithmically locate the schema entries.  All schema information
   relevant to that naming context is stored below the subschema entry.
   Children of the subschema entry store information about objects,
   attribute types, attribute syntaxes or matching rules. The DIT



Mansfield, et al              Experimental                      [Page 4]
^L
RFC 1804          Schema Publishing in X.500 Directory         June 1995


   structure for storing schema information is shown in Figure 1.
   Schema for these objects are given in section 5.

4. Retrieval of Schema from the Directory

   When an unknown object is encountered by any component of directory
   during a directory operation, it proceeds the following way to
   resolve the schema.

   The RDN component at the leaf-end of the name of the object whose
   schema is to be resolved is replaced by the RDNs "oid=<object
   identifier of the new object>, CN=subschema" and a read request is
   initiated for the newly formed name.  If the entry is not found, two
   RDN components from the leaf-end of the name of the object are
   replaced by the RDNs "oid=<object identifier of the new object>,
   CN=subschema" and another read is attempted. The process continues
   until the read succeeds.  For example, while resolving the schema of
   the object "IPNI=spark, OU=Department of Computer Science, O=Indian
   Institute of Technology, Madras , C=IN", if the schema of the object
   IPNI (IP Node Image) is not known to a component of the directory,
   the following procedure will be adopted.

   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" is appended.  The name thus formed is
   "oid=ipni, CN=subschema, OU=Department of Computer Science, O=Indian
   Institute of Technology, Madras, C=IN" A read request is initiated on
   this name.  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 request will result in
   the directory returning the schema for the object IPNI. If it is not,
   the read operation will fail. In that case, a read operation is
   initiated with distinguished name "oid=ipni, CN= subschema, O=Indian
   Institute of Technology, Madras, C=IN". For the DIT structure shown
   in Figure-1, this query will succeed and the schema information will
   be returned.  The schema for the requested object will always be
   located below the starting entry of the naming context in which the
   entry is located.













Mansfield, et al              Experimental                      [Page 5]
^L
RFC 1804          Schema Publishing in X.500 Directory         June 1995


5. The Meta-Schema

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}

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 {



Mansfield, et al              Experimental                      [Page 6]
^L
RFC 1804          Schema Publishing in X.500 Directory         June 1995


             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}



Mansfield, et al              Experimental                      [Page 7]
^L
RFC 1804          Schema Publishing in X.500 Directory         June 1995


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



Mansfield, et al              Experimental                      [Page 8]
^L
RFC 1804          Schema Publishing in X.500 Directory         June 1995


            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.




















Mansfield, et al              Experimental                      [Page 9]
^L
RFC 1804          Schema Publishing in X.500 Directory         June 1995


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














Mansfield, et al              Experimental                     [Page 10]
^L