source: branches/samba-3.5.x/source4/ldap_server/devdocs/rfc2891.txt

Last change on this file was 414, checked in by Herwig Bauernfeind, 15 years ago

Samba 3.5.0: Initial import

File size: 15.5 KB
Line 
1
2
3
4
5
6
7Network Working Group T. Howes
8Request for Comments: 2891 Loudcloud
9Category: Standards Track M. Wahl
10 Sun Microsystems
11 A. Anantha
12 Microsoft
13 August 2000
14
15
16 LDAP Control Extension for Server Side Sorting of Search Results
17
18Status of this Memo
19
20 This document specifies an Internet standards track protocol for the
21 Internet community, and requests discussion and suggestions for
22 improvements. Please refer to the current edition of the "Internet
23 Official Protocol Standards" (STD 1) for the standardization state
24 and status of this protocol. Distribution of this memo is unlimited.
25
26Copyright Notice
27
28 Copyright (C) The Internet Society (2000). All Rights Reserved.
29
30Abstract
31
32 This document describes two LDAPv3 control extensions for server side
33 sorting of search results. These controls allows a client to specify
34 the attribute types and matching rules a server should use when
35 returning the results to an LDAP search request. The controls may be
36 useful when the LDAP client has limited functionality or for some
37 other reason cannot sort the results but still needs them sorted.
38 Other permissible controls on search operations are not defined in
39 this extension.
40
41 The sort controls allow a server to return a result code for the
42 sorting of the results that is independent of the result code
43 returned for the search operation.
44
45 The key words "MUST", "SHOULD", and "MAY" used in this document are
46 to be interpreted as described in [bradner97].
47
48
49
50
51
52
53
54
55
56
57
58Howes, et al. Standards Track [Page 1]
59
60
61RFC 2891 LDAP Control Extension for Server Side Sorting August 2000
62
63
641. The Controls
65
661.1 Request Control
67
68 This control is included in the searchRequest message as part of the
69 controls field of the LDAPMessage, as defined in Section 4.1.12 of
70 [LDAPv3].
71
72 The controlType is set to "1.2.840.113556.1.4.473". The criticality
73 MAY be either TRUE or FALSE (where absent is also equivalent to
74 FALSE) at the client's option. The controlValue is an OCTET STRING,
75 whose value is the BER encoding of a value of the following SEQUENCE:
76
77 SortKeyList ::= SEQUENCE OF SEQUENCE {
78 attributeType AttributeDescription,
79 orderingRule [0] MatchingRuleId OPTIONAL,
80 reverseOrder [1] BOOLEAN DEFAULT FALSE }
81
82 The SortKeyList sequence is in order of highest to lowest sort key
83 precedence.
84
85 The MatchingRuleId, as defined in section 4.1.9 of [LDAPv3], SHOULD
86 be one that is valid for the attribute type it applies to. If it is
87 not, the server will return inappropriateMatching.
88
89 Each attributeType should only occur in the SortKeyList once. If an
90 attributeType is included in the sort key list multiple times, the
91 server should return an error in the sortResult of
92 unwillingToPerform.
93
94 If the orderingRule is omitted, the ordering MatchingRule defined for
95 use with this attribute MUST be used.
96
97 Any conformant implementation of this control MUST allow a sort key
98 list with at least one key.
99
1001.2 Response Control
101
102 This control is included in the searchResultDone message as part of
103 the controls field of the LDAPMessage, as defined in Section 4.1.12
104 of [LDAPv3].
105
106 The controlType is set to "1.2.840.113556.1.4.474". The criticality
107 is FALSE (MAY be absent). The controlValue is an OCTET STRING, whose
108 value is the BER encoding of a value of the following SEQUENCE:
109
110
111
112
113
114
115Howes, et al. Standards Track [Page 2]
116
117
118RFC 2891 LDAP Control Extension for Server Side Sorting August 2000
119
120
121 SortResult ::= SEQUENCE {
122 sortResult ENUMERATED {
123 success (0), -- results are sorted
124 operationsError (1), -- server internal failure
125 timeLimitExceeded (3), -- timelimit reached before
126 -- sorting was completed
127 strongAuthRequired (8), -- refused to return sorted
128 -- results via insecure
129 -- protocol
130 adminLimitExceeded (11), -- too many matching entries
131 -- for the server to sort
132 noSuchAttribute (16), -- unrecognized attribute
133 -- type in sort key
134 inappropriateMatching (18), -- unrecognized or
135 -- inappropriate matching
136 -- rule in sort key
137 insufficientAccessRights (50), -- refused to return sorted
138 -- results to this client
139 busy (51), -- too busy to process
140 unwillingToPerform (53), -- unable to sort
141 other (80)
142 },
143 attributeType [0] AttributeDescription OPTIONAL }
144
1452. Client-Server Interaction
146
147 The sortKeyRequestControl specifies one or more attribute types and
148 matching rules for the results returned by a search request. The
149 server SHOULD return all results for the search request in the order
150 specified by the sort keys. If the reverseOrder field is set to TRUE,
151 then the entries will be presented in reverse sorted order for the
152 specified key.
153
154 There are six possible scenarios that may occur as a result of the
155 sort control being included on the search request:
156
157 1 - If the server does not support this sorting control and the
158 client specified TRUE for the control's criticality field, then
159 the server MUST return unavailableCriticalExtension as a return
160 code in the searchResultDone message and not send back any other
161 results. This behavior is specified in section 4.1.12 of
162 [LDAPv3].
163
164 2 - If the server does not support this sorting control and the
165 client specified FALSE for the control's criticality field, then
166 the server MUST ignore the sort control and process the search
167 request as if it were not present. This behavior is specified in
168 section 4.1.12 of [LDAPv3].
169
170
171
172Howes, et al. Standards Track [Page 3]
173
174
175RFC 2891 LDAP Control Extension for Server Side Sorting August 2000
176
177
178 3 - If the server supports this sorting control but for some reason
179 cannot sort the search results using the specified sort keys and
180 the client specified TRUE for the control's criticality field,
181 then the server SHOULD do the following: return
182 unavailableCriticalExtension as a return code in the
183 searchResultDone message; include the sortKeyResponseControl in
184 the searchResultDone message, and not send back any search result
185 entries.
186
187 4 - If the server supports this sorting control but for some reason
188 cannot sort the search results using the specified sort keys and
189 the client specified FALSE for the control's criticality field,
190 then the server should return all search results unsorted and
191 include the sortKeyResponseControl in the searchResultDone
192 message.
193
194 5 - If the server supports this sorting control and can sort the
195 search results using the specified sort keys, then it should
196 include the sortKeyResponseControl in the searchResultDone
197 message with a sortResult of success.
198
199 6 - If the search request failed for any reason and/or there are no
200 searchResultEntry messages returned for the search response, then
201 the server SHOULD omit the sortKeyResponseControl from the
202 searchResultDone message.
203
204 The client application is assured that the results are sorted in the
205 specified key order if and only if the result code in the
206 sortKeyResponseControl is success. If the server omits the
207 sortKeyResponseControl from the searchResultDone message, the client
208 SHOULD assume that the sort control was ignored by the server.
209
210 The sortKeyResponseControl, if included by the server in the
211 searchResultDone message, should have the sortResult set to either
212 success if the results were sorted in accordance with the keys
213 specified in the sortKeyRequestControl or set to the appropriate
214 error code as to why it could not sort the data (such as
215 noSuchAttribute or inappropriateMatching). Optionally, the server MAY
216 set the attributeType to the first attribute type specified in the
217 SortKeyList that was in error. The client SHOULD ignore the
218 attributeType field if the sortResult is success.
219
220 The server may not be able to sort the results using the specified
221 sort keys because it may not recognize one of the attribute types,
222 the matching rule associated with an attribute type is not
223 applicable, or none of the attributes in the search response are of
224 these types. Servers may also restrict the number of keys allowed in
225 the control, such as only supporting a single key.
226
227
228
229Howes, et al. Standards Track [Page 4]
230
231
232RFC 2891 LDAP Control Extension for Server Side Sorting August 2000
233
234
235 Servers that chain requests to other LDAP servers should ensure that
236 the server satisfying the client's request sort the entire result set
237 prior to sending back the results.
238
2392.1 Behavior in a chained environment
240
241 If a server receives a sort request, the client expects to receive a
242 set of sorted results. If a client submits a sort request to a server
243 which chains the request and gets entries from multiple servers, and
244 the client has set the criticality of the sort extension to TRUE, the
245 server MUST merge sort the results before returning them to the
246 client or MUST return unwillingToPerform.
247
2482.2 Other sort issues
249
250 An entry that meets the search criteria may be missing one or more of
251 the sort keys. In that case, the entry is considered to have a value
252 of NULL for that key. This standard considers NULL to be a larger
253 value than all other valid values for that key. For example, if only
254 one key is specified, entries which meet the search criteria but do
255 not have that key collate after all the entries which do have that
256 key. If the reverseOrder flag is set, and only one key is specified,
257 entries which meet the search criteria but do not have that key
258 collate BEFORE all the entries which do have that key.
259
260 If a sort key is a multi-valued attribute, and an entry happens to
261 have multiple values for that attribute and no other controls are
262 present that affect the sorting order, then the server SHOULD use the
263 least value (according to the ORDERING rule for that attribute).
264
2653. Interaction with other search controls
266
267 When the sortKeyRequestControl control is included with the
268 pagedResultsControl control as specified in [LdapPaged], then the
269 server should send the searchResultEntry messages sorted according to
270 the sort keys applied to the entire result set. The server should not
271 simply sort each page, as this will give erroneous results to the
272 client.
273
274 The sortKeyList must be present on each searchRequest message for the
275 paged result. It also must not change between searchRequests for the
276 same result set. If the server has sorted the data, then it SHOULD
277 send back a sortKeyResponseControl control on every searchResultDone
278 message for each page. This will allow clients to quickly determine
279 if the result set is sorted, rather than waiting to receive the
280 entire result set.
281
282
283
284
285
286Howes, et al. Standards Track [Page 5]
287
288
289RFC 2891 LDAP Control Extension for Server Side Sorting August 2000
290
291
2924. Security Considerations
293
294 Implementors and administrators should be aware that allowing sorting
295 of results could enable the retrieval of a large number of records
296 from a given directory service, regardless of administrative limits
297 set on the maximum number of records to return.
298
299 A client that desired to pull all records out of a directory service
300 could use a combination of sorting and updating of search filters to
301 retrieve all records in a database in small result sets, thus
302 circumventing administrative limits.
303
304 This behavior can be overcome by the judicious use of permissions on
305 the directory entries by the administrator and by intelligent
306 implementations of administrative limits on the number of records
307 retrieved by a client.
308
3095. References
310
311 [LDAPv3] Wahl, M, Kille, S. and T. Howes, "Lightweight Directory
312 Access Protocol (v3)", RFC 2251, December 1997.
313
314 [Bradner97] Bradner, S., "Key Words for use in RFCs to Indicate
315 Requirement Levels", BCP 14, RFC 2119, March 1997.
316
317 [LdapPaged] Weider, C., Herron, A., Anantha, A. and T. Howes, "LDAP
318 Control Extension for Simple Paged Results Manipulation",
319 RFC 2696, September 1999.
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343Howes, et al. Standards Track [Page 6]
344
345
346RFC 2891 LDAP Control Extension for Server Side Sorting August 2000
347
348
3496. Authors' Addresses
350
351 Anoop Anantha
352 Microsoft Corp.
353 1 Microsoft Way
354 Redmond, WA 98052
355 USA
356
357 Phone: +1 425 882-8080
358 EMail: anoopa@microsoft.com
359
360
361 Tim Howes
362 Loudcloud, Inc.
363 615 Tasman Dr.
364 Sunnyvale, CA 94089
365 USA
366
367 EMail: howes@loudcloud.com
368
369
370 Mark Wahl
371 Sun Microsystems, Inc.
372 8911 Capital of Texas Hwy Suite 4140
373 Austin, TX 78759
374 USA
375
376 EMail: Mark.Wahl@sun.com
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400Howes, et al. Standards Track [Page 7]
401
402
403RFC 2891 LDAP Control Extension for Server Side Sorting August 2000
404
405
4067. Full Copyright Statement
407
408 Copyright (C) The Internet Society (2000). 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
434Acknowledgement
435
436 Funding for the RFC Editor function is currently provided by the
437 Internet Society.
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457Howes, et al. Standards Track [Page 8]
458
459
Note: See TracBrowser for help on using the repository browser.