1 2 3 4 5 6 7 Network Working Group S. Kille 8 Request for Comments: 2293 Isode Ltd. 9 Obsoletes: 1837 March 1998 10 Category: Standards Track 11 12 13 Representing Tables and Subtrees in the X.500 Directory 14 15 Status of this Memo 16 17 This document specifies an Internet standards track protocol for the 18 Internet community, and requests discussion and suggestions for 19 improvements. Please refer to the current edition of the "Internet 20 Official Protocol Standards" (STD 1) for the standardization state 21 and status of this protocol. Distribution of this memo is unlimited. 22 23 Copyright Notice 24 25 Copyright (C) The Internet Society (1998). All Rights Reserved. 26 27 Abstract 28 29 This document defines techniques for representing two types of 30 information mapping in the OSI Directory [1]. 31 32 1. Mapping from a key to a value (or set of values), as might 33 be done in a table lookup. 34 35 2. Mapping from a distinguished name to an associated 36 value (or values), where the values are not defined by the owner 37 of the entry. This is achieved by use of a directory subtree. 38 39 These techniques were developed for supporting MHS use of Directory 40 [2], but are specified separately as they have more general 41 applicability. 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 Kille Standards Track [Page 1] 59 61 RFC 2293 Table and Subtrees in the X.500 March 1998 62 63 64 1 Representing Flat Tables 65 66 Before considering specific function, a general purpose technique for 67 representing tables in the directory is introduced. The schema for 68 this is given in Figure 1. A table can be considered as an unordered 69 set of key to (single or multiple) value mappings, where the key 70 cannot be represented as a global name. There are four reasons why 71 this may occur: 72 73 1. The object does not have a natural global name. 74 75 2. The object can only be named effectively in the context of 76 being a key to a binding. In this case, the object will be given 77 a natural global name by the table. 78 79 3. The object has a global name, and the table is being used 80 to associate parameters with this object, in cases where they 81 cannot be placed in the objects global entry. Reasons why they 82 might not be so placed include: 83 84 o The object does not have a directory entry 85 86 o There is no authority to place the parameters in the 87 global entry 88 89 o The parameters are not global --- they only make sense 90 in the context of the table. 91 92 4. It is desirable to group information together as a 93 performance optimization, so that the block of information may be 94 widely replicated. 95 96 A table is represented as a single level subtree. The root of the 97 subtree is an entry of object class Table. This is named with a 98 common name descriptive of the table. The table will be located 99 somewhere appropriate to its function. If a table is private to an 100 MTA, it will be below the MTA's entry. If it is shared by MTA's in 101 an organization, it will be located under the organization. 102 103 The generic table entry contains only a description. All instances 104 will be subclassed, and the subclass will define the naming 105 attribute. Two subclasses are defined: 106 107 108 109 110 111 112 113 114 115 Kille Standards Track [Page 2] 116 118 RFC 2293 Table and Subtrees in the X.500 March 1998 119 120 121 table OBJECT-CLASS ::= { 122 SUBCLASS OF {top} 123 MUST CONTAIN {commonName} 124 MAY CONTAIN {manager} 125 ID oc-table} 126 127 128 tableEntry OBJECT-CLASS ::= { 129 SUBCLASS OF {top} 130 MAY CONTAIN {description} 10 131 ID oc-table-entry} 132 133 textTableEntry OBJECT-CLASS ::= { 134 SUBCLASS OF {tableEntry} 135 MUST CONTAIN {textTableKey} 136 MAY CONTAIN {textTableValue} 137 ID oc-text-table-entry} 138 139 textTableKey ATTRIBUTE ::= { 140 SUBTYPE OF name 20 141 WITH SYNTAX DirectoryString {ub-name} 142 ID at-text-table-key} 143 144 textTableValue ATTRIBUTE ::= { 145 SUBTYPE OF name 146 WITH SYNTAX DirectoryString {ub-description} 147 ID at-text-table-value} 148 149 distinguishedNameTableEntry OBJECT-CLASS ::= { 150 SUBCLASS OF {tableEntry} 30 151 MUST CONTAIN {distinguishedNameTableKey} 152 ID oc-distinguished-name-table-entry} 153 154 distinguishedNameTableKey ATTRIBUTE ::= { 155 SUBTYPE OF distinguishedName 156 ID at-distinguished-name-table-key} 157 158 Figure 1: Representing Tables 159 160 161 1. TextEntry, which define table entries with text keys, 162 which may have single or multiple values of any type. An 163 attribute is defined to allow a text value, to support the 164 frequent text key to text value mapping. Additional values may 165 be defined. 166 167 168 169 170 171 172 Kille Standards Track [Page 3] 173 175 RFC 2293 Table and Subtrees in the X.500 March 1998 176 177 178 2. DistinguishedNameEntry. This is used for associating 179 information with globally defined objects. This approach should 180 be used where the number of objects in the table is small or very 181 sparsely spread over the DIT. In other cases where there are many 182 objects or the objects are tightly clustered in the DIT, the 183 subtree approach defined in Section 2 will be preferable. No 184 value attributes are defined for this type of entry. An 185 application of this will make appropriate subtyping to define the 186 needed values. 187 188 This is best illustrated by example. Consider the MTA: 189 190 CN=Bells, OU=Computer Science, 191 O=University College London, C=GB 192 193 Suppose that the MTA needs a table mapping from private keys to fully 194 qualified domain names (this example is fictitious). The table might 195 be named as: 196 197 CN=domain-nicknames, 198 CN=Bells, OU=Computer Science, 199 O=University College London, C=GB 200 201 To represent a mapping in this table from "euclid" to 202 "bloomsbury.ac.uk", the entry: 203 204 TextTableKey=euclid, CN=domain-nicknames, 205 CN=Bells, OU=Computer Science, 206 O=University College London, C=GB 207 208 will contain the attribute: 209 210 TextTableValue=bloomsbury.ac.uk 211 212 A second example, showing the use of DistinguishedNameEntry is now 213 given. Consider again the MTA: 214 215 CN=Bells, OU=Computer Science, 216 O=University College London, C=GB 217 218 Suppose that the MTA needs a table mapping from MTA Name to bilateral 219 agreement information of that MTA. The table might be named as: 220 221 CN=MTA Bilateral Agreements, 222 CN=Bells, OU=Computer Science, 223 O=University College London, C=GB 224 225 226 227 228 229 Kille Standards Track [Page 4] 230 232 RFC 2293 Table and Subtrees in the X.500 March 1998 233 234 235 To represent information on the MTA which has the Distinguished Name: 236 237 CN=Q3T21, ADMD=Gold 400, C=GB 238 239 There would be an entry in this table with the Relative Distinguished 240 Name of the table entry being the Distinguished Name of the MTA being 241 referred to. The MTA Bilateral information would be an attribute in 242 this entry. Using a non-standard notation, the Distinguished Name of 243 the table entry is: 244 245 DistinguishedNameTableKey=<CN=Q3T21, ADMD=Gold 400, C=GB>, 246 CN=MTA Bilateral Agreements, 247 CN=Bells, OU=Computer Science, 248 O=University College London, C=GB 249 250 2 Representing Subtrees 251 252 A subtree is similar to a table, except that the keys are constructed 253 as a distinguished name hierarchy relative to the location of the 254 subtree in the DIT. The subtree effectively starts a private "root", 255 and has distinguished names relative to this root. Typically, this 256 approach is used to associate local information with global objects. 257 The schema used is defined in Figure 2. Functionally, this is 258 equivalent to a table with distinguished name keys. The table 259 approach is best when the tree is very sparse. This approach is 260 better for subtrees which are more populated. 261 262 The subtree object class defines the root for a subtree in an 263 analogous means to the table. Information within the subtree will 264 generally be defined in the same way as for the global object, and so 265 266 subtree OBJECT-CLASS ::= { 267 SUBCLASS OF {top} 268 MUST CONTAIN {commonName} 269 MAY CONTAIN {manager} 270 ID oc-subtree} 271 272 Figure 2: Representing Subtrees 273 274 275 no specific object classes for subtree entries are needed. 276 277 For example consider University College London. 278 279 O=University College London, C=GB 280 281 282 283 284 285 286 Kille Standards Track [Page 5] 287 289 RFC 2293 Table and Subtrees in the X.500 March 1998 290 291 292 Suppose that the UCL needs a private subtree, with interesting 293 information about directory objects. The table might be named as: 294 295 CN=private subtree, 296 O=University College London, C=GB 297 298 UCL specific information on Inria might be stored in the entry: 299 300 O=Inria, C=FR, 301 CN=private subtree, 302 O=University College London, C=GB 303 304 Practical examples of this mapping are given in [2]. 305 306 3 Acknowledgments 307 308 Acknowledgments for work on this document are given in [2]. 309 310 References 311 312 [1] The Directory --- overview of concepts, models and services, 313 1993. CCITT X.500 Series Recommendations. 314 315 [2] Kille, S.E., "X.400-MHS use of the X.500 directory to support 316 X.400-MHS routing," RFC 1801, June 1995. 317 318 4 Security Considerations 319 320 Security considerations are not discussed in this memo. 321 322 5 Author's Address 323 324 Steve Kille 325 Isode Ltd 326 The Dome 327 The Square 328 Richmond 329 TW9 1DT 330 England 331 332 Phone: +44-181-332-9091 333 EMail: S.Kille (a] ISODE.COM 334 335 336 337 338 339 340 341 342 343 Kille Standards Track [Page 6] 344 346 RFC 2293 Table and Subtrees in the X.500 March 1998 347 348 349 A Object Identifier Assignment 350 351 352 mhs-ds OBJECT IDENTIFIER ::= {iso(1) org(3) dod(6) internet(1) 353 private(4) enterprises(1) isode-consortium (453) mhs-ds (7)} 354 355 tables OBJECT IDENTIFIER ::= {mhs-ds 1} 356 357 oc OBJECT IDENTIFIER ::= {tables 1} 358 at OBJECT IDENTIFIER ::= {tables 2} 359 360 oc-subtree OBJECT IDENTIFIER ::= {oc 1} 361 oc-table OBJECT IDENTIFIER ::= {oc 2} 10 362 oc-table-entry OBJECT IDENTIFIER ::= {oc 3} 363 oc-text-table-entry OBJECT IDENTIFIER ::= {oc 4} 364 oc-distinguished-name-table-entry OBJECT IDENTIFIER ::= {oc 5} 365 366 at-text-table-key OBJECT IDENTIFIER ::= {at 1} 367 at-text-table-value OBJECT IDENTIFIER ::= {at 2} 368 at-distinguished-name-table-key OBJECT IDENTIFIER ::= {at 3} 369 370 Figure 3: Object Identifier Assignment 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 Kille Standards Track [Page 7] 401 403 RFC 2293 Table and Subtrees in the X.500 March 1998 404 405 406 Full Copyright Statement 407 408 Copyright (C) The Internet Society (1998). All Rights Reserved. 409 410 This document and translations of it may be copied and furnished to 411 others, and derivative works that comment on or otherwise explain it 412 or assist in its implementation may be prepared, copied, published 413 and distributed, in whole or in part, without restriction of any 414 kind, provided that the above copyright notice and this paragraph are 415 included on all such copies and derivative works. However, this 416 document itself may not be modified in any way, such as by removing 417 the copyright notice or references to the Internet Society or other 418 Internet organizations, except as needed for the purpose of 419 developing Internet standards in which case the procedures for 420 copyrights defined in the Internet Standards process must be 421 followed, or as required to translate it into languages other than 422 English. 423 424 The limited permissions granted above are perpetual and will not be 425 revoked by the Internet Society or its successors or assigns. 426 427 This document and the information contained herein is provided on an 428 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 429 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 430 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 431 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 432 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 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 Kille Standards Track [Page 8] 458 460