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