1 |
|
---|
2 |
|
---|
3 |
|
---|
4 |
|
---|
5 |
|
---|
6 |
|
---|
7 | Network Working Group K. Zeilenga
|
---|
8 | Request for Comments: 4521 OpenLDAP Foundation
|
---|
9 | BCP: 118 June 2006
|
---|
10 | Category: Best Current Practice
|
---|
11 |
|
---|
12 |
|
---|
13 | Considerations for
|
---|
14 | Lightweight Directory Access Protocol (LDAP) Extensions
|
---|
15 |
|
---|
16 | Status of This Memo
|
---|
17 |
|
---|
18 | This document specifies an Internet Best Current Practices for the
|
---|
19 | Internet Community, and requests discussion and suggestions for
|
---|
20 | improvements. Distribution of this memo is unlimited.
|
---|
21 |
|
---|
22 | Copyright Notice
|
---|
23 |
|
---|
24 | Copyright (C) The Internet Society (2006).
|
---|
25 |
|
---|
26 | Abstract
|
---|
27 |
|
---|
28 | The Lightweight Directory Access Protocol (LDAP) is extensible. It
|
---|
29 | provides mechanisms for adding new operations, extending existing
|
---|
30 | operations, and expanding user and system schemas. This document
|
---|
31 | discusses considerations for designers of LDAP extensions.
|
---|
32 |
|
---|
33 |
|
---|
34 |
|
---|
35 |
|
---|
36 |
|
---|
37 |
|
---|
38 |
|
---|
39 |
|
---|
40 |
|
---|
41 |
|
---|
42 |
|
---|
43 |
|
---|
44 |
|
---|
45 |
|
---|
46 |
|
---|
47 |
|
---|
48 |
|
---|
49 |
|
---|
50 |
|
---|
51 |
|
---|
52 |
|
---|
53 |
|
---|
54 |
|
---|
55 |
|
---|
56 |
|
---|
57 |
|
---|
58 | Zeilenga Best Current Practice [Page 1]
|
---|
59 | |
---|
60 |
|
---|
61 | RFC 4521 LDAP Extensions June 2006
|
---|
62 |
|
---|
63 |
|
---|
64 | Table of Contents
|
---|
65 |
|
---|
66 | 1. Introduction ....................................................3
|
---|
67 | 1.1. Terminology ................................................3
|
---|
68 | 2. General Considerations ..........................................4
|
---|
69 | 2.1. Scope of Extension .........................................4
|
---|
70 | 2.2. Interaction between extensions .............................4
|
---|
71 | 2.3. Discovery Mechanism ........................................4
|
---|
72 | 2.4. Internationalization Considerations ........................5
|
---|
73 | 2.5. Use of the Basic Encoding Rules ............................5
|
---|
74 | 2.6. Use of Formal Languages ....................................5
|
---|
75 | 2.7. Examples ...................................................5
|
---|
76 | 2.8. Registration of Protocol Values ............................5
|
---|
77 | 3. LDAP Operation Extensions .......................................6
|
---|
78 | 3.1. Controls ...................................................6
|
---|
79 | 3.1.1. Extending Bind Operation with Controls ..............6
|
---|
80 | 3.1.2. Extending the Start TLS Operation with Controls .....7
|
---|
81 | 3.1.3. Extending the Search Operation with Controls ........7
|
---|
82 | 3.1.4. Extending the Update Operations with Controls .......8
|
---|
83 | 3.1.5. Extending the Responseless Operations with Controls..8
|
---|
84 | 3.2. Extended Operations ........................................8
|
---|
85 | 3.3. Intermediate Responses .....................................8
|
---|
86 | 3.4. Unsolicited Notifications ..................................9
|
---|
87 | 4. Extending the LDAP ASN.1 Definition .............................9
|
---|
88 | 4.1. Result Codes ...............................................9
|
---|
89 | 4.2. LDAP Message Types .........................................9
|
---|
90 | 4.3. Authentication Methods ....................................10
|
---|
91 | 4.4. General ASN.1 Extensibility ...............................10
|
---|
92 | 5. Schema Extensions ..............................................10
|
---|
93 | 5.1. LDAP Syntaxes .............................................11
|
---|
94 | 5.2. Matching Rules ............................................11
|
---|
95 | 5.3. Attribute Types ...........................................12
|
---|
96 | 5.4. Object Classes ............................................12
|
---|
97 | 6. Other Extension Mechanisms .....................................12
|
---|
98 | 6.1. Attribute Description Options .............................12
|
---|
99 | 6.2. Authorization Identities ..................................12
|
---|
100 | 6.3. LDAP URL Extensions .......................................12
|
---|
101 | 7. Security Considerations ........................................12
|
---|
102 | 8. Acknowledgements ...............................................13
|
---|
103 | 9. References .....................................................13
|
---|
104 | 9.1. Normative References ......................................13
|
---|
105 | 9.2. Informative References ....................................15
|
---|
106 |
|
---|
107 |
|
---|
108 |
|
---|
109 |
|
---|
110 |
|
---|
111 |
|
---|
112 |
|
---|
113 |
|
---|
114 |
|
---|
115 | Zeilenga Best Current Practice [Page 2]
|
---|
116 | |
---|
117 |
|
---|
118 | RFC 4521 LDAP Extensions June 2006
|
---|
119 |
|
---|
120 |
|
---|
121 | 1. Introduction
|
---|
122 |
|
---|
123 | The Lightweight Directory Access Protocol (LDAP) [RFC4510] is an
|
---|
124 | extensible protocol.
|
---|
125 |
|
---|
126 | LDAP allows for new operations to be added and for existing
|
---|
127 | operations to be enhanced [RFC4511].
|
---|
128 |
|
---|
129 | LDAP allows additional schema to be defined [RFC4512][RFC4517]. This
|
---|
130 | can include additional object classes, attribute types, matching
|
---|
131 | rules, additional syntaxes, and other elements of schema. LDAP
|
---|
132 | provides an ability to extend attribute types with options [RFC4512].
|
---|
133 |
|
---|
134 | LDAP supports a Simple Authentication and Security Layer (SASL)
|
---|
135 | authentication method [RFC4511][RFC4513]. SASL [RFC4422] is
|
---|
136 | extensible. LDAP may be extended to support additional
|
---|
137 | authentication methods [RFC4511].
|
---|
138 |
|
---|
139 | LDAP supports establishment of Transport Layer Security (TLS)
|
---|
140 | [RFC4511][RFC4513]. TLS [RFC4346] is extensible.
|
---|
141 |
|
---|
142 | LDAP has an extensible Uniform Resource Locator (URL) format
|
---|
143 | [RFC4516].
|
---|
144 |
|
---|
145 | Lastly, LDAP allows for certain extensions to the protocol's Abstract
|
---|
146 | Syntax Notation - One (ASN.1) [X.680] definition to be made. This
|
---|
147 | facilitates a wide range of protocol enhancements, for example, new
|
---|
148 | result codes needed to support extensions to be added through
|
---|
149 | extension of the protocol's ASN.1 definition.
|
---|
150 |
|
---|
151 | This document describes practices that engineers should consider when
|
---|
152 | designing extensions to LDAP.
|
---|
153 |
|
---|
154 | 1.1. Terminology
|
---|
155 |
|
---|
156 | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
---|
157 | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
---|
158 | document are to be interpreted as described in BCP 14 [RFC2119]. In
|
---|
159 | this document, "the specification", as used by BCP 14, RFC 2119,
|
---|
160 | refers to the engineering of LDAP extensions.
|
---|
161 |
|
---|
162 | The term "Request Control" refers to a control attached to a client-
|
---|
163 | generated message sent to a server. The term "Response Control"
|
---|
164 | refers to a control attached to a server-generated message sent to a
|
---|
165 | client.
|
---|
166 |
|
---|
167 |
|
---|
168 |
|
---|
169 |
|
---|
170 |
|
---|
171 |
|
---|
172 | Zeilenga Best Current Practice [Page 3]
|
---|
173 | |
---|
174 |
|
---|
175 | RFC 4521 LDAP Extensions June 2006
|
---|
176 |
|
---|
177 |
|
---|
178 | DIT stands for Directory Information Tree.
|
---|
179 | DSA stands for Directory System Agent, a server.
|
---|
180 | DSE stands for DSA-Specific Entry.
|
---|
181 | DUA stands for Directory User Agent, a client.
|
---|
182 | DN stands for Distinguished Name.
|
---|
183 |
|
---|
184 | 2. General Considerations
|
---|
185 |
|
---|
186 | 2.1. Scope of Extension
|
---|
187 |
|
---|
188 | Mutually agreeing peers may, within the confines of an extension,
|
---|
189 | agree to significant changes in protocol semantics. However,
|
---|
190 | designers MUST consider the impact of an extension upon protocol
|
---|
191 | peers that have not agreed to implement or otherwise recognize and
|
---|
192 | support the extension. Extensions MUST be "truly optional"
|
---|
193 | [RFC2119].
|
---|
194 |
|
---|
195 | 2.2. Interaction between extensions
|
---|
196 |
|
---|
197 | Designers SHOULD consider how extensions they engineer interact with
|
---|
198 | other extensions.
|
---|
199 |
|
---|
200 | Designers SHOULD consider the extensibility of extensions they
|
---|
201 | specify. Extensions to LDAP SHOULD themselves be extensible.
|
---|
202 |
|
---|
203 | Except where it is stated otherwise, extensibility is implied.
|
---|
204 |
|
---|
205 | 2.3. Discovery Mechanism
|
---|
206 |
|
---|
207 | Extensions SHOULD provide adequate discovery mechanisms.
|
---|
208 |
|
---|
209 | As LDAP design is based upon the client-request/server-response
|
---|
210 | paradigm, the general discovery approach is for the client to
|
---|
211 | discover the capabilities of the server before utilizing a particular
|
---|
212 | extension. Commonly, this discovery involves querying the root DSE
|
---|
213 | and/or other DSEs for operational information associated with the
|
---|
214 | extension. LDAP provides no mechanism for a server to discover the
|
---|
215 | capabilities of a client.
|
---|
216 |
|
---|
217 | The 'supportedControl' attribute [RFC4512] is used to advertise
|
---|
218 | supported controls. The 'supportedExtension' attribute [RFC4512] is
|
---|
219 | used to advertise supported extended operations. The
|
---|
220 | 'supportedFeatures' attribute [RFC4512] is used to advertise
|
---|
221 | features. Other root DSE attributes MAY be defined to advertise
|
---|
222 | other capabilities.
|
---|
223 |
|
---|
224 |
|
---|
225 |
|
---|
226 |
|
---|
227 |
|
---|
228 |
|
---|
229 | Zeilenga Best Current Practice [Page 4]
|
---|
230 | |
---|
231 |
|
---|
232 | RFC 4521 LDAP Extensions June 2006
|
---|
233 |
|
---|
234 |
|
---|
235 | 2.4. Internationalization Considerations
|
---|
236 |
|
---|
237 | LDAP is designed to support the full Unicode [Unicode] repertory of
|
---|
238 | characters. Extensions SHOULD avoid unnecessarily restricting
|
---|
239 | applications to subsets of Unicode (e.g., Basic Multilingual Plane,
|
---|
240 | ISO 8859-1, ASCII, Printable String).
|
---|
241 |
|
---|
242 | LDAP Language Tag options [RFC3866] provide a mechanism for tagging
|
---|
243 | text (and other) values with language information. Extensions that
|
---|
244 | define attribute types SHOULD allow use of language tags with these
|
---|
245 | attributes.
|
---|
246 |
|
---|
247 | 2.5. Use of the Basic Encoding Rules
|
---|
248 |
|
---|
249 | Numerous elements of LDAP are described using ASN.1 [X.680] and are
|
---|
250 | encoded using a particular subset [Protocol, Section 5.2] of the
|
---|
251 | Basic Encoding Rules (BER) [X.690]. To allow reuse of
|
---|
252 | parsers/generators used in implementing the LDAP "core" technical
|
---|
253 | specification [RFC4510], it is RECOMMENDED that extension elements
|
---|
254 | (e.g., extension specific contents of controlValue, requestValue,
|
---|
255 | responseValue fields) described by ASN.1 and encoded using BER be
|
---|
256 | subjected to the restrictions of [Protocol, Section 5.2].
|
---|
257 |
|
---|
258 | 2.6. Use of Formal Languages
|
---|
259 |
|
---|
260 | Formal languages SHOULD be used in specifications in accordance with
|
---|
261 | IESG guidelines [FORMAL].
|
---|
262 |
|
---|
263 | 2.7. Examples
|
---|
264 |
|
---|
265 | Example DN strings SHOULD conform to the syntax defined in [RFC4518].
|
---|
266 | Example LDAP filter strings SHOULD conform to the syntax defined in
|
---|
267 | [RFC4515]. Example LDAP URLs SHOULD conform to the syntax defined in
|
---|
268 | [RFC4516]. Entries SHOULD be represented using LDIF [RFC2849].
|
---|
269 |
|
---|
270 | 2.8. Registration of Protocol Values
|
---|
271 |
|
---|
272 | Designers SHALL register protocol values of their LDAP extensions in
|
---|
273 | accordance with BCP 64, RFC 4520 [RFC4520]. Specifications that
|
---|
274 | create new extensible protocol elements SHALL extend existing
|
---|
275 | registries or establish new registries for values of these elements
|
---|
276 | in accordance with BCP 64, RFC 4520 [RFC4520] and BCP 26, RFC 2434
|
---|
277 | [RFC2434].
|
---|
278 |
|
---|
279 |
|
---|
280 |
|
---|
281 |
|
---|
282 |
|
---|
283 |
|
---|
284 |
|
---|
285 |
|
---|
286 | Zeilenga Best Current Practice [Page 5]
|
---|
287 | |
---|
288 |
|
---|
289 | RFC 4521 LDAP Extensions June 2006
|
---|
290 |
|
---|
291 |
|
---|
292 | 3. LDAP Operation Extensions
|
---|
293 |
|
---|
294 | Extensions SHOULD use controls in defining extensions that complement
|
---|
295 | existing operations. Where the extension to be defined does not
|
---|
296 | complement an existing operation, designers SHOULD consider defining
|
---|
297 | an extended operation instead.
|
---|
298 |
|
---|
299 | For example, a subtree delete operation could be designed as either
|
---|
300 | an extension of the delete operation or as a new operation. As the
|
---|
301 | feature complements the existing delete operation, use of the control
|
---|
302 | mechanism to extend the delete operation is likely more appropriate.
|
---|
303 |
|
---|
304 | As a counter (and contrived) example, a locate services operation (an
|
---|
305 | operation that would return for a DN a set of LDAP URLs to services
|
---|
306 | that may hold the entry named by this DN) could be designed as either
|
---|
307 | a search operation or a new operation. As the feature doesn't
|
---|
308 | complement the search operation (e.g., the operation is not contrived
|
---|
309 | to search for entries held in the Directory Information Tree), it is
|
---|
310 | likely more appropriate to define a new operation using the extended
|
---|
311 | operation mechanism.
|
---|
312 |
|
---|
313 | 3.1. Controls
|
---|
314 |
|
---|
315 | Controls [Protocol, Section 4.1.11] are the RECOMMENDED mechanism for
|
---|
316 | extending existing operations. The existing operation can be a base
|
---|
317 | operation defined in [RFC4511] (e.g., search, modify) , an extended
|
---|
318 | operation (e.g., Start TLS [RFC4511], Password Modify [RFC3062]), or
|
---|
319 | an operation defined as an extension to a base or extended operation.
|
---|
320 |
|
---|
321 | Extensions SHOULD NOT return Response controls unless the server has
|
---|
322 | specific knowledge that the client can make use of the control.
|
---|
323 | Generally, the client requests the return of a particular response
|
---|
324 | control by providing a related request control.
|
---|
325 |
|
---|
326 | An existing operation MAY be extended to return IntermediateResponse
|
---|
327 | messages [Protocol, Section 4.13].
|
---|
328 |
|
---|
329 | Specifications of controls SHALL NOT attach additional semantics to
|
---|
330 | the criticality of controls beyond those defined in [Protocol,
|
---|
331 | Section 4.1.11]. A specification MAY mandate the criticality take on
|
---|
332 | a particular value (e.g., TRUE or FALSE), where appropriate.
|
---|
333 |
|
---|
334 | 3.1.1. Extending Bind Operation with Controls
|
---|
335 |
|
---|
336 | Controls attached to the request and response messages of a Bind
|
---|
337 | Operation [RFC4511] are not protected by any security layers
|
---|
338 | established by that Bind operation.
|
---|
339 |
|
---|
340 |
|
---|
341 |
|
---|
342 |
|
---|
343 | Zeilenga Best Current Practice [Page 6]
|
---|
344 | |
---|
345 |
|
---|
346 | RFC 4521 LDAP Extensions June 2006
|
---|
347 |
|
---|
348 |
|
---|
349 | Specifications detailing controls extending the Bind operation SHALL
|
---|
350 | detail that the Bind negotiated security layers do not protect the
|
---|
351 | information contained in these controls and SHALL detail how the
|
---|
352 | information in these controls is protected or why the information
|
---|
353 | does not need protection.
|
---|
354 |
|
---|
355 | It is RECOMMENDED that designers consider alternative mechanisms for
|
---|
356 | providing the function. For example, an extended operation issued
|
---|
357 | subsequent to the Bind operation (hence, protected by the security
|
---|
358 | layers negotiated by the Bind operation) might be used to provide the
|
---|
359 | desired function.
|
---|
360 |
|
---|
361 | Additionally, designers of Bind control extensions MUST also consider
|
---|
362 | how the controls' semantics interact with individual steps of a
|
---|
363 | multi-step Bind operation. Note that some steps are optional and
|
---|
364 | thus may require special attention in the design.
|
---|
365 |
|
---|
366 | 3.1.2. Extending the Start TLS Operation with Controls
|
---|
367 |
|
---|
368 | Controls attached to the request and response messages of a Start TLS
|
---|
369 | Operation [RFC4511] are not protected by the security layers
|
---|
370 | established by the Start TLS operation.
|
---|
371 |
|
---|
372 | Specifications detailing controls extending the Start TLS operation
|
---|
373 | SHALL detail that the Start TLS negotiated security layers do not
|
---|
374 | protect the information contained in these controls and SHALL detail
|
---|
375 | how the information in these controls is protected or why the
|
---|
376 | information does not need protection.
|
---|
377 |
|
---|
378 | It is RECOMMENDED that designers consider alternative mechanisms for
|
---|
379 | providing the function. For example, an extended operation issued
|
---|
380 | subsequent to the Start TLS operation (hence, protected by the
|
---|
381 | security layers negotiated by the Start TLS operation) might be used
|
---|
382 | to provided the desired function.
|
---|
383 |
|
---|
384 | 3.1.3. Extending the Search Operation with Controls
|
---|
385 |
|
---|
386 | The Search operation processing has two distinct phases:
|
---|
387 |
|
---|
388 | - finding the base object; and
|
---|
389 |
|
---|
390 | - searching for objects at or under that base object.
|
---|
391 |
|
---|
392 | Specifications of controls extending the Search Operation should
|
---|
393 | clearly state in which phase(s) the control's semantics apply.
|
---|
394 | Semantics of controls that are not specific to the Search Operation
|
---|
395 | SHOULD apply in the finding phase.
|
---|
396 |
|
---|
397 |
|
---|
398 |
|
---|
399 |
|
---|
400 | Zeilenga Best Current Practice [Page 7]
|
---|
401 | |
---|
402 |
|
---|
403 | RFC 4521 LDAP Extensions June 2006
|
---|
404 |
|
---|
405 |
|
---|
406 | 3.1.4. Extending the Update Operations with Controls
|
---|
407 |
|
---|
408 | Update operations have properties of atomicity, consistency,
|
---|
409 | isolation, and durability ([ACID]).
|
---|
410 |
|
---|
411 | - atomicity: All or none of the DIT changes requested are made.
|
---|
412 |
|
---|
413 | - consistency: The resulting DIT state must be conform to schema
|
---|
414 | and other constraints.
|
---|
415 |
|
---|
416 | - isolation: Intermediate states are not exposed.
|
---|
417 |
|
---|
418 | - durability: The resulting DIT state is preserved until
|
---|
419 | subsequently updated.
|
---|
420 |
|
---|
421 | When defining a control that requests additional (or other) DIT
|
---|
422 | changes be made to the DIT, these additional changes SHOULD NOT be
|
---|
423 | treated as part of a separate transaction. The specification MUST be
|
---|
424 | clear as to whether the additional DIT changes are part of the same
|
---|
425 | or a separate transaction as the DIT changes expressed in the request
|
---|
426 | of the base operation.
|
---|
427 |
|
---|
428 | When defining a control that requests additional (or other) DIT
|
---|
429 | changes be made to the DIT, the specification MUST be clear as to the
|
---|
430 | order in which these and the base changes are to be applied to the
|
---|
431 | DIT.
|
---|
432 |
|
---|
433 | 3.1.5. Extending the Responseless Operations with Controls
|
---|
434 |
|
---|
435 | The Abandon and Unbind operations do not include a response message.
|
---|
436 | For this reason, specifications for controls designed to be attached
|
---|
437 | to Abandon and Unbind requests SHOULD mandate that the control's
|
---|
438 | criticality be FALSE.
|
---|
439 |
|
---|
440 | 3.2. Extended Operations
|
---|
441 |
|
---|
442 | Extended Operations [Protocol, Section 4.12] are the RECOMMENDED
|
---|
443 | mechanism for defining new operations. An extended operation
|
---|
444 | consists of an ExtendedRequest message, zero or more
|
---|
445 | IntermediateResponse messages, and an ExtendedResponse message.
|
---|
446 |
|
---|
447 | 3.3. Intermediate Responses
|
---|
448 |
|
---|
449 | Extensions SHALL use IntermediateResponse messages instead of
|
---|
450 | ExtendedResponse messages to return intermediate results.
|
---|
451 |
|
---|
452 |
|
---|
453 |
|
---|
454 |
|
---|
455 |
|
---|
456 |
|
---|
457 | Zeilenga Best Current Practice [Page 8]
|
---|
458 | |
---|
459 |
|
---|
460 | RFC 4521 LDAP Extensions June 2006
|
---|
461 |
|
---|
462 |
|
---|
463 | 3.4. Unsolicited Notifications
|
---|
464 |
|
---|
465 | Unsolicited notifications [Protocol, Section 4.4] offer a capability
|
---|
466 | for the server to notify the client of events not associated with the
|
---|
467 | operation currently being processed.
|
---|
468 |
|
---|
469 | Extensions SHOULD be designed such that unsolicited notifications are
|
---|
470 | not returned unless the server has specific knowledge that the client
|
---|
471 | can make use of the notification. Generally, the client requests the
|
---|
472 | return of a particular unsolicited notification by performing a
|
---|
473 | related extended operation.
|
---|
474 |
|
---|
475 | For example, a time hack extension could be designed to return
|
---|
476 | unsolicited notifications at regular intervals that were enabled by
|
---|
477 | an extended operation (which possibly specified the desired
|
---|
478 | interval).
|
---|
479 |
|
---|
480 | 4. Extending the LDAP ASN.1 Definition
|
---|
481 |
|
---|
482 | LDAP allows limited extension [Protocol, Section 4] of the LDAP ASN.1
|
---|
483 | definition [Protocol, Appendix B] to be made.
|
---|
484 |
|
---|
485 | 4.1. Result Codes
|
---|
486 |
|
---|
487 | Extensions that specify new operations or enhance existing operations
|
---|
488 | often need to define new result codes. The extension SHOULD be
|
---|
489 | designed such that a client has a reasonably clear indication of the
|
---|
490 | nature of the successful or non-successful result.
|
---|
491 |
|
---|
492 | Extensions SHOULD use existing result codes to indicate conditions
|
---|
493 | that are consistent with the intended meaning [RFC4511][X.511] of
|
---|
494 | these codes. Extensions MAY introduce new result codes [RFC4520]
|
---|
495 | where no existing result code provides an adequate indication of the
|
---|
496 | nature of the result.
|
---|
497 |
|
---|
498 | Extensions SHALL NOT disallow or otherwise restrict the return of
|
---|
499 | general service result codes, especially those reporting a protocol,
|
---|
500 | service, or security problem, or indicating that the server is unable
|
---|
501 | or unwilling to complete the operation.
|
---|
502 |
|
---|
503 | 4.2. LDAP Message Types
|
---|
504 |
|
---|
505 | While extensions can specify new types of LDAP messages by extending
|
---|
506 | the protocolOp CHOICE of the LDAPMessage SEQUENCE, this is generally
|
---|
507 | unnecessary and inappropriate. Existing operation extension
|
---|
508 | mechanisms (e.g., extended operations, unsolicited notifications, and
|
---|
509 | intermediate responses) SHOULD be used instead. However, there may
|
---|
510 | be cases where an extension does not fit well into these mechanisms.
|
---|
511 |
|
---|
512 |
|
---|
513 |
|
---|
514 | Zeilenga Best Current Practice [Page 9]
|
---|
515 | |
---|
516 |
|
---|
517 | RFC 4521 LDAP Extensions June 2006
|
---|
518 |
|
---|
519 |
|
---|
520 | In such cases, a new extension mechanism SHOULD be defined that can
|
---|
521 | be used by multiple extensions that have similar needs.
|
---|
522 |
|
---|
523 | 4.3. Authentication Methods
|
---|
524 |
|
---|
525 | The Bind operation currently supports two authentication methods,
|
---|
526 | simple and SASL. SASL [RFC4422] is an extensible authentication
|
---|
527 | framework used by multiple application-level protocols (e.g., BEEP,
|
---|
528 | IMAP, SMTP). It is RECOMMENDED that new authentication processes be
|
---|
529 | defined as SASL mechanisms. New LDAP authentication methods MAY be
|
---|
530 | added to support new authentication frameworks.
|
---|
531 |
|
---|
532 | The Bind operation's primary function is to establish the LDAP
|
---|
533 | association [RFC4513]. No other operation SHALL be defined (or
|
---|
534 | extended) to establish the LDAP association. However, other
|
---|
535 | operations MAY be defined to establish other security associations
|
---|
536 | (e.g., IPsec).
|
---|
537 |
|
---|
538 | 4.4. General ASN.1 Extensibility
|
---|
539 |
|
---|
540 | Section 4 of [RFC4511] states the following:
|
---|
541 |
|
---|
542 | In order to support future extensions to this protocol,
|
---|
543 | extensibility is implied where it is allowed per ASN.1 (i.e.,
|
---|
544 | sequence, set, choice, and enumerated types are extensible). In
|
---|
545 | addition, ellipses (...) have been supplied in ASN.1 types that
|
---|
546 | are explicitly extensible as discussed in [RFC4520]. Because of
|
---|
547 | the implied extensibility, clients and servers MUST (unless
|
---|
548 | otherwise specified) ignore trailing SEQUENCE components whose
|
---|
549 | tags they do not recognize.
|
---|
550 |
|
---|
551 | Designers SHOULD avoid introducing extensions that rely on
|
---|
552 | unsuspecting implementations to ignore trailing components of
|
---|
553 | SEQUENCE whose tags they do not recognize.
|
---|
554 |
|
---|
555 | 5. Schema Extensions
|
---|
556 |
|
---|
557 | Extensions defining LDAP schema elements SHALL provide schema
|
---|
558 | definitions conforming with syntaxes defined in [Models, Section
|
---|
559 | 4.1]. While provided definitions MAY be reformatted (line wrapped)
|
---|
560 | for readability, this SHALL be noted in the specification.
|
---|
561 |
|
---|
562 | For definitions that allow a NAME field, new schema elements SHOULD
|
---|
563 | provide one and only one name. The name SHOULD be short.
|
---|
564 |
|
---|
565 | Each schema definition allows a DESC field. The DESC field, if
|
---|
566 | provided, SHOULD contain a short descriptive phrase. The DESC field
|
---|
567 | MUST be regarded as informational. That is, the specification MUST
|
---|
568 |
|
---|
569 |
|
---|
570 |
|
---|
571 | Zeilenga Best Current Practice [Page 10]
|
---|
572 | |
---|
573 |
|
---|
574 | RFC 4521 LDAP Extensions June 2006
|
---|
575 |
|
---|
576 |
|
---|
577 | be written such that its interpretation is the same with and without
|
---|
578 | the provided DESC fields.
|
---|
579 |
|
---|
580 | The extension SHALL NOT mandate that implementations provide the same
|
---|
581 | DESC field in the schema they publish. Implementors MAY replace or
|
---|
582 | remove the DESC field.
|
---|
583 |
|
---|
584 | Published schema elements SHALL NOT be redefined. Replacement schema
|
---|
585 | elements (new OIDs, new NAMEs) SHOULD be defined as needed.
|
---|
586 |
|
---|
587 | Schema designers SHOULD reuse existing schema elements, where
|
---|
588 | appropriate. However, any reuse MUST not alter the semantics of the
|
---|
589 | element.
|
---|
590 |
|
---|
591 | 5.1. LDAP Syntaxes
|
---|
592 |
|
---|
593 | Each LDAP syntax [RFC4517] is defined in terms of ASN.1 [X.680].
|
---|
594 | Each extension detailing an LDAP syntax MUST specify the ASN.1 data
|
---|
595 | definition associated with the syntax. A distinct LDAP syntax SHOULD
|
---|
596 | be created for each distinct ASN.1 data definition (including
|
---|
597 | constraints).
|
---|
598 |
|
---|
599 | Each LDAP syntax SHOULD have a string encoding defined for it. It is
|
---|
600 | RECOMMENDED that this string encoding be restricted to UTF-8
|
---|
601 | [RFC3629] encoded Unicode [Unicode] characters. Use of Generic
|
---|
602 | String Encoding Rules (GSER) [RFC3641][RFC3642] or other generic
|
---|
603 | string encoding rules to provide string encodings for complex ASN.1
|
---|
604 | data definitions is RECOMMENDED. Otherwise, it is RECOMMENDED that
|
---|
605 | the string encoding be described using a formal language (e.g., ABNF
|
---|
606 | [RFC4234]). Formal languages SHOULD be used in specifications in
|
---|
607 | accordance with IESG guidelines [FORMAL].
|
---|
608 |
|
---|
609 | If no string encoding is defined, the extension SHALL specify how the
|
---|
610 | transfer encoding is to be indicated. Generally, the extension
|
---|
611 | SHOULD mandate use of binary or other transfer encoding option.
|
---|
612 |
|
---|
613 | 5.2. Matching Rules
|
---|
614 |
|
---|
615 | Three basic kinds of matching rules (e.g., EQUALITY, ORDERING, and
|
---|
616 | SUBSTRING) may be associated with an attribute type. In addition,
|
---|
617 | LDAP provides an extensible matching rule mechanism.
|
---|
618 |
|
---|
619 | The matching rule specification SHOULD detail which kind of matching
|
---|
620 | rule it is and SHOULD describe which kinds of values it can be used
|
---|
621 | with.
|
---|
622 |
|
---|
623 | In addition to requirements stated in the LDAP technical
|
---|
624 | specification, equality matching rules SHOULD be commutative.
|
---|
625 |
|
---|
626 |
|
---|
627 |
|
---|
628 | Zeilenga Best Current Practice [Page 11]
|
---|
629 | |
---|
630 |
|
---|
631 | RFC 4521 LDAP Extensions June 2006
|
---|
632 |
|
---|
633 |
|
---|
634 | 5.3. Attribute Types
|
---|
635 |
|
---|
636 | Designers SHOULD carefully consider how the structure of values is to
|
---|
637 | be restricted. Designers SHOULD consider that servers will only
|
---|
638 | enforce constraints of the attribute's syntax. That is, an attribute
|
---|
639 | intended to hold URIs, but that has directoryString syntax, is not
|
---|
640 | restricted to values that are URIs.
|
---|
641 |
|
---|
642 | Designers SHOULD carefully consider which matching rules, if any, are
|
---|
643 | appropriate for the attribute type. Matching rules specified for an
|
---|
644 | attribute type MUST be compatible with the attribute type's syntax.
|
---|
645 |
|
---|
646 | Extensions specifying operational attributes MUST detail how servers
|
---|
647 | are to maintain and/or utilize values of each operational attribute.
|
---|
648 |
|
---|
649 | 5.4. Object Classes
|
---|
650 |
|
---|
651 | Designers SHOULD carefully consider whether each attribute of an
|
---|
652 | object class is required ("MUST") or allowed ("MAY").
|
---|
653 |
|
---|
654 | Extensions specifying object classes that allow (or require)
|
---|
655 | operational attributes MUST specify how servers are to maintain
|
---|
656 | and/or utilize entries belonging to these object classes.
|
---|
657 |
|
---|
658 | 6. Other Extension Mechanisms
|
---|
659 |
|
---|
660 | 6.1. Attribute Description Options
|
---|
661 |
|
---|
662 | Each option is identified by a string of letters, numbers, and
|
---|
663 | hyphens. This string SHOULD be short.
|
---|
664 |
|
---|
665 | 6.2. Authorization Identities
|
---|
666 |
|
---|
667 | Extensions interacting with authorization identities SHALL support
|
---|
668 | the LDAP authzId format [RFC4513]. The authzId format is extensible.
|
---|
669 |
|
---|
670 | 6.3. LDAP URL Extensions
|
---|
671 |
|
---|
672 | LDAP URL extensions are identified by a short string, a descriptor.
|
---|
673 | Like other descriptors, the string SHOULD be short.
|
---|
674 |
|
---|
675 | 7. Security Considerations
|
---|
676 |
|
---|
677 | LDAP does not place undue restrictions on the kinds of extensions
|
---|
678 | that can be implemented. While this document attempts to outline
|
---|
679 | some specific issues that designers need to consider, it is not (and
|
---|
680 |
|
---|
681 |
|
---|
682 |
|
---|
683 |
|
---|
684 |
|
---|
685 | Zeilenga Best Current Practice [Page 12]
|
---|
686 | |
---|
687 |
|
---|
688 | RFC 4521 LDAP Extensions June 2006
|
---|
689 |
|
---|
690 |
|
---|
691 | cannot be) all encompassing. Designers MUST do their own evaluations
|
---|
692 | of the security considerations applicable to their extensions.
|
---|
693 |
|
---|
694 | Designers MUST NOT assume that the LDAP "core" technical
|
---|
695 | specification [RFC4510] adequately addresses the specific concerns
|
---|
696 | surrounding their extensions or assume that their extensions have no
|
---|
697 | specific concerns.
|
---|
698 |
|
---|
699 | Extension specifications, however, SHOULD note whether security
|
---|
700 | considerations specific to the feature they are extending, as well as
|
---|
701 | general LDAP security considerations, apply to the extension.
|
---|
702 |
|
---|
703 | 8. Acknowledgements
|
---|
704 |
|
---|
705 | The author thanks the IETF LDAP community for their thoughtful
|
---|
706 | comments.
|
---|
707 |
|
---|
708 | This work builds upon "LDAP Extension Style Guide" [GUIDE] by Bruce
|
---|
709 | Greenblatt.
|
---|
710 |
|
---|
711 | 9. References
|
---|
712 |
|
---|
713 | 9.1. Normative References
|
---|
714 |
|
---|
715 | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
---|
716 | Requirement Levels", BCP 14, RFC 2119, March 1997.
|
---|
717 |
|
---|
718 | [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an
|
---|
719 | IANA Considerations Section in RFCs", BCP 26, RFC 2434,
|
---|
720 | October 1998.
|
---|
721 |
|
---|
722 | [RFC2849] Good, G., "The LDAP Data Interchange Format (LDIF) -
|
---|
723 | Technical Specification", RFC 2849, June 2000.
|
---|
724 |
|
---|
725 | [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
|
---|
726 | 10646", STD 63, RFC 3629, November 2003.
|
---|
727 |
|
---|
728 | [RFC3641] Legg, S., "Generic String Encoding Rules (GSER) for ASN.1
|
---|
729 | Types", RFC 3641, October 2003.
|
---|
730 |
|
---|
731 | [RFC3642] Legg, S., "Common Elements of Generic String Encoding
|
---|
732 | Rules (GSER) Encodings", RFC 3642, October 2003.
|
---|
733 |
|
---|
734 | [RFC4512] Zeilenga, K., "Lightweight Directory Access Protocol
|
---|
735 | (LDAP): Directory Information Models", RFC 4512, June
|
---|
736 | 2006.
|
---|
737 |
|
---|
738 |
|
---|
739 |
|
---|
740 |
|
---|
741 |
|
---|
742 | Zeilenga Best Current Practice [Page 13]
|
---|
743 | |
---|
744 |
|
---|
745 | RFC 4521 LDAP Extensions June 2006
|
---|
746 |
|
---|
747 |
|
---|
748 | [RFC3866] Zeilenga, K., Ed., "Language Tags and Ranges in the
|
---|
749 | Lightweight Directory Access Protocol (LDAP)", RFC 3866,
|
---|
750 | July 2004.
|
---|
751 |
|
---|
752 | [RFC4234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
|
---|
753 | Specifications: ABNF", RFC 4234, October 2005.
|
---|
754 |
|
---|
755 | [RFC4510] Zeilenga, K., Ed., "Lightweight Directory Access Protocol
|
---|
756 | (LDAP): Technical Specification Road Map", RFC 4510, June
|
---|
757 | 2006.
|
---|
758 |
|
---|
759 | [RFC4511] Sermersheim, J., Ed., "Lightweight Directory Access
|
---|
760 | Protocol (LDAP): The Protocol", RFC 4511, June 2006.
|
---|
761 |
|
---|
762 | [RFC4512] Zeilenga, K., "Lightweight Directory Access Protocol
|
---|
763 | (LDAP): Directory Information Models", RFC 4512, June
|
---|
764 | 2006.
|
---|
765 |
|
---|
766 | [RFC4513] Harrison, R., Ed., "Lightweight Directory Access Protocol
|
---|
767 | (LDAP): Authentication Methods and Security Mechanisms",
|
---|
768 | RFC 4513, June 2006.
|
---|
769 |
|
---|
770 | [RFC4515] Smith, M., Ed. and T. Howes, "Lightweight Directory Access
|
---|
771 | Protocol (LDAP): String Representation of Search Filters",
|
---|
772 | RFC 4515, June 2006.
|
---|
773 |
|
---|
774 | [RFC4516] Smith, M., Ed. and T. Howes, "Lightweight Directory Access
|
---|
775 | Protocol (LDAP): Uniform Resource Locator", RFC 4516, June
|
---|
776 | 2006.
|
---|
777 |
|
---|
778 | [RFC4517] Legg, S., Ed., "Lightweight Directory Access Protocol
|
---|
779 | (LDAP): Syntaxes and Matching Rules", RFC 4517, June 2006.
|
---|
780 |
|
---|
781 | [RFC4518] Zeilenga, K., "Lightweight Directory Access Protocol
|
---|
782 | (LDAP): String Representation of Distinguished Names", RFC
|
---|
783 | 4518, June 2006.
|
---|
784 |
|
---|
785 | [RFC4520] Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
|
---|
786 | Considerations for the Lightweight Directory Access
|
---|
787 | Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
|
---|
788 |
|
---|
789 | [RFC4422] Melnikov, A., Ed. and K. Zeilenga, Ed., "Simple
|
---|
790 | Authentication and Security Layer (SASL)", RFC 4422, June
|
---|
791 | 2006.
|
---|
792 |
|
---|
793 |
|
---|
794 |
|
---|
795 |
|
---|
796 |
|
---|
797 |
|
---|
798 |
|
---|
799 | Zeilenga Best Current Practice [Page 14]
|
---|
800 | |
---|
801 |
|
---|
802 | RFC 4521 LDAP Extensions June 2006
|
---|
803 |
|
---|
804 |
|
---|
805 | [Unicode] The Unicode Consortium, "The Unicode Standard, Version
|
---|
806 | 3.2.0" is defined by "The Unicode Standard, Version 3.0"
|
---|
807 | (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5),
|
---|
808 | as amended by the "Unicode Standard Annex #27: Unicode
|
---|
809 | 3.1" (http://www.unicode.org/reports/tr27/) and by the
|
---|
810 | "Unicode Standard Annex #28: Unicode 3.2"
|
---|
811 | (http://www.unicode.org/reports/tr28/).
|
---|
812 |
|
---|
813 | [FORMAL] IESG, "Guidelines for the use of formal languages in IETF
|
---|
814 | specifications",
|
---|
815 | <http://www.ietf.org/IESG/STATEMENTS/pseudo-code-in-
|
---|
816 | specs.txt>, 2001.
|
---|
817 |
|
---|
818 | [X.511] International Telecommunication Union - Telecommunication
|
---|
819 | Standardization Sector, "The Directory: Abstract Service
|
---|
820 | Definition", X.511(1993) (also ISO/IEC 9594-3:1993).
|
---|
821 |
|
---|
822 | [X.680] International Telecommunication Union - Telecommunication
|
---|
823 | Standardization Sector, "Abstract Syntax Notation One
|
---|
824 | (ASN.1) - Specification of Basic Notation", X.680(2002)
|
---|
825 | (also ISO/IEC 8824-1:2002).
|
---|
826 |
|
---|
827 | [X.690] International Telecommunication Union - Telecommunication
|
---|
828 | Standardization Sector, "Specification of ASN.1 encoding
|
---|
829 | rules: Basic Encoding Rules (BER), Canonical Encoding
|
---|
830 | Rules (CER), and Distinguished Encoding Rules (DER)",
|
---|
831 | X.690(2002) (also ISO/IEC 8825-1:2002).
|
---|
832 |
|
---|
833 | 9.2. Informative References
|
---|
834 |
|
---|
835 | [ACID] Section 4 of ISO/IEC 10026-1:1992.
|
---|
836 |
|
---|
837 | [GUIDE] Greenblatt, B., "LDAP Extension Style Guide", Work in
|
---|
838 | Progress.
|
---|
839 |
|
---|
840 | [RFC3062] Zeilenga, K., "LDAP Password Modify Extended Operation",
|
---|
841 | RFC 3062, February 2001.
|
---|
842 |
|
---|
843 | [RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security
|
---|
844 | (TLS) Protocol Version 1.1", RFC 4346, April 2006.
|
---|
845 |
|
---|
846 | Author's Address
|
---|
847 |
|
---|
848 | Kurt D. Zeilenga
|
---|
849 | OpenLDAP Foundation
|
---|
850 |
|
---|
851 | EMail: Kurt@OpenLDAP.org
|
---|
852 |
|
---|
853 |
|
---|
854 |
|
---|
855 |
|
---|
856 | Zeilenga Best Current Practice [Page 15]
|
---|
857 | |
---|
858 |
|
---|
859 | RFC 4521 LDAP Extensions June 2006
|
---|
860 |
|
---|
861 |
|
---|
862 | Full Copyright Statement
|
---|
863 |
|
---|
864 | Copyright (C) The Internet Society (2006).
|
---|
865 |
|
---|
866 | This document is subject to the rights, licenses and restrictions
|
---|
867 | contained in BCP 78, and except as set forth therein, the authors
|
---|
868 | retain all their rights.
|
---|
869 |
|
---|
870 | This document and the information contained herein are provided on an
|
---|
871 | "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
---|
872 | OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
|
---|
873 | ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
|
---|
874 | INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
|
---|
875 | INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
|
---|
876 | WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
---|
877 |
|
---|
878 | Intellectual Property
|
---|
879 |
|
---|
880 | The IETF takes no position regarding the validity or scope of any
|
---|
881 | Intellectual Property Rights or other rights that might be claimed to
|
---|
882 | pertain to the implementation or use of the technology described in
|
---|
883 | this document or the extent to which any license under such rights
|
---|
884 | might or might not be available; nor does it represent that it has
|
---|
885 | made any independent effort to identify any such rights. Information
|
---|
886 | on the procedures with respect to rights in RFC documents can be
|
---|
887 | found in BCP 78 and BCP 79.
|
---|
888 |
|
---|
889 | Copies of IPR disclosures made to the IETF Secretariat and any
|
---|
890 | assurances of licenses to be made available, or the result of an
|
---|
891 | attempt made to obtain a general license or permission for the use of
|
---|
892 | such proprietary rights by implementers or users of this
|
---|
893 | specification can be obtained from the IETF on-line IPR repository at
|
---|
894 | http://www.ietf.org/ipr.
|
---|
895 |
|
---|
896 | The IETF invites any interested party to bring to its attention any
|
---|
897 | copyrights, patents or patent applications, or other proprietary
|
---|
898 | rights that may cover technology that may be required to implement
|
---|
899 | this standard. Please address the information to the IETF at
|
---|
900 | ietf-ipr@ietf.org.
|
---|
901 |
|
---|
902 | Acknowledgement
|
---|
903 |
|
---|
904 | Funding for the RFC Editor function is provided by the IETF
|
---|
905 | Administrative Support Activity (IASA).
|
---|
906 |
|
---|
907 |
|
---|
908 |
|
---|
909 |
|
---|
910 |
|
---|
911 |
|
---|
912 |
|
---|
913 | Zeilenga Best Current Practice [Page 16]
|
---|
914 | |
---|
915 |
|
---|