1*d11b170bStron 2*d11b170bStron 3*d11b170bStron 4*d11b170bStronNetwork Working Group H. Chu 5*d11b170bStronInternet-Draft Symas Corp. 6*d11b170bStronIntended status: Informational May 2006 7*d11b170bStronExpires: November 2, 2006 8*d11b170bStron 9*d11b170bStron 10*d11b170bStron Ordered Entries and Values in LDAP 11*d11b170bStron draft-chu-ldap-xordered-00.txt 12*d11b170bStron 13*d11b170bStronStatus of this Memo 14*d11b170bStron 15*d11b170bStron By submitting this Internet-Draft, each author represents that any 16*d11b170bStron applicable patent or other IPR claims of which he or she is aware 17*d11b170bStron have been or will be disclosed, and any of which he or she becomes 18*d11b170bStron aware will be disclosed, in accordance with Section 6 of BCP 79. 19*d11b170bStron 20*d11b170bStron Internet-Drafts are working documents of the Internet Engineering 21*d11b170bStron Task Force (IETF), its areas, and its working groups. Note that 22*d11b170bStron other groups may also distribute working documents as Internet- 23*d11b170bStron Drafts. 24*d11b170bStron 25*d11b170bStron Internet-Drafts are draft documents valid for a maximum of six months 26*d11b170bStron and may be updated, replaced, or obsoleted by other documents at any 27*d11b170bStron time. It is inappropriate to use Internet-Drafts as reference 28*d11b170bStron material or to cite them other than as "work in progress." 29*d11b170bStron 30*d11b170bStron The list of current Internet-Drafts can be accessed at 31*d11b170bStron http://www.ietf.org/ietf/1id-abstracts.txt. 32*d11b170bStron 33*d11b170bStron The list of Internet-Draft Shadow Directories can be accessed at 34*d11b170bStron http://www.ietf.org/shadow.html. 35*d11b170bStron 36*d11b170bStron This Internet-Draft will expire on November 2, 2006. 37*d11b170bStron 38*d11b170bStronCopyright Notice 39*d11b170bStron 40*d11b170bStron Copyright (C) The Internet Society (2006). 41*d11b170bStron 42*d11b170bStron 43*d11b170bStron 44*d11b170bStron 45*d11b170bStron 46*d11b170bStron 47*d11b170bStron 48*d11b170bStron 49*d11b170bStron 50*d11b170bStron 51*d11b170bStron 52*d11b170bStron 53*d11b170bStron 54*d11b170bStron 55*d11b170bStronChu Expires November 2, 2006 [Page 1] 56*d11b170bStron 57*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 58*d11b170bStron 59*d11b170bStron 60*d11b170bStronAbstract 61*d11b170bStron 62*d11b170bStron As LDAP is used more extensively for managing various kinds of data, 63*d11b170bStron one often encounters a need to preserve both the ordering and the 64*d11b170bStron content of data, despite the inherently unordered structure of 65*d11b170bStron entries and attribute values in the directory. This document 66*d11b170bStron describes a scheme to attach ordering information to attributes in a 67*d11b170bStron directory so that the ordering may be preserved and propagated to 68*d11b170bStron other LDAP applications. 69*d11b170bStron 70*d11b170bStron 71*d11b170bStronTable of Contents 72*d11b170bStron 73*d11b170bStron 1. Introduction . . . . . . . . . . . . . . . . . . . . . 3 74*d11b170bStron 2. Conventions . . . . . . . . . . . . . . . . . . . . . 4 75*d11b170bStron 3. Ordering Extension . . . . . . . . . . . . . . . . . . 5 76*d11b170bStron 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . 5 77*d11b170bStron 3.2. Encoding . . . . . . . . . . . . . . . . . . . . . . . 5 78*d11b170bStron 3.3. Ordering Properties . . . . . . . . . . . . . . . . . 6 79*d11b170bStron 4. Examples . . . . . . . . . . . . . . . . . . . . . . . 8 80*d11b170bStron 4.1. Sample Schema . . . . . . . . . . . . . . . . . . . . 8 81*d11b170bStron 4.2. Ordered Values . . . . . . . . . . . . . . . . . . . . 8 82*d11b170bStron 4.3. Ordered Siblings . . . . . . . . . . . . . . . . . . . 10 83*d11b170bStron 5. Security Considerations . . . . . . . . . . . . . . . 13 84*d11b170bStron 6. Normative References . . . . . . . . . . . . . . . . . 14 85*d11b170bStron Appendix A. IANA Considerations . . . . . . . . . . . . . . . . . 15 86*d11b170bStron Author's Address . . . . . . . . . . . . . . . . . . . 16 87*d11b170bStron Intellectual Property and Copyright Statements . . . . 17 88*d11b170bStron 89*d11b170bStron 90*d11b170bStron 91*d11b170bStron 92*d11b170bStron 93*d11b170bStron 94*d11b170bStron 95*d11b170bStron 96*d11b170bStron 97*d11b170bStron 98*d11b170bStron 99*d11b170bStron 100*d11b170bStron 101*d11b170bStron 102*d11b170bStron 103*d11b170bStron 104*d11b170bStron 105*d11b170bStron 106*d11b170bStron 107*d11b170bStron 108*d11b170bStron 109*d11b170bStron 110*d11b170bStron 111*d11b170bStronChu Expires November 2, 2006 [Page 2] 112*d11b170bStron 113*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 114*d11b170bStron 115*d11b170bStron 116*d11b170bStron1. Introduction 117*d11b170bStron 118*d11b170bStron Information in LDAP directories is usually handled by applications in 119*d11b170bStron the form of ordered lists, which tends to encourage application 120*d11b170bStron developers to assume they are maintained as such, i.e., it is assumed 121*d11b170bStron that information stored in a particular order will always be 122*d11b170bStron retrieved and presented in that same order. The fact that directory 123*d11b170bStron attributes actually store sets of values, which are inherently 124*d11b170bStron unordered, often causes grief to users migrating their data into 125*d11b170bStron LDAP. Similar concerns arise over the order in which entries 126*d11b170bStron themselves are stored and retrieved from the directory. 127*d11b170bStron 128*d11b170bStron This document describes a schema extension that may be used in LDAP 129*d11b170bStron attribute definitions to store ordering information along with the 130*d11b170bStron attribute values, so that the ordering can be recovered when 131*d11b170bStron retrieved by an LDAP client. The extension also provides automated 132*d11b170bStron management of this ordering information to ease manipulation of the 133*d11b170bStron ordered values. 134*d11b170bStron 135*d11b170bStron 136*d11b170bStron 137*d11b170bStron 138*d11b170bStron 139*d11b170bStron 140*d11b170bStron 141*d11b170bStron 142*d11b170bStron 143*d11b170bStron 144*d11b170bStron 145*d11b170bStron 146*d11b170bStron 147*d11b170bStron 148*d11b170bStron 149*d11b170bStron 150*d11b170bStron 151*d11b170bStron 152*d11b170bStron 153*d11b170bStron 154*d11b170bStron 155*d11b170bStron 156*d11b170bStron 157*d11b170bStron 158*d11b170bStron 159*d11b170bStron 160*d11b170bStron 161*d11b170bStron 162*d11b170bStron 163*d11b170bStron 164*d11b170bStron 165*d11b170bStron 166*d11b170bStron 167*d11b170bStronChu Expires November 2, 2006 [Page 3] 168*d11b170bStron 169*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 170*d11b170bStron 171*d11b170bStron 172*d11b170bStron2. Conventions 173*d11b170bStron 174*d11b170bStron Imperative keywords defined in [RFC2119] are used in this document, 175*d11b170bStron and carry the meanings described there. 176*d11b170bStron 177*d11b170bStron 178*d11b170bStron 179*d11b170bStron 180*d11b170bStron 181*d11b170bStron 182*d11b170bStron 183*d11b170bStron 184*d11b170bStron 185*d11b170bStron 186*d11b170bStron 187*d11b170bStron 188*d11b170bStron 189*d11b170bStron 190*d11b170bStron 191*d11b170bStron 192*d11b170bStron 193*d11b170bStron 194*d11b170bStron 195*d11b170bStron 196*d11b170bStron 197*d11b170bStron 198*d11b170bStron 199*d11b170bStron 200*d11b170bStron 201*d11b170bStron 202*d11b170bStron 203*d11b170bStron 204*d11b170bStron 205*d11b170bStron 206*d11b170bStron 207*d11b170bStron 208*d11b170bStron 209*d11b170bStron 210*d11b170bStron 211*d11b170bStron 212*d11b170bStron 213*d11b170bStron 214*d11b170bStron 215*d11b170bStron 216*d11b170bStron 217*d11b170bStron 218*d11b170bStron 219*d11b170bStron 220*d11b170bStron 221*d11b170bStron 222*d11b170bStron 223*d11b170bStronChu Expires November 2, 2006 [Page 4] 224*d11b170bStron 225*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 226*d11b170bStron 227*d11b170bStron 228*d11b170bStron3. Ordering Extension 229*d11b170bStron 230*d11b170bStron3.1. Overview 231*d11b170bStron 232*d11b170bStron The "X-ORDERED" schema extension is added to an 233*d11b170bStron AttributeTypeDescription to signify the use of this ordering 234*d11b170bStron mechanism. The extension has two variants, selected by either the 235*d11b170bStron 'VALUES' or 'SIBLINGS' qdstrings. In general this extension is only 236*d11b170bStron compatible with AttributeTypes that have a string-oriented syntax. 237*d11b170bStron 238*d11b170bStron The "X-ORDERED 'VALUES'" extension is used with multi-valued 239*d11b170bStron attributes to maintain the order of multiple values of a given 240*d11b170bStron attribute. For example, this feature is useful for storing data such 241*d11b170bStron as access control rules, which must be evaluated in a specific order. 242*d11b170bStron If the access control information is stored in a multi-valued 243*d11b170bStron attribute without a means of preserving the the order of the rules, 244*d11b170bStron the access control rules cannot be evaluated properly. As the use of 245*d11b170bStron LDAP to store security policy and access control information becomes 246*d11b170bStron more prevalent, the necessity of this feature continues to grow. 247*d11b170bStron 248*d11b170bStron The "X-ORDERED 'SIBLINGS'" extension is used with single-valued 249*d11b170bStron attributes to maintain the order of all the onelevel children of a 250*d11b170bStron parent entry. That is, ordering will be maintained for all the child 251*d11b170bStron entries whose RDNs are all of the same AttributeType. The motivation 252*d11b170bStron for this feature is much the same as for the 'VALUES' feature. 253*d11b170bStron Sometimes the information with the ordering dependency is too complex 254*d11b170bStron or highly structured to be conveniently stored in values of a multi- 255*d11b170bStron valued attribute. For example, one could store a prioritized list of 256*d11b170bStron servers as a set of separate entries, each entry containing separate 257*d11b170bStron attributes for a URL, a set of authentication credentials, and 258*d11b170bStron various other parameters. Using the 'SIBLINGS' feature with the 259*d11b170bStron attribute in the entries' RDNs would ensure that when obtaining the 260*d11b170bStron list of these entries, the list is returned in the intended order. 261*d11b170bStron 262*d11b170bStron3.2. Encoding 263*d11b170bStron 264*d11b170bStron Ordering information is encoded by prepending a value's ordinal index 265*d11b170bStron to each value, enclosed in braces. The following BNF specifies the 266*d11b170bStron encoding. It uses elements defined in [RFC2252]. 267*d11b170bStron 268*d11b170bStron d = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" 269*d11b170bStron 270*d11b170bStron numericstring = 1*d 271*d11b170bStron 272*d11b170bStron ordering-prefix = "{" numericstring "}" 273*d11b170bStron 274*d11b170bStron value = <any sequence of octets> 275*d11b170bStron 276*d11b170bStron 277*d11b170bStron 278*d11b170bStron 279*d11b170bStronChu Expires November 2, 2006 [Page 5] 280*d11b170bStron 281*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 282*d11b170bStron 283*d11b170bStron 284*d11b170bStron ordered-value = ordering-prefix value 285*d11b170bStron 286*d11b170bStron The ordinals are zero-based and increment by one for each value. 287*d11b170bStron 288*d11b170bStron Note that when storing ordered-values into the directory, the 289*d11b170bStron ordering-prefix can usually be omitted as it will be generated 290*d11b170bStron automatically. But if the original value already begins with a 291*d11b170bStron sequence of characters in the form of an ordering-prefix, then an 292*d11b170bStron ordering-prefix must always be provided with that value, otherwise 293*d11b170bStron the value will be processed and stored incorrectly. 294*d11b170bStron 295*d11b170bStron Using this extension on an attribute requires that ordering-prefix is 296*d11b170bStron a legal value of the LDAP syntax of that attribute. 297*d11b170bStron 298*d11b170bStron3.3. Ordering Properties 299*d11b170bStron 300*d11b170bStron Since the ordering-prefix is stored with the attribute values, it 301*d11b170bStron will be propagated to any clients or servers that access the data. 302*d11b170bStron 303*d11b170bStron Servers implementing this scheme SHOULD sort the values according to 304*d11b170bStron their ordering-prefix before returning them in search results. 305*d11b170bStron 306*d11b170bStron The presence of the ordering extension alters the matching rules that 307*d11b170bStron apply to the attribute: 308*d11b170bStron 309*d11b170bStron When presented with an AssertionValue that does not have an 310*d11b170bStron ordering-prefix, the ordering-prefix in the AttributeValue is 311*d11b170bStron ignored. 312*d11b170bStron 313*d11b170bStron When presented with an AssertionValue that consists solely of an 314*d11b170bStron ordering-prefix, only the ordering-prefix of the AttributeValue is 315*d11b170bStron compared; the remainder of the value is ignored. 316*d11b170bStron 317*d11b170bStron When presented with an AssertionValue containing both the 318*d11b170bStron ordering-prefix and a value, both components are compared to 319*d11b170bStron determine a match. 320*d11b170bStron 321*d11b170bStron A side effect of these properties is that even attributes that 322*d11b170bStron normally would have no equality matching rule can be matched by an 323*d11b170bStron ordering-prefix. 324*d11b170bStron 325*d11b170bStron The ordering-prefix may also be used in Modification requests to 326*d11b170bStron specify which values to delete, and in which position values should 327*d11b170bStron be added. When processing deletions and insertions, all of the 328*d11b170bStron ordinals are recounted after each individual modification. 329*d11b170bStron 330*d11b170bStron If a value being added does not have an ordering-prefix, it is simply 331*d11b170bStron appended to the list and the appropriate ordering-prefix is 332*d11b170bStron 333*d11b170bStron 334*d11b170bStron 335*d11b170bStronChu Expires November 2, 2006 [Page 6] 336*d11b170bStron 337*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 338*d11b170bStron 339*d11b170bStron 340*d11b170bStron automatically generated. Likewise if an ordering-prefix is provided 341*d11b170bStron that is greater than or equal to the number of existing values. 342*d11b170bStron 343*d11b170bStron See the examples in the next section. 344*d11b170bStron 345*d11b170bStron 346*d11b170bStron 347*d11b170bStron 348*d11b170bStron 349*d11b170bStron 350*d11b170bStron 351*d11b170bStron 352*d11b170bStron 353*d11b170bStron 354*d11b170bStron 355*d11b170bStron 356*d11b170bStron 357*d11b170bStron 358*d11b170bStron 359*d11b170bStron 360*d11b170bStron 361*d11b170bStron 362*d11b170bStron 363*d11b170bStron 364*d11b170bStron 365*d11b170bStron 366*d11b170bStron 367*d11b170bStron 368*d11b170bStron 369*d11b170bStron 370*d11b170bStron 371*d11b170bStron 372*d11b170bStron 373*d11b170bStron 374*d11b170bStron 375*d11b170bStron 376*d11b170bStron 377*d11b170bStron 378*d11b170bStron 379*d11b170bStron 380*d11b170bStron 381*d11b170bStron 382*d11b170bStron 383*d11b170bStron 384*d11b170bStron 385*d11b170bStron 386*d11b170bStron 387*d11b170bStron 388*d11b170bStron 389*d11b170bStron 390*d11b170bStron 391*d11b170bStronChu Expires November 2, 2006 [Page 7] 392*d11b170bStron 393*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 394*d11b170bStron 395*d11b170bStron 396*d11b170bStron4. Examples 397*d11b170bStron 398*d11b170bStron4.1. Sample Schema 399*d11b170bStron 400*d11b170bStron This schema is used for all of the examples: 401*d11b170bStron 402*d11b170bStron ( EXAMPLE_AT.1 NAME 'olcDatabase' 403*d11b170bStron EQUALITY caseIgnoreMatch 404*d11b170bStron SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 405*d11b170bStron SINGLE-VALUE X-ORDERED 'SIBLINGS' ) 406*d11b170bStron 407*d11b170bStron ( EXAMPLE_AT.2 NAME 'olcSuffix' 408*d11b170bStron EQUALITY distinguishedNameMatch 409*d11b170bStron SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 410*d11b170bStron X-ORDERED 'VALUES' ) 411*d11b170bStron 412*d11b170bStron ( EXAMPLE_OC.1 NAME 'olcDatabaseConfig' 413*d11b170bStron SUP top STRUCTURAL 414*d11b170bStron MAY ( olcDatabase $ olcSuffix ) ) 415*d11b170bStron 416*d11b170bStron4.2. Ordered Values 417*d11b170bStron 418*d11b170bStron Given this entry: 419*d11b170bStron 420*d11b170bStron dn: olcDatabase={1}bdb,cn=config 421*d11b170bStron olcDatabase: {1}bdb 422*d11b170bStron objectClass: olcDatabaseConfig 423*d11b170bStron olcSuffix: {0}dc=example,dc=com 424*d11b170bStron olcSuffix: {1}o=example.com 425*d11b170bStron olcSuffix: {2}o=The Example Company 426*d11b170bStron olcSuffix: {3}o=example,c=us 427*d11b170bStron 428*d11b170bStron We can perform these Modify operations: 429*d11b170bStron 430*d11b170bStron 1. dn: olcDatabase={1}bdb,cn=config 431*d11b170bStron changetype: modify 432*d11b170bStron delete: olcSuffix 433*d11b170bStron olcSuffix: {0} 434*d11b170bStron - 435*d11b170bStron This operation deletes the first olcSuffix, regardless of its 436*d11b170bStron value. All other values are bumped up one position. The 437*d11b170bStron olcSuffix attribute will end up containing: 438*d11b170bStron olcSuffix: {0}o=example.com 439*d11b170bStron olcSuffix: {1}o=The Example Company 440*d11b170bStron olcSuffix: {2}o=example,c=us 441*d11b170bStron 442*d11b170bStron 2. Starting from the original entry, we could issue this change 443*d11b170bStron instead: 444*d11b170bStron 445*d11b170bStron 446*d11b170bStron 447*d11b170bStronChu Expires November 2, 2006 [Page 8] 448*d11b170bStron 449*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 450*d11b170bStron 451*d11b170bStron 452*d11b170bStron delete: olcSuffix 453*d11b170bStron olcSuffix: o=example.com 454*d11b170bStron - 455*d11b170bStron This operation deletes the olcSuffix that matches the value, 456*d11b170bStron regardless of its ordering-prefix. The olcSuffix attribute will 457*d11b170bStron contain: 458*d11b170bStron olcSuffix: {0}dc=example,dc=com 459*d11b170bStron olcSuffix: {1}o=The Example Company 460*d11b170bStron olcSuffix: {2}o=example,c=us 461*d11b170bStron 462*d11b170bStron 3. Again, starting from the original entry, we could issue this 463*d11b170bStron change: 464*d11b170bStron delete: olcSuffix 465*d11b170bStron olcSuffix: {2}o=The Example Company 466*d11b170bStron - 467*d11b170bStron Here both the ordering-prefix and the value must match, otherwise 468*d11b170bStron the Modify would fail with noSuchAttribute. In this case the 469*d11b170bStron olcSuffix attribute results in: 470*d11b170bStron olcSuffix: {0}dc=example,dc=com 471*d11b170bStron olcSuffix: {1}o=example.com 472*d11b170bStron olcSuffix: {2}o=example,c=us 473*d11b170bStron 474*d11b170bStron 4. Adding a new value without an ordering-prefix simply appends: 475*d11b170bStron add: olcSuffix 476*d11b170bStron olcSuffix: o=example.org 477*d11b170bStron - 478*d11b170bStron The resulting attribute would be: 479*d11b170bStron olcSuffix: {0}dc=example,dc=com 480*d11b170bStron olcSuffix: {1}o=example.com 481*d11b170bStron olcSuffix: {2}o=The Example Company 482*d11b170bStron olcSuffix: {3}o=example,c=us 483*d11b170bStron olcSuffix: {4}o=example.org 484*d11b170bStron 485*d11b170bStron 5. Adding a new value with an ordering-prefix inserts into the 486*d11b170bStron specified position: 487*d11b170bStron add: olcSuffix 488*d11b170bStron olcSuffix: {0}o=example.org 489*d11b170bStron - 490*d11b170bStron The resulting attribute would be: 491*d11b170bStron olcSuffix: {0}o=example.org 492*d11b170bStron olcSuffix: {1}dc=example,dc=com 493*d11b170bStron olcSuffix: {2}o=example.com 494*d11b170bStron olcSuffix: {3}o=The Example Company 495*d11b170bStron olcSuffix: {4}o=example,c=us 496*d11b170bStron 497*d11b170bStron 6. Modifying multiple values in one operation: 498*d11b170bStron add: olcSuffix 499*d11b170bStron olcSuffix: {0}ou=Dis,o=example.com 500*d11b170bStron 501*d11b170bStron 502*d11b170bStron 503*d11b170bStronChu Expires November 2, 2006 [Page 9] 504*d11b170bStron 505*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 506*d11b170bStron 507*d11b170bStron 508*d11b170bStron olcSuffix: {0}ou=Dat,o=example,com 509*d11b170bStron - 510*d11b170bStron delete: olcSuffix: 511*d11b170bStron olcSuffix: {2} 512*d11b170bStron olcSuffix: {1} 513*d11b170bStron - 514*d11b170bStron The resulting attribute would be: 515*d11b170bStron olcSuffix: {0}ou=Dat,o=example,com 516*d11b170bStron olcSuffix: {1}dc=example,dc=com 517*d11b170bStron olcSuffix: {2}o=example.com 518*d11b170bStron olcSuffix: {3}o=The Example Company 519*d11b170bStron olcSuffix: {4}o=example,c=us 520*d11b170bStron 521*d11b170bStron 7. If the Adds and Deletes in the previous example were done in the 522*d11b170bStron opposite order: 523*d11b170bStron delete: olcSuffix: 524*d11b170bStron olcSuffix: {2} 525*d11b170bStron olcSuffix: {1} 526*d11b170bStron - 527*d11b170bStron add: olcSuffix 528*d11b170bStron olcSuffix: {0}ou=Dis,o=example.com 529*d11b170bStron olcSuffix: {0}ou=Dat,o=example,com 530*d11b170bStron - 531*d11b170bStron The result would be: 532*d11b170bStron olcSuffix: {0}ou=Dat,o=example,com 533*d11b170bStron olcSuffix: {1}ou=Dis,o=example.com 534*d11b170bStron olcSuffix: {2}o=example.org 535*d11b170bStron olcSuffix: {3}o=The Example Company 536*d11b170bStron olcSuffix: {4}o=example,c=us 537*d11b170bStron 538*d11b170bStron Note that matching against an ordering-prefix can also be done in 539*d11b170bStron Compare operations and Search filters. E.g., the filter 540*d11b170bStron "(olcSuffix={4})" would match all entries with at least 5 olcSuffix 541*d11b170bStron values. 542*d11b170bStron 543*d11b170bStron4.3. Ordered Siblings 544*d11b170bStron 545*d11b170bStron The rules for Ordered Siblings are basically the same as for Ordered 546*d11b170bStron Values, except instead of working primarily with the Modify request, 547*d11b170bStron the operations of interest here are Add, Delete, and ModRDN. 548*d11b170bStron 549*d11b170bStron Given these entries: 550*d11b170bStron 551*d11b170bStron dn: olcDatabase={0}config,cn=config 552*d11b170bStron olcDatabase: {0}config 553*d11b170bStron objectClass: olcDatabaseConfig 554*d11b170bStron olcSuffix: {0}cn=config 555*d11b170bStron 556*d11b170bStron 557*d11b170bStron 558*d11b170bStron 559*d11b170bStronChu Expires November 2, 2006 [Page 10] 560*d11b170bStron 561*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 562*d11b170bStron 563*d11b170bStron 564*d11b170bStron dn: olcDatabase={1}bdb,cn=config 565*d11b170bStron olcDatabase: {1}bdb 566*d11b170bStron objectClass: olcDatabaseConfig 567*d11b170bStron olcSuffix: {0}dc=example,dc=com 568*d11b170bStron 569*d11b170bStron We can perform these operations: 570*d11b170bStron 571*d11b170bStron 1. Add a new entry with no ordering-prefix: 572*d11b170bStron dn: olcDatabase=hdb,cn=config 573*d11b170bStron changetype: add 574*d11b170bStron olcDatabase: hdb 575*d11b170bStron objectClass: olcDatabaseConfig 576*d11b170bStron olcSuffix: {0}dc=example,dc=org 577*d11b170bStron The resulting entry will be: 578*d11b170bStron dn: olcDatabase={2}hdb,cn=config 579*d11b170bStron olcDatabase: {2}hdb 580*d11b170bStron objectClass: olcDatabaseConfig 581*d11b170bStron olcSuffix: {0}dc=example,dc=org 582*d11b170bStron 583*d11b170bStron 2. Continuing on with these three entries, we can add another entry 584*d11b170bStron with a specific ordering-prefix: 585*d11b170bStron dn: olcDatabase={1}ldif,cn=config 586*d11b170bStron changetype: add 587*d11b170bStron olcDatabase: {1}ldif 588*d11b170bStron objectClass: olcDatabaseConfig 589*d11b170bStron olcSuffix: {0}o=example.com 590*d11b170bStron This would give us four entries, whose DNs are: 591*d11b170bStron 592*d11b170bStron dn: olcDatabase={0}config,cn=config 593*d11b170bStron 594*d11b170bStron dn: olcDatabase={1}ldif,cn=config 595*d11b170bStron 596*d11b170bStron dn: olcDatabase={2}bdb,cn=config 597*d11b170bStron 598*d11b170bStron dn: olcDatabase={3}hdb,cn=config 599*d11b170bStron 600*d11b170bStron 3. Issuing a ModRDN request will cause multiple entries to be 601*d11b170bStron renamed: 602*d11b170bStron dn: olcDatabase={1}ldif,cn=config 603*d11b170bStron changetype: modrdn 604*d11b170bStron newrdn: olcDatabase={99}ldif 605*d11b170bStron deleteoldrdn: 1 606*d11b170bStron The resulting entries would be named: 607*d11b170bStron 608*d11b170bStron dn: olcDatabase={0}config,cn=config 609*d11b170bStron 610*d11b170bStron dn: olcDatabase={1}bdb,cn=config 611*d11b170bStron 612*d11b170bStron 613*d11b170bStron 614*d11b170bStron 615*d11b170bStronChu Expires November 2, 2006 [Page 11] 616*d11b170bStron 617*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 618*d11b170bStron 619*d11b170bStron 620*d11b170bStron dn: olcDatabase={2}hdb,cn=config 621*d11b170bStron 622*d11b170bStron dn: olcDatabase={3}ldif,cn=config 623*d11b170bStron 624*d11b170bStron 4. As may be expected, a Delete request will also rename the 625*d11b170bStron remaining entries: 626*d11b170bStron dn: olcDatabase={1}bdb,cn=config 627*d11b170bStron changetype: delete 628*d11b170bStron The remaining entries would be named: 629*d11b170bStron 630*d11b170bStron dn: olcDatabase={0}config,cn=config 631*d11b170bStron 632*d11b170bStron dn: olcDatabase={1}hdb,cn=config 633*d11b170bStron 634*d11b170bStron dn: olcDatabase={2}ldif,cn=config 635*d11b170bStron 636*d11b170bStron 637*d11b170bStron 638*d11b170bStron 639*d11b170bStron 640*d11b170bStron 641*d11b170bStron 642*d11b170bStron 643*d11b170bStron 644*d11b170bStron 645*d11b170bStron 646*d11b170bStron 647*d11b170bStron 648*d11b170bStron 649*d11b170bStron 650*d11b170bStron 651*d11b170bStron 652*d11b170bStron 653*d11b170bStron 654*d11b170bStron 655*d11b170bStron 656*d11b170bStron 657*d11b170bStron 658*d11b170bStron 659*d11b170bStron 660*d11b170bStron 661*d11b170bStron 662*d11b170bStron 663*d11b170bStron 664*d11b170bStron 665*d11b170bStron 666*d11b170bStron 667*d11b170bStron 668*d11b170bStron 669*d11b170bStron 670*d11b170bStron 671*d11b170bStronChu Expires November 2, 2006 [Page 12] 672*d11b170bStron 673*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 674*d11b170bStron 675*d11b170bStron 676*d11b170bStron5. Security Considerations 677*d11b170bStron 678*d11b170bStron General LDAP security considerations [RFC3377] apply. 679*d11b170bStron 680*d11b170bStron 681*d11b170bStron 682*d11b170bStron 683*d11b170bStron 684*d11b170bStron 685*d11b170bStron 686*d11b170bStron 687*d11b170bStron 688*d11b170bStron 689*d11b170bStron 690*d11b170bStron 691*d11b170bStron 692*d11b170bStron 693*d11b170bStron 694*d11b170bStron 695*d11b170bStron 696*d11b170bStron 697*d11b170bStron 698*d11b170bStron 699*d11b170bStron 700*d11b170bStron 701*d11b170bStron 702*d11b170bStron 703*d11b170bStron 704*d11b170bStron 705*d11b170bStron 706*d11b170bStron 707*d11b170bStron 708*d11b170bStron 709*d11b170bStron 710*d11b170bStron 711*d11b170bStron 712*d11b170bStron 713*d11b170bStron 714*d11b170bStron 715*d11b170bStron 716*d11b170bStron 717*d11b170bStron 718*d11b170bStron 719*d11b170bStron 720*d11b170bStron 721*d11b170bStron 722*d11b170bStron 723*d11b170bStron 724*d11b170bStron 725*d11b170bStron 726*d11b170bStron 727*d11b170bStronChu Expires November 2, 2006 [Page 13] 728*d11b170bStron 729*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 730*d11b170bStron 731*d11b170bStron 732*d11b170bStron6. Normative References 733*d11b170bStron 734*d11b170bStron [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 735*d11b170bStron Requirement Levels", BCP 14, RFC 2119, March 1997. 736*d11b170bStron 737*d11b170bStron [RFC2252] Wahl, M., Coulbeck, A., Howes, T., and S. Kille, 738*d11b170bStron "Lightweight Directory Access Protocol (v3): Attribute 739*d11b170bStron Syntax Definitions", RFC 2252, December 1997. 740*d11b170bStron 741*d11b170bStron [RFC3377] Hodges, J. and R. Morgan, "Lightweight Directory Access 742*d11b170bStron Protocol (v3): Technical Specification", RFC 3377, 743*d11b170bStron September 2002. 744*d11b170bStron 745*d11b170bStron [RFC3383] Zeilenga, K., "Internet Assigned Numbers Authority (IANA) 746*d11b170bStron Considerations for the Lightweight Directory Access 747*d11b170bStron Protocol (LDAP)", RFC 3383, September 2002. 748*d11b170bStron 749*d11b170bStron [X680] International Telecommunications Union, "Abstract Syntax 750*d11b170bStron Notation One (ASN.1): Specification of basic notation", 751*d11b170bStron ITU-T Recommendation X.680, July 2002. 752*d11b170bStron 753*d11b170bStron 754*d11b170bStron 755*d11b170bStron 756*d11b170bStron 757*d11b170bStron 758*d11b170bStron 759*d11b170bStron 760*d11b170bStron 761*d11b170bStron 762*d11b170bStron 763*d11b170bStron 764*d11b170bStron 765*d11b170bStron 766*d11b170bStron 767*d11b170bStron 768*d11b170bStron 769*d11b170bStron 770*d11b170bStron 771*d11b170bStron 772*d11b170bStron 773*d11b170bStron 774*d11b170bStron 775*d11b170bStron 776*d11b170bStron 777*d11b170bStron 778*d11b170bStron 779*d11b170bStron 780*d11b170bStron 781*d11b170bStron 782*d11b170bStron 783*d11b170bStronChu Expires November 2, 2006 [Page 14] 784*d11b170bStron 785*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 786*d11b170bStron 787*d11b170bStron 788*d11b170bStronAppendix A. IANA Considerations 789*d11b170bStron 790*d11b170bStron In accordance with [RFC3383] (what needs to be done here?) . We 791*d11b170bStron probably need an OID for advertising in supportedFeatures. 792*d11b170bStron 793*d11b170bStron 794*d11b170bStron 795*d11b170bStron 796*d11b170bStron 797*d11b170bStron 798*d11b170bStron 799*d11b170bStron 800*d11b170bStron 801*d11b170bStron 802*d11b170bStron 803*d11b170bStron 804*d11b170bStron 805*d11b170bStron 806*d11b170bStron 807*d11b170bStron 808*d11b170bStron 809*d11b170bStron 810*d11b170bStron 811*d11b170bStron 812*d11b170bStron 813*d11b170bStron 814*d11b170bStron 815*d11b170bStron 816*d11b170bStron 817*d11b170bStron 818*d11b170bStron 819*d11b170bStron 820*d11b170bStron 821*d11b170bStron 822*d11b170bStron 823*d11b170bStron 824*d11b170bStron 825*d11b170bStron 826*d11b170bStron 827*d11b170bStron 828*d11b170bStron 829*d11b170bStron 830*d11b170bStron 831*d11b170bStron 832*d11b170bStron 833*d11b170bStron 834*d11b170bStron 835*d11b170bStron 836*d11b170bStron 837*d11b170bStron 838*d11b170bStron 839*d11b170bStronChu Expires November 2, 2006 [Page 15] 840*d11b170bStron 841*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 842*d11b170bStron 843*d11b170bStron 844*d11b170bStronAuthor's Address 845*d11b170bStron 846*d11b170bStron Howard Chu 847*d11b170bStron Symas Corp. 848*d11b170bStron 18740 Oxnard Street, Suite 313A 849*d11b170bStron Tarzana, California 91356 850*d11b170bStron USA 851*d11b170bStron 852*d11b170bStron Phone: +1 818 757-7087 853*d11b170bStron Email: hyc@symas.com 854*d11b170bStron 855*d11b170bStron 856*d11b170bStron 857*d11b170bStron 858*d11b170bStron 859*d11b170bStron 860*d11b170bStron 861*d11b170bStron 862*d11b170bStron 863*d11b170bStron 864*d11b170bStron 865*d11b170bStron 866*d11b170bStron 867*d11b170bStron 868*d11b170bStron 869*d11b170bStron 870*d11b170bStron 871*d11b170bStron 872*d11b170bStron 873*d11b170bStron 874*d11b170bStron 875*d11b170bStron 876*d11b170bStron 877*d11b170bStron 878*d11b170bStron 879*d11b170bStron 880*d11b170bStron 881*d11b170bStron 882*d11b170bStron 883*d11b170bStron 884*d11b170bStron 885*d11b170bStron 886*d11b170bStron 887*d11b170bStron 888*d11b170bStron 889*d11b170bStron 890*d11b170bStron 891*d11b170bStron 892*d11b170bStron 893*d11b170bStron 894*d11b170bStron 895*d11b170bStronChu Expires November 2, 2006 [Page 16] 896*d11b170bStron 897*d11b170bStronInternet-Draft LDAP Ordering Extension May 2006 898*d11b170bStron 899*d11b170bStron 900*d11b170bStronFull Copyright Statement 901*d11b170bStron 902*d11b170bStron Copyright (C) The Internet Society (2006). 903*d11b170bStron 904*d11b170bStron This document is subject to the rights, licenses and restrictions 905*d11b170bStron contained in BCP 78, and except as set forth therein, the authors 906*d11b170bStron retain all their rights. 907*d11b170bStron 908*d11b170bStron This document and the information contained herein are provided on an 909*d11b170bStron "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 910*d11b170bStron OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET 911*d11b170bStron ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, 912*d11b170bStron INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE 913*d11b170bStron INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 914*d11b170bStron WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 915*d11b170bStron 916*d11b170bStron 917*d11b170bStronIntellectual Property 918*d11b170bStron 919*d11b170bStron The IETF takes no position regarding the validity or scope of any 920*d11b170bStron Intellectual Property Rights or other rights that might be claimed to 921*d11b170bStron pertain to the implementation or use of the technology described in 922*d11b170bStron this document or the extent to which any license under such rights 923*d11b170bStron might or might not be available; nor does it represent that it has 924*d11b170bStron made any independent effort to identify any such rights. Information 925*d11b170bStron on the procedures with respect to rights in RFC documents can be 926*d11b170bStron found in BCP 78 and BCP 79. 927*d11b170bStron 928*d11b170bStron Copies of IPR disclosures made to the IETF Secretariat and any 929*d11b170bStron assurances of licenses to be made available, or the result of an 930*d11b170bStron attempt made to obtain a general license or permission for the use of 931*d11b170bStron such proprietary rights by implementers or users of this 932*d11b170bStron specification can be obtained from the IETF on-line IPR repository at 933*d11b170bStron http://www.ietf.org/ipr. 934*d11b170bStron 935*d11b170bStron The IETF invites any interested party to bring to its attention any 936*d11b170bStron copyrights, patents or patent applications, or other proprietary 937*d11b170bStron rights that may cover technology that may be required to implement 938*d11b170bStron this standard. Please address the information to the IETF at 939*d11b170bStron ietf-ipr@ietf.org. 940*d11b170bStron 941*d11b170bStron 942*d11b170bStronAcknowledgment 943*d11b170bStron 944*d11b170bStron Funding for the RFC Editor function is provided by the IETF 945*d11b170bStron Administrative Support Activity (IASA). 946*d11b170bStron 947*d11b170bStron 948*d11b170bStron 949*d11b170bStron 950*d11b170bStron 951*d11b170bStronChu Expires November 2, 2006 [Page 17] 952*d11b170bStron 953