]> git.sur5r.net Git - openldap/blob - doc/rfc/rfc2657.txt
Misc updates
[openldap] / doc / rfc / rfc2657.txt
1
2
3
4
5
6
7 Network Working Group                                        R. Hedberg
8 Request for Comment: 2657                                     Catalogix
9 Category: Experimental                                      August 1999
10
11
12                     LDAPv2 Client vs. the Index Mesh
13
14 Status of this Memo
15
16    This memo defines an Experimental Protocol for the Internet
17    community.  It does not specify an Internet standard of any kind.
18    Discussion and suggestions for improvement are requested.
19    Distribution of this memo is unlimited.
20
21 Copyright Notice
22
23    Copyright (C) The Internet Society (1999).  All Rights Reserved.
24
25 Abstract
26
27    LDAPv2 clients as implemented according to RFC 1777 [1] have no
28    notion on referral.  The integration between such a client and an
29    Index Mesh, as defined by the Common Indexing Protocol [2], heavily
30    depends on referrals and therefore needs to be handled in a special
31    way.  This document defines one possible way of doing this.
32
33 1. Background
34
35    During the development of the Common Indexing Protocol (CIP), one of
36    the underlying assumptions was that the interaction between clients
37    and the Index Mesh Servers [1] would heavily depend on the passing of
38    referrals.  Protocols like LDAPv2 [2] that lack this functionality
39    need to compensate for it by some means.  The way chosen in this memo
40    is to add more intelligence into the client. There are two reasons
41    behind this decision.  First, this is not a major enhancement that is
42    needed and secondly, that the intelligence when dealing with the
43    Index Mesh, with or the knowledge about referrals, eventually has to
44    go into the client.
45
46 2. The clients view of the Index Mesh
47
48    If a LDAPv2 client is going to be able to interact with the Index
49    Mesh, the Mesh has to appear as something that is understandable to
50    the client.  Basically, this consists of representing the index
51    servers and their contained indexes in a defined directory
52    information tree (DIT) [3,4] structure and a set of object classes
53    and attribute types that have been proven to be useful in this
54    context.
55
56
57
58 Hedberg                       Experimental                      [Page 1]
59 \f
60 RFC 2657                 LDAPv2 vs. Index Mesh               August 1999
61
62
63 2.1 The CIP Object Classes
64
65    Object class descriptions are written according to the BNF defined in
66    [5].
67
68 2.1.1 cIPIndex
69
70    The cIPIndex objectClass, if present in a entry, allows it to hold
71    one indexvalue and information connected to this value.
72
73    ( 1.2.752.17.3.9
74      NAME 'cIPIndex'
75      SUP 'top'
76      STRUCTURAL
77      MUST ( extendedDSI $ idx )
78      MAY ( indexOCAT )
79    )
80
81 2.1.2 cIPDataSet
82
83    The cIPDataSet objectClass, if present in a entry, allows it to hold
84    information concerning one DataSet.
85
86    ( 1.2.752.17.3.10
87      NAME 'cIPDataSet'
88      SUP 'top'
89      STRUCTURAL
90      MUST ( dSI $ searchBase )
91      MAY ( indexOCAT $ description $ indexType $
92            accessPoint $ protocolVersion $ polledBy $
93            updateIntervall $ securityOption $
94            supplierURI $ consumerURI $ baseURI $
95            attributeNamespace $ consistencyBase
96       )
97    )
98
99 2.2 The CIP attributeTypes
100
101    The attributes idx, indexOCAT, extendedDSI, description,
102    cIPIndexType, baseURI, dSI are used by a client accessing the index
103    server.  The other attributes (accesspoint, protocolVersion,
104    polledBy, updateIntervall, consumerURI, supplierURI and
105    securityOption, attributeNamespace, consistencyBase) are all for
106    usage in server to server interactions.
107
108
109
110
111
112
113
114 Hedberg                       Experimental                      [Page 2]
115 \f
116 RFC 2657                 LDAPv2 vs. Index Mesh               August 1999
117
118
119 2.2.1 idx
120
121    The index value, normally used as part of the RDN.
122
123    ( 1.2.752.17.1.20
124      NAME 'idx'
125      EQUALITY caseIgnoreIA5Match
126      SYNTAX IA5String
127      SINGLE-VALUE
128       )
129
130 2.2.2 dSI
131
132    DataSet Identifier, a unique identifier for one particular set of
133    information.  This should be an OID, but stored in a stringformat.
134
135    ( 1.2.752.17.1.21
136      NAME 'dSI'
137      EQUALITY caseIgnoreIA5Match
138      SYNTAX IA5String
139    )
140
141 2.2.3 indexOCAT
142
143    Describes the type of data that is stored in this entry, by using
144    objectcClasses and attributeTypes. The information is stored as a
145    objectClass name followed by a space and then an attributeType name.
146    A typical example when dealing with whitepages information would be
147    "person cn".
148
149    ( 1.2.752.17.1.28
150      NAME 'indexOCAT'
151      EQUALITY caseIgnoreIA5Match
152      SYNTAX IA5String
153    )
154
155 2.2.5 supplierURI
156
157    A URI describing which protocols, hostnames and ports should be used
158    by an indexserver to interact with servers carrying indexinformation
159    representing this dataSet.
160
161      ( 1.2.752.17.1.22
162       NAME 'supplierURI'
163       EQUALITY caseIgnoreIA5Match
164       SYNTAX IA5String
165    )
166
167
168
169
170 Hedberg                       Experimental                      [Page 3]
171 \f
172 RFC 2657                 LDAPv2 vs. Index Mesh               August 1999
173
174
175 2.2.6 baseURI
176
177    The attribute value for this attribute is a LDAP URI. One can
178    envisage other URI syntaxes, if the client knows about more access
179    protocols besides LDAP, and the interaction between the client and
180    the server can not use referrals for some reason.
181
182    ( 1.2.752.17.1.26
183      NAME 'baseURI'
184      EQUALITY caseExactIA5Match
185      SYNTAX IA5String
186    )
187
188 2.2.7 protocolVersion
189
190    At present, the Common Indexing Protocol version should be 3.
191
192    ( 1.2.752.17.1.27
193      NAME 'protocolVersion'
194      EQUALITY numericStringMatch
195      SYNTAX numericString
196    )
197
198 2.2.8 cIPIndexType
199
200    The type of index Object that is used to pass around index
201    information.
202
203    ( 1.2.752.17.1.29
204      NAME 'cIPIndexType'
205      EQUALITY caseIgnoreIA5Match
206      SYNTAX IA5String
207    )
208
209 2.2.10 polledBy
210
211    The Distinguished Name of Index servers that polls data from this
212    indexserver.
213
214    ( 1.2.752.17.1.30
215      NAME 'polledBy'
216      EQUALITY distinguishedNameMatch
217      SYNTAX DN
218    )
219
220
221
222
223
224
225
226 Hedberg                       Experimental                      [Page 4]
227 \f
228 RFC 2657                 LDAPv2 vs. Index Mesh               August 1999
229
230
231 2.2.11 updateIntervall
232
233    The maximum duration in seconds between the generation of two updates
234    by the supplier server.
235
236    ( 1.2.752.17.1.31
237      Name 'updateIntervall'
238      EQUALITY numericStringMatch
239      SYNTAX numericString
240      SINGLE-VALUE
241    )
242
243 2.2.12 securityOption
244
245    Whether and how the supplier server should sign and encrypt the
246    update before sending it to the consumer server.
247
248    ( 1.2.752.17.1.32
249      NAME 'securityOption'
250      EQUALITY caseIgnoreIA5Match
251      SYNTAX IA5String
252      SINGLE-VALUE
253    )
254
255 2.2.13 extendedDSI
256
257    DataSet Identifier possibly followed by a space and a taglist, the
258    later as specified by [6].
259
260    ( 1.2.752.17.1.33
261      NAME 'extendedDSI'
262      EQUALITY caseIgnoreIA5Match
263      SYNTAX IA5String
264         )
265
266 2.2.14 consumerURI
267
268    A URI describing which means a server can accept indexinformation.
269    An example being a mailto URI for MIME email based index transport.
270
271    ( 1.2.752.17.1.34
272      NAME 'consumerURI'
273      EQUALITY caseExactIA5Match
274      SYNTAX IA5String
275    )
276
277
278
279
280
281
282 Hedberg                       Experimental                      [Page 5]
283 \f
284 RFC 2657                 LDAPv2 vs. Index Mesh               August 1999
285
286
287 2.2.15 attributeNamespace
288
289    Any consumer supplier pair has to agree on what attribute that should
290    be used and also possibly the meaning of the attributenames. The
291    value of this attribute should, for example, be a URI pointing to a
292    document wherein the agreement is described.
293
294    ( 1.2.752.17.1.35 NAME 'attributeNamespace' EQUALITY
295      caseExactIA5Match SYNTAX IA5String
296    )
297
298 2.2.16 consistencyBase
299
300    This attribute is specifically used by consumer supplier pairs that
301    use the tagged index object [6].
302
303    ( 1.2.752.17.1.36
304      NAME 'consistencyBase'
305      EQUALITY caseExactIA5Match
306      SYNTAX IA5String
307    )
308
309 3. The interaction between a client and the Index Mesh
310
311    A client interaction with the Index Mesh consists of a couple of
312    rather well defined actions. The first being to find a suitable index
313    to start with, then to transverse the Index Mesh and finally to query
314    the servers holding the original data.  Note when reading this text
315    that what is discussed here is the client's perception of the DIT,
316    how it is in fact implemented is not discussed.
317
318 3.1 Finding a Index Mesh
319
320    This approach depends on the fact that every index server partaking
321    in an Index Mesh is represented in the DIT by a entry of the type
322    cIPDataSet, and has a distinguished name (DN) which most significant
323    relative distinguished name (RDN) has the attributetype dSI.
324    Therefore, finding a suitable indexserver to start the search from is
325    a matter of searching the DIT at a suitable place for objects with
326    the objectClass cIPIndexObject.  Every found entry can then be
327    evaluated by looking at the description value as well as the
328    indexOCAT value. The description string should be a human readable
329    and understandable text that describes what the index server is
330    indexing. An example of such a string could be, "This index covers
331    all employees at Swedish Universities and University Colleges that
332    has an email account". The indexOCAT attribute supplies information
333    about which kind of entries and which attributes within these entries
334    that the index information has emanated from.  For example, if the
335
336
337
338 Hedberg                       Experimental                      [Page 6]
339 \f
340 RFC 2657                 LDAPv2 vs. Index Mesh               August 1999
341
342
343    indexOCAT attribute value is "person cn", one can deduce that this is
344    an index over persons and not over roles, and that it is the
345    attribute commonName that is indexed.
346
347 3.2 Searching the mesh
348
349    Each index server has its information represented in the DIT as a
350    very flat tree. In fact, it is only one level deep.
351
352
353                             0 Indexservers cIPDataSet
354                            /|\
355                           / | \
356                          /  |  \
357                         0       0
358       cIPDataSet entries     cIPIndex entries
359       one for each DataSet   one for each index value
360       that this server has   that this indexserver
361       gathered indexes from. has.
362
363    A search then consists of a set of searches.  The first being the
364    search for the index entries that contains an indexvalue that matches
365    what the user is looking for, and the second a search based on the
366    DSI information in the extendedDSI attribute values returned from the
367    first search.  In the case of the the cIPIndexType being tagged-
368    index, the taglists should be compared to find which DSI it might be
369    useful to pose further queries to.
370
371    When doing these types of searches, the client should be aware of the
372    fact that the index values disregarding their origin (attributeTypes)
373    always are stored in the index server as values of the idx attribute.
374
375    The object of the second search is to get information on the
376    different DataSet involved, and should normally be performed as a
377    read. Since the DataSet information probably will remain quite stable
378    over time, this information lends itself very well to caching.  If at
379    this stage there is more than one DataSet involved, the User
380    interface might use the description value to aid the user in choosing
381    which one to proceed with.  The content of the searchBase value of
382    the DataSet tells the client whether it represents another index
383    server (the most significant part of the dn is a dSI attribute) or if
384    it is a end server.
385
386
387
388
389
390
391
392
393
394 Hedberg                       Experimental                      [Page 7]
395 \f
396 RFC 2657                 LDAPv2 vs. Index Mesh               August 1999
397
398
399 3.3 Querying the end server
400
401    When finally reaching the end server/servers that probably has the
402    sought for information, the information in the indexOCAT attribute
403    can be used to produce an appropriate filter.  If a search for "Rol*"
404    in an index having an indexOCAT attribute value of "person cn"
405    returns an idx entry with the idx value of "Roland", then an
406    appropriate filter to use might be "&(|(cn=* roland *)(cn=roland
407    *)(cn=* roland))(objectclass=person)".  A complete example of a
408    search process is given in Appendix A.
409
410 4. Security Considerations
411
412    Since this memo deals with client behavior, it does not add anything
413    that either enhances or diminishes the security features that exists
414    in LDAPv2.
415
416 5. Internationalization
417
418    As with security, this memo neither enhances or diminishes the
419    handling of internationalization in LDAPv2.
420
421 6. References
422
423    [1] Yeong, W., Howes, T. and S. Kille, "Lightweight Directory Access
424        Protocol", RFC 1777, March 1995.
425
426    [2] Allen, J. and M. Mealling "The Architecture of the Common
427        Indexing Protocol (CIP)", RFC 2651, August 1999.
428
429    [3] The Directory: Overview of Concepts, Models and Service. CCITT
430        Recommendation X.500, 1988.
431
432    [4] Information Processing Systems -- Open Systems Interconnection --
433        The Directory: Overview of Concepts, Models and Service. ISO/IEC
434        JTC 1/SC21; International Standard 9594-1, 1988.
435
436    [5] Wahl, M., Coulbeck, A., Howes, T. and S. Kille, "Lightweight
437        Directory Access Protocol (v3): Attribute Syntax Definitions",
438        RFC 2252, December 1997.
439
440    [6] Hedberg, R., Greenblatt, B., Moats, R. and M. Wahl, "A Tagged
441        Index Object for use in the Common Indexing Protocol", RFC 2654,
442        August 1999.
443
444
445
446
447
448
449
450 Hedberg                       Experimental                      [Page 8]
451 \f
452 RFC 2657                 LDAPv2 vs. Index Mesh               August 1999
453
454
455 7. Author's Address
456
457    Roland Hedberg
458    Catalogix
459    Dalsveien 53
460    0387 Oslo, Norway
461
462    Phone: +47 23 08 29 96
463    EMail: roland@catalogix.ac.se
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 Hedberg                       Experimental                      [Page 9]
507 \f
508 RFC 2657                 LDAPv2 vs. Index Mesh               August 1999
509
510
511 Appendix A - Sample Session
512
513    Below is a sample of a session between a LDAPv2 client and an index
514    server mesh as specified in this memo.
515
516    The original question of the session is to find the email address of
517    a person by the name, "Roland Hedberg", who is working at "Umea
518    University" in Sweden.
519
520    Step 1.
521
522    A singlelevel search with the baseaddress "c=SE" and the filter
523    "(objectclass=cipDataset)" was issued.
524
525    The following results were received:
526
527    DN: dSI=1.2.752.17.5.0,c=SE
528    dsi= 1.2.752.17.5.0
529    description= "index over employees with emailaddresses within Swedish
530    higher education"
531    indexOCAT= "cn person"
532    cIPIndexType= "x-tagged-index-1" ;
533    searchBase= "dsi=1.2.752.17.5.0,c=SE"
534    protocolVersion = 3
535
536    DN: dSI=1.2.752.23.1.3,c=SE
537    dsi= 1.2.752.23.1.3
538    description= "index over Swedish lawyers"
539    indexOCAT= "cn person"
540    cIPIndexType= "x-tagged-index-1" ;
541    searchBase= "dsi=1.2.752.23.1.3,c=SE"
542    protocolVersion = 3
543
544    Step 2.
545
546    Since the first index seemed to cover the interesting population, a
547    single level search with the baseaddress "dsi=1.2.752.17.5.0,c=SE"
548    and the filter "(|(idx=roland)(idx=hedberg))" was issued.
549
550    The following results were received:
551
552    DN: idx=Roland,dSI=1.2.752.17.5.0,c=SE
553    idx= Roland
554    extendedDSI= 1.2.752.17.5.10 1,473,612,879,1024
555    extendedDSI= 1.2.752.17.5.14 35,78,150,200
556    extendedDSI= 1.2.752.17.5.16 187,2031,3167,5284,6034-6040
557    extendedDSI= 1.2.752.17.5.17 17
558
559
560
561
562 Hedberg                       Experimental                     [Page 10]
563 \f
564 RFC 2657                 LDAPv2 vs. Index Mesh               August 1999
565
566
567    DN: idx=Hedberg,dSI=1.2.752.17.5.0,c=SE
568    idx= Hedberg
569    extendedDSI= 1.2.752.17.5.8  24,548-552,1066
570    extendedDSI= 1.2.752.17.5.10 473,512,636,777,1350
571    extendedDSI= 1.2.752.17.5.14 84,112,143,200
572    extendedDSI= 1.2.752.17.5.15 1890-1912
573    extendedDSI= 1.2.752.17.5.17 44
574
575    A comparison between the two sets of extendedDSIs shows that two
576    datasets 1.2.752.17.5.10 and 1.2.752.17.5.14 contains persons named
577    "Roland" and "Hedberg". Therefore, the next step would be to see what
578    the datasets represent.  A comparison like this should normally not
579    be left to the user.
580
581    Step. 3
582
583    Two baselevel searches, one for
584    "dsi=1.2.752.17.5.10,dsi=1.2.752.17.5.0,c=SE" and the other for
585    "dsi=1.2.752.17.5.14,dsi=1.2.752.17.5.0,c=SE" with the filter
586    "(objectclass=cipdataset)" were issued.
587
588    The following results were received:
589
590    DN: dSI=1.2.752.17.5.10,dSI=1.2.752.17.5.0,c=SE
591    dsi= 1.2.752.17.5.10
592    description= "Employees at Umea University,Sweden"
593    indexOCAT= "person cn"
594    searchBase= "o=Umea Universitet,c=SE"
595
596    respectively
597
598    DN: dSI=1.2.752.17.5.14,dSI=1.2.752.17.5.0,c=SE
599    dsi= 1.2.752.17.5.14
600    description= "Employees at Lund University,Sweden"
601    indexOCAT= "person cn"
602    searchBase= "o=Lunds Universitet,c=SE"
603
604    Step 4
605
606    Based on the descriptions for the two datasets, "1.2.752.17.5.10" was
607    chosen as the best to proceed with.  From the searchbase attribute
608    value, it was clear that this was a base server.  The query now has
609    to be somewhat modified.  One possibility would be to issue a query
610    with the baseobject "o=Umea Universitet,c=SE" and the filter
611    "(&(cn=Roland Hedberg)(objectclass=person))"
612
613
614
615
616
617
618 Hedberg                       Experimental                     [Page 11]
619 \f
620 RFC 2657                 LDAPv2 vs. Index Mesh               August 1999
621
622
623 Full Copyright Statement
624
625    Copyright (C) The Internet Society (1999).  All Rights Reserved.
626
627    This document and translations of it may be copied and furnished to
628    others, and derivative works that comment on or otherwise explain it
629    or assist in its implementation may be prepared, copied, published
630    and distributed, in whole or in part, without restriction of any
631    kind, provided that the above copyright notice and this paragraph are
632    included on all such copies and derivative works.  However, this
633    document itself may not be modified in any way, such as by removing
634    the copyright notice or references to the Internet Society or other
635    Internet organizations, except as needed for the purpose of
636    developing Internet standards in which case the procedures for
637    copyrights defined in the Internet Standards process must be
638    followed, or as required to translate it into languages other than
639    English.
640
641    The limited permissions granted above are perpetual and will not be
642    revoked by the Internet Society or its successors or assigns.
643
644    This document and the information contained herein is provided on an
645    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
646    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
647    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
648    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
649    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
650
651 Acknowledgement
652
653    Funding for the RFC Editor function is currently provided by the
654    Internet Society.
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674 Hedberg                       Experimental                     [Page 12]
675 \f