1 2 3 4 5 6 7 Network Working Group V. Ryan 8 Request for Comments: 2714 R. Lee 9 Category: Informational S. Seligman 10 Sun Microsystems, Inc. 11 October 1999 12 13 14 Schema for Representing CORBA Object References in an LDAP Directory 15 16 Status of this Memo 17 18 This memo provides information for the Internet community. It does 19 not specify an Internet standard of any kind. Distribution of this 20 memo is unlimited. 21 22 Copyright Notice 23 24 Copyright (C) The Internet Society (1999). All Rights Reserved. 25 26 Abstract 27 28 CORBA [CORBA] is the Common Object Request Broker Architecture 29 defined by the Object Management Group. This document defines the 30 schema for representing CORBA object references in an LDAP directory 31 [LDAPv3]. 32 33 1. Introduction 34 35 This document assumes that the reader has a general understanding of 36 CORBA. 37 38 Traditionally, LDAP directories have been used to store data. Users 39 and programmers think of the directory as a hierarchy of directory 40 entries, each containing a set of attributes. You look up an entry 41 from the directory and extract the attribute(s) of interest. For 42 example, you can look up a person's telephone number from the 43 directory. Alternatively, you can search the directory for entries 44 with a particular set of attributes. For example, you can search for 45 all persons in the directory with the surname "Smith". 46 47 CORBA applications require access to CORBA objects. Traditionally, 48 CORBA applications have used the COS Naming service for storage and 49 retrieval of CORBA object references. When deployed in environments 50 with a directory, CORBA applications should be able to use the 51 directory as a repository for CORBA object references. The directory 52 provides a centrally administered, and possibly replicated, service 53 for use by CORBA applications distributed across the network. 54 55 56 57 58 Ryan, et al. Informational [Page 1] 59 61 RFC 2714 Schema for CORBA Object References October 1999 62 63 64 For example, an application server may use the directory for 65 "registering" CORBA objects representing the services that it 66 manages, so that a client can later search the directory to locate 67 those services as it needs. 68 69 The motivation for this document is to define a common way for 70 applications to store and retrieve CORBA object references from the 71 directory. Using this common schema, any CORBA application that 72 needs to read or store CORBA object references in the directory can 73 do so in an interoperable way. 74 75 Note that this schema is defined for storing CORBA "object 76 references," not CORBA objects in general. There might be other ways 77 to store CORBA objects in an LDAP directory but they are not covered 78 by this schema. 79 80 2. Representation of CORBA Object References 81 82 This document defines schema elements to represent a CORBA object 83 reference in LDAP directory. Applications in possession of a 84 reference to an object can invoke calls on that object. Such a 85 reference is termed an "interoperable object reference," or IOR. 86 Access to CORBA objects by using IORs is achieved transparently to 87 the application, by means of the General Inter-ORB Protocol. 88 89 A CORBA object reference is represented in the directory by the 90 object class corbaObjectReference. corbaObjectReference is a subclass 91 of the abstract corbaObject object class. corbaObjectReference is an 92 auxiliary object class, which means that it needs to be mixed in with 93 a structural object class. 94 95 The object class corbaContainer is used in a directory entry which 96 represents a CORBA object or object reference. It is a structural 97 object class, and when representing an object reference, the 98 corbaObjectReference object class would also need to be present in 99 the entry. corbaContainer is not required when a subclass of 100 corbaObject (such as corbaObjectReference) is mixed in with another 101 structural object class. 102 103 The definitions for the object classes corbaObject, 104 corbaObjectReference, and corbaContainer are presented in Section 4. 105 106 The corbaObject class has two optional attributes: corbaRepositoryId 107 and description. corbaRepositoryId is a multivalued attribute that 108 is used to store the repository ids of the interfaces implemented by 109 a CORBA object. description is used to store a textual description 110 of a CORBA object. 111 112 113 114 115 Ryan, et al. Informational [Page 2] 116 118 RFC 2714 Schema for CORBA Object References October 1999 119 120 121 The corbaObjectReference class has one mandatory attribute: corbaIor. 122 corbaIor is used to store the object's stringified IOR. 123 124 corbaIor and corbaRepositoryId are defined in Section 3; description 125 is defined in [v3Schema]. 126 127 3. Attribute Type Definitions 128 129 The following attribute types are defined in this document: 130 131 corbaIor 132 corbaRepositoryId 133 134 3.1 corbaIor 135 136 This attribute stores the string representation of the interoperable 137 object reference (IOR) for a CORBA object. An IOR is an opaque handle 138 for the object which contains the information necessary to locate the 139 object, even if the object is in another ORB. 140 141 This attribute's syntax is 'IA5 String' and its case is 142 insignificant. 143 144 ( 1.3.6.1.4.1.42.2.27.4.1.14 145 NAME 'corbaIor' 146 DESC 'Stringified interoperable object reference of a CORBA object' 147 EQUALITY caseIgnoreIA5Match 148 SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 149 SINGLE-VALUE 150 ) 151 152 3.2 corbaRepositoryId 153 154 Each CORBA interface has a unique "repository id" (also called "type 155 id") that identifies the interface. A CORBA object has one or more 156 repository ids, one for each interface that it implements. 157 158 The format of a repository id can be any string, but the OMG 159 specifies four standard formats: 160 161 a. IDL-style 162 163 IDL:Prefix/ModuleName/InterfaceName:VersionNumber 164 165 166 167 168 169 170 171 172 Ryan, et al. Informational [Page 3] 173 175 RFC 2714 Schema for CORBA Object References October 1999 176 177 178 For example, the repository id for the "NamingContext" in OMG's COS 179 Naming module is: "IDL:omg.org/CosNaming/NamingContext:1.0". 180 181 b. RMI-style 182 183 RMI:ClassName:HashCode[:SUID] 184 185 This format is used by RMI-IIOP remote objects [RMI-IIOP]. 186 "ClassName" is the fully qualified name of the class (for example, 187 "java.lang.String"). "HashCode" is the object's hash code (that is, 188 that obtained by invoking the "hashCode()" method). "SUID" is the 189 "stream unique identifier", which is a 64-bit number that uniquely 190 identifies the serialization version of the class; SUID is optional 191 in the repository id. 192 193 c. DCE-style 194 195 DCE:UUID 196 197 This format is used for DCE/CORBA interoperability [CORBA-DCE]. 198 "UUID" represents a DCE UUID. 199 200 d. "local" 201 202 This format is defined by the local Object Request Broker (ORB). 203 204 The corbaRepositoryId attribute is a multivalued attribute; each 205 value records a single repository id of an interface implemented by 206 the CORBA object. This attribute need not contain a complete list of 207 the interfaces implemented by the CORBA object. 208 209 This attribute's syntax is 'Directory String' and its case is 210 significant. The values of this attribute are encoded using UTF-8. 211 Some values may require translation from their native representation 212 in order to be correctly encoded using UTF-8. 213 214 ( 1.3.6.1.4.1.42.2.27.4.1.15 215 NAME 'corbaRepositoryId' 216 DESC 'Repository ids of interfaces implemented by a CORBA object' 217 EQUALITY caseExactMatch 218 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 219 ) 220 221 222 223 224 225 226 227 228 229 Ryan, et al. Informational [Page 4] 230 232 RFC 2714 Schema for CORBA Object References October 1999 233 234 235 4. Object Class Definitions 236 237 The following object classes are defined in this document: 238 239 corbaContainer 240 corbaObject 241 corbaObjectReference 242 243 4.1 corbaContainer 244 245 This structural object class represents a container for a CORBA 246 object. 247 248 ( 1.3.6.1.4.1.42.2.27.4.2.10 249 NAME 'corbaContainer' 250 DESC 'Container for a CORBA object' 251 SUP top 252 STRUCTURAL 253 MUST ( cn ) 254 ) 255 256 4.2 corbaObject 257 258 This abstract object class is the root class for representing a CORBA 259 object. 260 261 ( 1.3.6.1.4.1.42.2.27.4.2.9 262 NAME 'corbaObject' 263 DESC 'CORBA object representation' 264 SUP top 265 ABSTRACT 266 MAY ( corbaRepositoryId $ description ) 267 ) 268 269 4.3 corbaObjectReference 270 271 This auxiliary object class represents a CORBA object reference. It 272 must be mixed in with a structural object class. 273 274 ( 1.3.6.1.4.1.42.2.27.4.2.11 275 NAME 'corbaObjectReference' 276 DESC 'CORBA interoperable object reference' 277 SUP corbaObject 278 AUXILIARY 279 MUST ( corbaIor ) 280 ) 281 282 283 284 285 286 Ryan, et al. Informational [Page 5] 287 289 RFC 2714 Schema for CORBA Object References October 1999 290 291 292 5. Security Considerations 293 294 Obtaining a reference to an object and storing it in the directory 295 may make a handle to the object available to a wider audience. This 296 may have security implications. 297 298 6. Acknowledgements 299 300 We would like to thank Sanjeev Krishnan of Sun Microsystems, Simon 301 Nash of IBM, and Jeffrey Spirn of Oracle for their comments and 302 suggestions. 303 304 7. References 305 306 [CORBA] The Object Management Group, "Common Object Request 307 Broker Architecture Specification 2.2", 308 http://www.omg.org 309 310 [CORBA-DCE] Distributed Systems Technology Center and Digital 311 Equipment Corporation, "DCE/CORBA Interworking 312 Specification", May 1998. 313 http://www.omg.org/library/schedule/ 314 DCE_CORBA_Interworking_RFP.html 315 316 [LDAPv3] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory 317 Access Protocol (v3)", RFC 2251, December 1997. 318 319 [RMI-IIOP] IBM and Java Software, Sun Microsystems, Inc., "RMI over 320 IIOP", June 1999. http://java.sun.com/products/rmi- 321 iiop/index.html 322 323 [v3Schema] Wahl, M., "A Summary of the X.500(96) User Schema for use 324 with LDAPv3", RFC 2256, December 1997. 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 Ryan, et al. Informational [Page 6] 344 346 RFC 2714 Schema for CORBA Object References October 1999 347 348 349 8. Authors' Addresses 350 351 Vincent Ryan 352 Sun Microsystems, Inc. 353 Mail Stop EDUB03 354 901 San Antonio Road 355 Palo Alto, CA 94303 356 USA 357 358 Phone: +353 1 819 9151 359 EMail: vincent.ryan (a] ireland.sun.com 360 361 362 Rosanna Lee 363 Sun Microsystems, Inc. 364 Mail Stop UCUP02-206 365 901 San Antonio Road 366 Palo Alto, CA 94303 367 USA 368 369 Phone: +1 408 863 3221 370 EMail: rosanna.lee (a] eng.sun.com 371 372 373 Scott Seligman 374 Sun Microsystems, Inc. 375 Mail Stop UCUP02-209 376 901 San Antonio Road 377 Palo Alto, CA 94303 378 USA 379 380 Phone: +1 408 863 3222 381 EMail: scott.seligman (a] eng.sun.com 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 Ryan, et al. Informational [Page 7] 401 403 RFC 2714 Schema for CORBA Object References October 1999 404 405 406 9. Appendix - LDAP Schema 407 408 -- Attribute types -- 409 410 ( 1.3.6.1.4.1.42.2.27.4.1.14 411 NAME 'corbaIor' 412 DESC 'Stringified interoperable object reference of a CORBA object' 413 EQUALITY caseIgnoreIA5Match 414 SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 415 SINGLE-VALUE 416 ) 417 418 ( 1.3.6.1.4.1.42.2.27.4.1.15 419 NAME 'corbaRepositoryId' 420 DESC 'Repository ids of interfaces implemented by a CORBA object' 421 EQUALITY caseExactMatch 422 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 423 ) 424 425 -- from RFC-2256 -- 426 427 ( 2.5.4.13 428 NAME 'description' 429 EQUALITY caseIgnoreMatch 430 SUBSTR caseIgnoreSubstringsMatch 431 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} 432 ) 433 434 -- Object classes -- 435 436 ( 1.3.6.1.4.1.42.2.27.4.2.9 437 NAME 'corbaObject' 438 DESC 'CORBA object representation' 439 SUP top 440 ABSTRACT 441 MAY ( corbaRepositoryId $ description ) 442 ) 443 444 ( 1.3.6.1.4.1.42.2.27.4.2.10 445 NAME 'corbaContainer' 446 DESC 'Container for a CORBA object' 447 SUP top 448 STRUCTURAL 449 MUST ( cn ) 450 ) 451 452 453 454 455 456 457 Ryan, et al. Informational [Page 8] 458 460 RFC 2714 Schema for CORBA Object References October 1999 461 462 463 ( 1.3.6.1.4.1.42.2.27.4.2.11 464 NAME 'corbaObjectReference' 465 DESC 'CORBA interoperable object reference' 466 SUP corbaObject 467 AUXILIARY 468 MUST ( corbaIor ) 469 ) 470 471 -- Matching rule from ISO X.520 -- 472 473 ( 2.5.13.5 474 NAME 'caseExactMatch' 475 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 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 Ryan, et al. Informational [Page 9] 515 517 RFC 2714 Schema for CORBA Object References October 1999 518 519 520 10. Full Copyright Statement 521 522 Copyright (C) The Internet Society (1999). All Rights Reserved. 523 524 This document and translations of it may be copied and furnished to 525 others, and derivative works that comment on or otherwise explain it 526 or assist in its implementation may be prepared, copied, published 527 and distributed, in whole or in part, without restriction of any 528 kind, provided that the above copyright notice and this paragraph are 529 included on all such copies and derivative works. However, this 530 document itself may not be modified in any way, such as by removing 531 the copyright notice or references to the Internet Society or other 532 Internet organizations, except as needed for the purpose of 533 developing Internet standards in which case the procedures for 534 copyrights defined in the Internet Standards process must be 535 followed, or as required to translate it into languages other than 536 English. 537 538 The limited permissions granted above are perpetual and will not be 539 revoked by the Internet Society or its successors or assigns. 540 541 This document and the information contained herein is provided on an 542 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 543 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 544 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 545 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 546 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 547 548 Acknowledgement 549 550 Funding for the RFC Editor function is currently provided by the 551 Internet Society. 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 Ryan, et al. Informational [Page 10] 572 574