1 2 3 4 5 6 7 Network Working Group K. Zeilenga 8 Request for Comments: 4525 OpenLDAP Foundation 9 Category: Informational June 2006 10 11 12 Lightweight Directory Access Protocol (LDAP) 13 Modify-Increment Extension 14 15 16 Status of This Memo 17 18 This memo provides information for the Internet community. It does 19 not specify an Internet standard of any kind. Distribution of this 20 memo is unlimited. 21 22 Copyright Notice 23 24 Copyright (C) The Internet Society (2006). 25 26 Abstract 27 28 This document describes an extension to the Lightweight Directory 29 Access Protocol (LDAP) Modify operation to support an increment 30 capability. This extension is useful in provisioning applications, 31 especially when combined with the assertion control and/or the pre- 32 read or post-read control extension. 33 34 Table of Contents 35 36 1. Background and Intended Use .....................................1 37 2. The Modify-Increment Extension ..................................2 38 3. LDIF Support ....................................................2 39 4. Security Considerations .........................................3 40 5. IANA Considerations .............................................3 41 5.1. Object Identifier ..........................................3 42 5.2. LDAP Protocol Mechanism ....................................3 43 5.3. LDAP Protocol Mechanism ....................................4 44 6. References ......................................................4 45 6.1. Normative References .......................................4 46 6.2. Informative References .....................................5 47 48 1. Background and Intended Use 49 50 The Lightweight Directory Access Protocol (LDAP) [RFC4510] does not 51 currently provide an operation to increment values of an attribute. 52 A client must read the values of the attribute and then modify those 53 values to increment them by the desired amount. As the values may be 54 updated by other clients between this add and modify, the client must 55 56 57 58 Zeilenga Informational [Page 1] 59 61 RFC 4525 LDAP Modify-Increment Extension June 2006 62 63 64 be careful to construct the modify request so that it fails in this 65 case, and upon failure, to re-read the values and construct a new 66 modify request. 67 68 This document extends the LDAP Modify Operation [RFC4511] to support 69 an increment values capability. This feature is intended to be used 70 with either the LDAP pre-read or post-read control extensions 71 [RFC4527]. This feature may also be used with the LDAP assertion 72 control extension [RFC4528] to provide test-and-increment 73 functionality. 74 75 In this document key words "MUST", "MUST NOT", "REQUIRED", "SHALL", 76 "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and 77 "OPTIONAL" are to be interpreted as described in BCP 14 [RFC2119]. 78 79 2. The Modify-Increment Extension 80 81 This document extends the LDAP Modify request to support a increment 82 values capability. Implementations of this extension SHALL support 83 an additional ModifyRequest operation enumeration value increment 84 (3), as described herein. Implementations not supporting this 85 extension will treat this value as they would an unlisted value, 86 e.g., as a protocol error. 87 88 The increment (3) operation value specifies that an increment values 89 modification is requested. All existing values of the modification 90 attribute are to be incremented by the listed value. The 91 modification attribute must be appropriate for the request (e.g., it 92 must have INTEGER or other increment-able values), and the 93 modification must provide one and only one value. If the attribute 94 is not appropriate for the request, a constraintViolation or other 95 appropriate error is to be returned. If multiple values are 96 provided, a protocolError is to be returned. 97 98 Servers supporting this feature SHOULD publish the object identifier 99 (OID) 1.3.6.1.1.14 as a value of the 'supportedFeatures' [RFC4512] 100 attribute in the root DSE. Clients supporting this feature SHOULD 101 NOT use the feature unless they know the server supports it. 102 103 3. LDIF Support 104 105 To represent Modify-Increment requests in LDAP Data Interchange 106 Format [RFC2849], the ABNF [RFC4234] production <mod-spec> is 107 extended as follows: 108 109 mod-spec =/ "increment:" FILL AttributeDescription SEP 110 attrval-spec "-" SEP 111 112 113 114 115 Zeilenga Informational [Page 2] 116 118 RFC 4525 LDAP Modify-Increment Extension June 2006 119 120 121 For example, 122 123 # Increment uidNumber 124 dn: cn=max-assigned uidNumber,dc=example,dc=com 125 changetype: modify 126 increment: uidNumber 127 uidNumber: 1 128 - 129 130 This LDIF fragment represents a Modify request to increment the 131 value(s) of uidNumber by 1. 132 133 4. Security Considerations 134 135 General LDAP security considerations [RFC4510], as well as those 136 specific to the LDAP Modify [RFC4511], apply to this Modify-Increment 137 extension. Beyond these considerations, it is noted that 138 introduction of this extension should reduce application complexity 139 (by providing one operation for what presently requires multiple 140 operations) and, hence, it may aid in the production of correct and 141 secure implementations. 142 143 5. IANA Considerations 144 145 Registration of the following values [RFC4520] have been completed. 146 147 5.1. Object Identifier 148 149 The IANA has assigned an LDAP Object Identifier to identify the LDAP 150 Modify-Increment feature, as defined in this document. 151 152 Subject: Request for LDAP Object Identifier Registration 153 Person & email address to contact for further information: 154 Kurt Zeilenga <kurt (a] OpenLDAP.org> 155 Specification: RFC 4525 156 Author/Change Controller: Author 157 Comments: 158 Identifies the LDAP Modify-Increment feature 159 160 5.2. LDAP Protocol Mechanism 161 162 The following LDAP Protocol Mechanism has been registered. 163 164 Subject: Request for LDAP Protocol Mechanism Registration 165 Object Identifier: 1.3.6.1.1.14 166 Description: Modify-Increment 167 Person & email address to contact for further information: 168 Kurt Zeilenga <kurt (a] openldap.org> 169 170 171 172 Zeilenga Informational [Page 3] 173 175 RFC 4525 LDAP Modify-Increment Extension June 2006 176 177 178 Usage: Feature 179 Specification: RFC 4525 180 Author/Change Controller: Kurt Zeilenga <kurt (a] openldap.org> 181 Comments: none 182 183 5.3. LDAP Protocol Mechanism 184 185 The IANA has assigned an LDAP ModifyRequest Operation Type (3) 186 [RFC4520] for use in this document. 187 188 Subject: Request for LDAP Protocol Mechanism Registration 189 ModifyRequest Operation Name: increment 190 Description: Modify-Increment 191 Person & email address to contact for further information: 192 Kurt Zeilenga <kurt (a] openldap.org> 193 Usage: Feature 194 Specification: RFC 4525 195 Author/Change Controller: Kurt Zeilenga <kurt (a] openldap.org> 196 Comments: none 197 198 6. References 199 200 6.1. Normative References 201 202 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 203 Requirement Levels", BCP 14, RFC 2119, March 1997. 204 205 [RFC4234] Crocker, D. and P. Overell, "Augmented BNF for Syntax 206 Specifications: ABNF", RFC 4234, October 2005. 207 208 [RFC2849] Good, G., "The LDAP Data Interchange Format (LDIF) - 209 Technical Specification", RFC 2849, June 2000. 210 211 [RFC4510] Zeilenga, K., Ed., "Lightweight Directory Access 212 Protocol (LDAP): Technical Specification Road Map", RFC 213 4510, June 2006. 214 215 [RFC4511] Sermersheim, J., Ed., "Lightweight Directory Access 216 Protocol (LDAP): The Protocol", RFC 4511, June 2006. 217 218 [RFC4512] Zeilenga, K., "Lightweight Directory Access Protocol 219 (LDAP): Directory Information Models", RFC 4512, June 220 2006. 221 222 223 224 225 226 227 228 229 Zeilenga Informational [Page 4] 230 232 RFC 4525 LDAP Modify-Increment Extension June 2006 233 234 235 6.2. Informative References 236 237 [RFC4520] Zeilenga, K., "Internet Assigned Numbers Authority 238 (IANA) Considerations for the Lightweight Directory 239 Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006. 240 241 [RFC4527] Zeilenga, K., "Lightweight Directory Access Protocol 242 (LDAP) Read Entry Controls", RFC 4527, June 2006. 243 244 [RFC4528] Zeilenga, K., "Lightweight Directory Access Protocol 245 (LDAP) Assertion Control", RFC 4528, June 2006. 246 247 Author's Address 248 249 Kurt D. Zeilenga 250 OpenLDAP Foundation 251 252 EMail: Kurt (a] OpenLDAP.org 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 Zeilenga Informational [Page 5] 287 289 RFC 4525 LDAP Modify-Increment Extension June 2006 290 291 292 Full Copyright Statement 293 294 Copyright (C) The Internet Society (2006). 295 296 This document is subject to the rights, licenses and restrictions 297 contained in BCP 78, and except as set forth therein, the authors 298 retain all their rights. 299 300 This document and the information contained herein are provided on an 301 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 302 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET 303 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, 304 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE 305 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 306 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 307 308 Intellectual Property 309 310 The IETF takes no position regarding the validity or scope of any 311 Intellectual Property Rights or other rights that might be claimed to 312 pertain to the implementation or use of the technology described in 313 this document or the extent to which any license under such rights 314 might or might not be available; nor does it represent that it has 315 made any independent effort to identify any such rights. Information 316 on the procedures with respect to rights in RFC documents can be 317 found in BCP 78 and BCP 79. 318 319 Copies of IPR disclosures made to the IETF Secretariat and any 320 assurances of licenses to be made available, or the result of an 321 attempt made to obtain a general license or permission for the use of 322 such proprietary rights by implementers or users of this 323 specification can be obtained from the IETF on-line IPR repository at 324 http://www.ietf.org/ipr. 325 326 The IETF invites any interested party to bring to its attention any 327 copyrights, patents or patent applications, or other proprietary 328 rights that may cover technology that may be required to implement 329 this standard. Please address the information to the IETF at 330 ietf-ipr (a] ietf.org. 331 332 Acknowledgement 333 334 Funding for the RFC Editor function is provided by the IETF 335 Administrative Support Activity (IASA). 336 337 338 339 340 341 342 343 Zeilenga Informational [Page 6] 344 346