1 2 3 4 5 6 7 Network Working Group K. Zeilenga 8 Request for Comments: 4527 OpenLDAP Foundation 9 Category: Standards Track June 2006 10 11 12 Lightweight Directory Access Protocol (LDAP) 13 Read Entry Controls 14 15 16 Status of This Memo 17 18 This document specifies an Internet standards track protocol for the 19 Internet community, and requests discussion and suggestions for 20 improvements. Please refer to the current edition of the "Internet 21 Official Protocol Standards" (STD 1) for the standardization state 22 and status of this protocol. Distribution of this memo is unlimited. 23 24 Copyright Notice 25 26 Copyright (C) The Internet Society (2006). 27 28 Abstract 29 30 This document specifies an extension to the Lightweight Directory 31 Access Protocol (LDAP) to allow the client to read the target entry 32 of an update operation. The client may request to read the entry 33 before and/or after the modifications are applied. These reads are 34 done as an atomic part of the update operation. 35 36 Table of Contents 37 38 1. Background and Intent of Use ....................................2 39 2. Terminology .....................................................2 40 3. Read Entry Controls .............................................3 41 3.1. The Pre-Read Controls ......................................3 42 3.2. The Post-Read Controls .....................................3 43 4. Interaction with Other Controls .................................4 44 5. Security Considerations .........................................4 45 6. IANA Considerations .............................................5 46 6.1. Object Identifier ..........................................5 47 6.2. LDAP Protocol Mechanisms ...................................5 48 7. Acknowledgement .................................................5 49 8. References ......................................................6 50 8.1. Normative References .......................................6 51 8.2. Informative References .....................................7 52 53 54 55 56 57 58 Zeilenga Standards Track [Page 1] 59 61 RFC 4527 LDAP Read Entry Controls June 2006 62 63 64 1. Background and Intent of Use 65 66 This document specifies an extension to the Lightweight Directory 67 Access Protocol (LDAP) [RFC4510] to allow the client to read the 68 target entry of an update operation (e.g., Add, Delete, Modify, 69 ModifyDN). The extension utilizes controls [RFC4511] attached to 70 update requests to request and return copies of the target entry. 71 One request control, called the Pre-Read request control, indicates 72 that a copy of the entry before application of update is to be 73 returned. Another control, called the Post-Read request control, 74 indicates that a copy of the entry after application of the update is 75 to be returned. Each request control has a corresponding response 76 control used to return the entry. 77 78 To ensure proper isolation, the controls are processed as an atomic 79 part of the update operation. 80 81 The functionality offered by these controls is based upon similar 82 functionality in the X.500 Directory Access Protocol (DAP) [X.511]. 83 84 The Pre-Read controls may be used to obtain replaced or deleted 85 values of modified attributes or a copy of the entry being deleted. 86 87 The Post-Read controls may be used to obtain values of operational 88 attributes, such as the 'entryUUID' [RFC4530] and 'modifyTimestamp' 89 [RFC4512] attributes, updated by the server as part of the update 90 operation. 91 92 2. Terminology 93 94 Protocol elements are described using ASN.1 [X.680] with implicit 95 tags. The term "BER-encoded" means the element is to be encoded 96 using the Basic Encoding Rules [X.690] under the restrictions 97 detailed in Section 5.1 of [RFC4511]. 98 99 DN stands for Distinguished Name. 100 DSA stands for Directory System Agent (i.e., a directory server). 101 DSE stands for DSA-specific Entry. 102 103 In this document, the key words "MUST", "MUST NOT", "REQUIRED", 104 "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 105 and "OPTIONAL" are to be interpreted as described in BCP 14 106 [RFC2119]. 107 108 109 110 111 112 113 114 115 Zeilenga Standards Track [Page 2] 116 118 RFC 4527 LDAP Read Entry Controls June 2006 119 120 121 3. Read Entry Controls 122 123 3.1. The Pre-Read Controls 124 125 The Pre-Read request and response controls are identified by the 126 1.3.6.1.1.13.1 object identifier. Servers implementing these 127 controls SHOULD publish 1.3.6.1.1.13.1 as a value of the 128 'supportedControl' [RFC4512] in their root DSE. 129 130 The Pre-Read request control is a LDAP Control [RFC4511] whose 131 controlType is 1.3.6.1.1.13.1 and whose controlValue is a BER-encoded 132 AttributeSelection [RFC4511], as extended by [RFC3673]. The 133 criticality may be TRUE or FALSE. This control is appropriate for 134 the modifyRequest, delRequest, and modDNRequest LDAP messages. 135 136 The corresponding response control is a LDAP Control whose 137 controlType is 1.3.6.1.1.13.1 and whose the controlValue, an OCTET 138 STRING, contains a BER-encoded SearchResultEntry. The criticality 139 may be TRUE or FALSE. This control is appropriate for the 140 modifyResponse, delResponse, and modDNResponse LDAP messages with a 141 resultCode of success (0). 142 143 When the request control is attached to an appropriate update LDAP 144 request, the control requests the return of a copy of the target 145 entry prior to the application of the update. The AttributeSelection 146 indicates, as discussed in [RFC4511][RFC3673], which attributes are 147 requested to appear in the copy. The server is to return a 148 SearchResultEntry containing, subject to access controls and other 149 constraints, values of the requested attributes. 150 151 The normal processing of the update operation and the processing of 152 this control MUST be performed as one atomic action isolated from 153 other update operations. 154 155 If the update operation fails (in either normal or control 156 processing), no Pre-Read response control is provided. 157 158 3.2. The Post-Read Controls 159 160 The Post-Read request and response controls are identified by the 161 1.3.6.1.1.13.2 object identifier. Servers implementing these 162 controls SHOULD publish 1.3.6.1.1.13.2 as a value of the 163 'supportedControl' [RFC4512] in their root DSE. 164 165 The Post-Read request control is a LDAP Control [RFC4511] whose 166 controlType is 1.3.6.1.1.13.2 and whose controlValue, an OCTET 167 STRING, contains a BER-encoded AttributeSelection [RFC4511], as 168 extended by [RFC3673]. The criticality may be TRUE or FALSE. This 169 170 171 172 Zeilenga Standards Track [Page 3] 173 175 RFC 4527 LDAP Read Entry Controls June 2006 176 177 178 control is appropriate for the addRequest, modifyRequest, and 179 modDNRequest LDAP messages. 180 181 The corresponding response control is a LDAP Control whose 182 controlType is 1.3.6.1.1.13.2 and whose controlValue is a BER-encoded 183 SearchResultEntry. The criticality may be TRUE or FALSE. This 184 control is appropriate for the addResponse, modifyResponse, and 185 modDNResponse LDAP messages with a resultCode of success (0). 186 187 When the request control is attached to an appropriate update LDAP 188 request, the control requests the return of a copy of the target 189 entry after the application of the update. The AttributeSelection 190 indicates, as discussed in [RFC4511][RFC3673], which attributes are 191 requested to appear in the copy. The server is to return a 192 SearchResultEntry containing, subject to access controls and other 193 constraints, values of the requested attributes. 194 195 The normal processing of the update operation and the processing of 196 this control MUST be performed as one atomic action isolated from 197 other update operations. 198 199 If the update operation fails (in either normal or control 200 processing), no Post-Read response control is provided. 201 202 4. Interaction with Other Controls 203 204 The Pre-Read and Post-Read controls may be combined with each other 205 and/or with a variety of other controls. When combined with the 206 assertion control [RFC4528] and/or the manageDsaIT control [RFC3296], 207 the semantics of each control included in the combination applies. 208 The Pre-Read and Post-Read controls may be combined with other 209 controls as detailed in other technical specifications. 210 211 5. Security Considerations 212 213 The controls defined in this document extend update operations to 214 support read capabilities. Servers MUST ensure that the client is 215 authorized for reading of the information provided in this control 216 and that the client is authorized to perform the requested directory 217 update. 218 219 Security considerations for the update operations [RFC4511] extended 220 by this control, as well as general LDAP security considerations 221 [RFC4510], generally apply to implementation and use of this 222 extension 223 224 225 226 227 228 229 Zeilenga Standards Track [Page 4] 230 232 RFC 4527 LDAP Read Entry Controls June 2006 233 234 235 6. IANA Considerations 236 237 Registration of the following protocol values [RFC4520] have been 238 completed by the IANA. 239 240 6.1. Object Identifier 241 242 The IANA has registered an LDAP Object Identifier to identify LDAP 243 protocol elements defined in this document. 244 245 Subject: Request for LDAP Object Identifier Registration 246 Person & email address to contact for further information: 247 Kurt Zeilenga <kurt (a] OpenLDAP.org> 248 Specification: RFC 4527 249 Author/Change Controller: IESG 250 Comments: Identifies the LDAP Read Entry Controls 251 252 6.2. LDAP Protocol Mechanisms 253 254 The IANA has registered the LDAP Protocol Mechanism described in this 255 document. 256 257 Subject: Request for LDAP Protocol Mechanism Registration 258 Object Identifier: 1.3.6.1.1.13.1 259 Description: LDAP Pre-read Control 260 Person & email address to contact for further information: 261 Kurt Zeilenga <kurt (a] openldap.org> 262 Usage: Control 263 Specification: RFC 4527 264 Author/Change Controller: IESG 265 Comments: none 266 267 Subject: Request for LDAP Protocol Mechanism Registration 268 Object Identifier: 1.3.6.1.1.13.2 269 Description: LDAP Post-read Control 270 Person & email address to contact for further information: 271 Kurt Zeilenga <kurt (a] openldap.org> 272 Usage: Control 273 Specification: RFC 4527 274 Author/Change Controller: IESG 275 Comments: none 276 277 7. Acknowledgement 278 279 The LDAP Pre-Read and Post-Read controls are modeled after similar 280 capabilities offered in the DAP [X.511]. 281 282 283 284 285 286 Zeilenga Standards Track [Page 5] 287 289 RFC 4527 LDAP Read Entry Controls June 2006 290 291 292 8. References 293 294 8.1. Normative References 295 296 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 297 Requirement Levels", BCP 14, RFC 2119, March 1997. 298 299 [RFC3296] Zeilenga, K., "Named Subordinate References in 300 Lightweight Directory Access Protocol (LDAP) 301 Directories", RFC 3296, July 2002. 302 303 [RFC3673] Zeilenga, K., "Lightweight Directory Access Protocol 304 version 3 (LDAPv3): All Operational Attributes", RFC 305 3673, December 2003. 306 307 [RFC4510] Zeilenga, K., Ed, "Lightweight Directory Access 308 Protocol (LDAP): Technical Specification Road Map", RFC 309 4510, June 2006. 310 311 [RFC4511] Sermersheim, J., Ed., "Lightweight Directory Access 312 Protocol (LDAP): The Protocol", RFC 4511, June 2006. 313 314 [RFC4512] Zeilenga, K., "Lightweight Directory Access Protocol 315 (LDAP): Directory Information Models", RFC 4512, June 316 2006. 317 318 [RFC4528] Zeilenga, K., "Lightweight Directory Access Protocol 319 (LDAP) Assertion Control", RFC 4528, June 2006. 320 321 [X.680] International Telecommunication Union - 322 Telecommunication Standardization Sector, "Abstract 323 Syntax Notation One (ASN.1) - Specification of Basic 324 Notation", X.680(1997) (also ISO/IEC 8824-1:1998). 325 326 [X.690] International Telecommunication Union - 327 Telecommunication Standardization Sector, 328 "Specification of ASN.1 encoding rules: Basic Encoding 329 Rules (BER), Canonical Encoding Rules (CER), and 330 Distinguished Encoding Rules (DER)", X.690(1997) (also 331 ISO/IEC 8825-1:1998). 332 333 334 335 336 337 338 339 340 341 342 343 Zeilenga Standards Track [Page 6] 344 346 RFC 4527 LDAP Read Entry Controls June 2006 347 348 349 8.2. Informative References 350 351 [RFC4520] Zeilenga, K., "Internet Assigned Numbers Authority 352 (IANA) Considerations for the Lightweight Directory 353 Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006. 354 355 [RFC4530] Zeilenga, K., "Lightweight Directory Access Protocol 356 (LDAP) EntryUUID Operational Attribute", RFC 4530, June 357 2006. 358 359 [X.511] International Telecommunication Union - 360 Telecommunication Standardization Sector, "The 361 Directory: Abstract Service Definition", X.511(1993) 362 (also ISO/IEC 9594-3:1993). 363 364 Author's Address 365 366 Kurt D. Zeilenga 367 OpenLDAP Foundation 368 369 EMail: Kurt (a] OpenLDAP.org 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 Zeilenga Standards Track [Page 7] 401 403 RFC 4527 LDAP Read Entry Controls June 2006 404 405 406 Full Copyright Statement 407 408 Copyright (C) The Internet Society (2006). 409 410 This document is subject to the rights, licenses and restrictions 411 contained in BCP 78, and except as set forth therein, the authors 412 retain all their rights. 413 414 This document and the information contained herein are provided on an 415 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 416 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET 417 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, 418 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE 419 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 420 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 421 422 Intellectual Property 423 424 The IETF takes no position regarding the validity or scope of any 425 Intellectual Property Rights or other rights that might be claimed to 426 pertain to the implementation or use of the technology described in 427 this document or the extent to which any license under such rights 428 might or might not be available; nor does it represent that it has 429 made any independent effort to identify any such rights. Information 430 on the procedures with respect to rights in RFC documents can be 431 found in BCP 78 and BCP 79. 432 433 Copies of IPR disclosures made to the IETF Secretariat and any 434 assurances of licenses to be made available, or the result of an 435 attempt made to obtain a general license or permission for the use of 436 such proprietary rights by implementers or users of this 437 specification can be obtained from the IETF on-line IPR repository at 438 http://www.ietf.org/ipr. 439 440 The IETF invites any interested party to bring to its attention any 441 copyrights, patents or patent applications, or other proprietary 442 rights that may cover technology that may be required to implement 443 this standard. Please address the information to the IETF at 444 ietf-ipr (a] ietf.org. 445 446 Acknowledgement 447 448 Funding for the RFC Editor function is provided by the IETF 449 Administrative Support Activity (IASA). 450 451 452 453 454 455 456 457 Zeilenga Standards Track [Page 8] 458 460