]> git.sur5r.net Git - openldap/blob - servers/slapd/schema/ppolicy.schema
Clarify schema source, status, and provide appropriate caution
[openldap] / servers / slapd / schema / ppolicy.schema
1 # $OpenLDAP$
2 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
3 ##
4 ## Copyright 2004-2005 The OpenLDAP Foundation.
5 ## All rights reserved.
6 ##
7 ## Redistribution and use in source and binary forms, with or without
8 ## modification, are permitted only as authorized by the OpenLDAP
9 ## Public License.
10 ##
11 ## A copy of this license is available in the file LICENSE in the
12 ## top-level directory of the distribution or, alternatively, at
13 ## <http://www.OpenLDAP.org/license.html>.
14 #
15 ## Portions Copyright (C) The Internet Society (2004).  All Rights Reserved.
16 ## Please see full copyright statement below.
17
18 # Definitions from Draft behera-ldap-password-policy-07 (a work in progress)
19 #       Password Policy for LDAP Directories
20 # With extensions from Hewlett-Packard:
21 #       pwdCheckModule etc.
22
23 # Contents of this file are subject to change (including deletion)
24 # without notice.
25 #
26 # Not recommended for production use!
27 # Use with extreme caution!
28
29 # Internet-Draft                                                P. Behera
30 # draft behera-ldap-password-policy-07.txt                      L. Poitou
31 # Intended Category: Proposed Standard                   Sun Microsystems
32 # Expires: August 2004                                     J. Sermersheim
33 #                                                                  Novell
34
35 #                                                           February 2004
36 #  
37 #  
38 #                   Password Policy for LDAP Directories 
39 #  
40 #  
41 # Status of this Memo 
42 #  
43 #    This document is an Internet-Draft and is in full conformance with 
44 #    all provisions of Section 10 of RFC 2026.  
45 #     
46 #    Internet-Drafts are working documents of the Internet Engineering 
47 #    Task Force (IETF), its areas, and its working groups. Note that 
48 #    other groups may also distribute working documents as Internet-
49 #    Drafts. 
50 #     
51 #    Internet-Drafts are draft documents valid for a maximum of six 
52 #    months and may be updated, replaced, or obsoleted by other documents 
53 #    at any time. It is inappropriate to use Internet- Drafts as 
54 #    reference material or to cite them other than as "work in progress." 
55 #      
56 #    The list of current Internet-Drafts can be accessed at 
57 #    http://www.ietf.org/ietf/1id-abstracts.txt  
58 #     
59 #    The list of Internet-Draft Shadow Directories can be accessed at 
60 #    http://www.ietf.org/shadow.html. 
61 #     
62 #    Technical discussions of this draft are held on the LDAPEXT Working 
63 #    Group mailing list at ietf-ldapext@netscape.com. Editorial comments 
64 #    may be sent to the authors listed in Section 13. 
65 #     
66 #    Copyright (C) The Internet Society (2004). All rights Reserved. 
67 #     
68 #    Please see the Copyright Section near the end of this document for 
69 #    more information. 
70 #     
71 #     
72 # 1. Abstract 
73 #     
74 #    Password policy as described in this document is a set of rules that 
75 #    controls how passwords are used and administered in LDAP 
76 #    directories. In order to improve the security of LDAP directories 
77 #    and make it difficult for password cracking programs to break into 
78 #    directories, it is desirable to enforce a set of rules on password 
79 #    usage.  These rules are made to ensure that users change their 
80 #    passwords periodically, passwords meet construction requirements, 
81 #    the re-use of old password is restricted, and users are locked out 
82 #    after a certain number of failed attempts. 
83 #     
84 # [trimmed]
85
86 #     
87 # 4.2. Attribute Types used in the pwdPolicy ObjectClass 
88 #     
89 #    Following are the attribute types used by the pwdPolicy object 
90 #    class. 
91 #     
92 # 4.2.1. pwdAttribute 
93 #     
94 #    This holds the name of the attribute to which the password policy is 
95 #    applied. For example, the password policy may be applied to the 
96 #    userPassword attribute. 
97     
98 attributetype   (  1.3.6.1.4.1.42.2.27.8.1.1 
99       NAME 'pwdAttribute' 
100       EQUALITY objectIdentifierMatch 
101       SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 ) 
102     
103 # 4.2.2. pwdMinAge  
104 #     
105 #    This attribute holds the number of seconds that must elapse between 
106 #    modifications to the password. If this attribute is not present, 0 
107 #    seconds is assumed. 
108     
109 attributetype   (  1.3.6.1.4.1.42.2.27.8.1.2 
110       NAME 'pwdMinAge' 
111       EQUALITY integerMatch 
112       SYNTAX 1.3.6.1.4.1.1466.115.121.1.27  
113       SINGLE-VALUE ) 
114     
115 # 4.2.3. pwdMaxAge 
116 #     
117 #    This attribute holds the number of seconds after which a modified 
118 #    password will expire. 
119 #     
120 #    If this attribute is not present, or if the value is 0 the password 
121 #    does not expire. If not 0, the value must be greater than or equal 
122 #    to the value of the pwdMinAge. 
123     
124 attributetype   (  1.3.6.1.4.1.42.2.27.8.1.3 
125       NAME 'pwdMaxAge' 
126       EQUALITY integerMatch 
127       SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 
128       SINGLE-VALUE ) 
129     
130 # 4.2.4. pwdInHistory 
131 #     
132 #    This attribute specifies the maximum number of used passwords stored 
133 #    in the pwdHistory attribute. 
134 #     
135 #    If this attribute is not present, or if the value is 0, used 
136 #    passwords are not stored in the pwdHistory attribute and thus may be 
137 #    reused. 
138     
139 attributetype   (  1.3.6.1.4.1.42.2.27.8.1.4 
140       NAME 'pwdInHistory' 
141       EQUALITY integerMatch 
142       SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 
143       SINGLE-VALUE ) 
144     
145 # 4.2.5. pwdCheckQuality 
146 #     
147 #    This attribute indicates how the password quality will be verified 
148 #    while being modified or added. If this attribute is not present, or 
149 #    if the value is '0', quality checking will not be enforced. A value 
150 #    of '1' indicates that the server will check the quality, and if the 
151 #    server is unable to check it (due to a hashed password or other 
152 #    reasons) it will be accepted. A value of '2' indicates that the 
153 #    server will check the quality, and if the server is unable to verify 
154 #    it, it will return an error refusing the password. 
155     
156 attributetype   (  1.3.6.1.4.1.42.2.27.8.1.5 
157       NAME 'pwdCheckQuality' 
158       EQUALITY integerMatch 
159       SYNTAX 1.3.6.1.4.1.1466.115.121.1.27  
160       SINGLE-VALUE ) 
161     
162 # 4.2.6. pwdMinLength 
163 #     
164 #    When quality checking is enabled, this attribute holds the minimum 
165 #    number of characters that must be used in a password. If this 
166 #    attribute is not present, no minimum password length will be 
167 #    enforced. If the server is unable to check the length (due to a 
168 #    hashed password or otherwise), the server will, depending on the 
169 #    value of the pwdCheckQuality attribute, either accept the password 
170 #    without checking it ('0' or '1') or refuse it ('2'). 
171     
172 attributetype   (  1.3.6.1.4.1.42.2.27.8.1.6 
173       NAME 'pwdMinLength' 
174       EQUALITY integerMatch 
175       SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 
176       SINGLE-VALUE ) 
177     
178 # 4.2.7. pwdExpireWarning 
179 #     
180 #    This attribute specifies the maximum number of seconds before a 
181 #    password is due to expire that expiration warning messages will be 
182 #    returned to an authenticating user. If this attribute is not 
183 #    present, or if the value is 0 no warnings will be sent. If not 0, 
184 #    the value must be smaller than the value of the pwdMaxAge attribute. 
185     
186 attributetype   (  1.3.6.1.4.1.42.2.27.8.1.7 
187       NAME 'pwdExpireWarning' 
188       EQUALITY integerMatch 
189       SYNTAX 1.3.6.1.4.1.1466.115.121.1.27  
190       SINGLE-VALUE ) 
191     
192 # 4.2.8. pwdGraceLoginLimit 
193 #     
194 #    This attribute specifies the number of times an expired password can 
195 #    be used to authenticate. If this attribute is not present or if the 
196 #    value is 0, authentication will fail. 
197     
198 attributetype   (  1.3.6.1.4.1.42.2.27.8.1.8 
199       NAME 'pwdGraceLoginLimit' 
200       EQUALITY integerMatch 
201       SYNTAX 1.3.6.1.4.1.1466.115.121.1.27  
202       SINGLE-VALUE ) 
203     
204 # 4.2.9. pwdLockout 
205 #     
206 #    This attribute indicates, when its value is "TRUE", that the 
207 #    password may not be used to authenticate after a specified number of 
208 #    consecutive failed bind attempts. The maximum number of consecutive 
209 #    failed bind attempts is specified in pwdMaxFailure. 
210 #     
211 #    If this attribute is not present, or if the value is "FALSE", the 
212 #    password may be used to authenticate when the number of failed bind 
213 #    attempts has been reached. 
214     
215 attributetype   (  1.3.6.1.4.1.42.2.27.8.1.9 
216       NAME 'pwdLockout' 
217       EQUALITY booleanMatch 
218       SYNTAX 1.3.6.1.4.1.1466.115.121.1.7  
219       SINGLE-VALUE ) 
220
221 # 4.2.10. pwdLockoutDuration 
222 #     
223 #    This attribute holds the number of seconds that the password cannot 
224 #    be used to authenticate due to too many failed bind attempts. If 
225 #    this attribute is not present, or if the value is 0 the password 
226 #    cannot be used to authenticate until reset by an administrator. 
227     
228 attributetype   (  1.3.6.1.4.1.42.2.27.8.1.10 
229       NAME 'pwdLockoutDuration' 
230       EQUALITY integerMatch 
231       SYNTAX 1.3.6.1.4.1.1466.115.121.1.27  
232       SINGLE-VALUE ) 
233     
234 # 4.2.11. pwdMaxFailure 
235 #     
236 #    This attribute specifies the number of consecutive failed bind 
237 #    attempts after which the password may not be used to authenticate. 
238 #    If this attribute is not present, or if the value is 0, this policy 
239 #    is not checked, and the value of pwdLockout will be ignored. 
240     
241 attributetype   (  1.3.6.1.4.1.42.2.27.8.1.11 
242       NAME 'pwdMaxFailure' 
243       EQUALITY integerMatch 
244       SYNTAX 1.3.6.1.4.1.1466.115.121.1.27  
245       SINGLE-VALUE ) 
246     
247 # 4.2.12. pwdFailureCountInterval 
248 #     
249 #    This attribute holds the number of seconds after which the password 
250 #    failures are purged from the failure counter, even though no 
251 #    successful authentication occurred. 
252 #     
253 #    If this attribute is not present, or if its value is 0, the failure 
254 #    counter is only reset by a successful authentication. 
255      
256 attributetype   (  1.3.6.1.4.1.42.2.27.8.1.12 
257       NAME 'pwdFailureCountInterval' 
258       EQUALITY integerMatch 
259       SYNTAX 1.3.6.1.4.1.1466.115.121.1.27  
260       SINGLE-VALUE ) 
261     
262 # 4.2.13. pwdMustChange 
263 #     
264 #    This attribute specifies with a value of "TRUE" that users must 
265 #    change their passwords when they first bind to the directory after a 
266 #    password is set or reset by the administrator. If this attribute is 
267 #    not present, or if the value is "FALSE", users are not required to 
268 #    change their password upon binding after the administrator sets or 
269 #    resets the password. 
270  
271 attributetype   (  1.3.6.1.4.1.42.2.27.8.1.13 
272       NAME 'pwdMustChange' 
273       EQUALITY booleanMatch 
274       SYNTAX 1.3.6.1.4.1.1466.115.121.1.7  
275       SINGLE-VALUE ) 
276     
277 # 4.2.14. pwdAllowUserChange 
278 #     
279 #    This attribute indicates whether users can change their own 
280 #    passwords, although the change operation is still subject to access 
281 #    control. If this attribute is not present, a value of "TRUE" is 
282 #    assumed. 
283     
284 attributetype   (  1.3.6.1.4.1.42.2.27.8.1.14 
285       NAME 'pwdAllowUserChange' 
286       EQUALITY booleanMatch 
287       SYNTAX 1.3.6.1.4.1.1466.115.121.1.7  
288       SINGLE-VALUE ) 
289     
290 # 4.2.15. pwdSafeModify 
291 #     
292 #    This attribute specifies whether or not the existing password must 
293 #    be sent when changing a password. If this attribute is not present, 
294 #    a "FALSE" value is assumed. 
295 #     
296 attributetype   (  1.3.6.1.4.1.42.2.27.8.1.15 
297       NAME 'pwdSafeModify' 
298       EQUALITY booleanMatch 
299       SYNTAX 1.3.6.1.4.1.1466.115.121.1.7  
300       SINGLE-VALUE ) 
301
302 # HP extensions
303 #
304 # pwdCheckModule
305 #
306 #    This attribute names a user-defined loadable module that provides
307 #    a check_password() function. If pwdCheckQuality is set to '1' or '2'
308 #    this function will be called after all of the internal password
309 #    quality checks have been passed. The function has this prototype:
310 #
311 #    int check_password( char *password, char **errormessage, void *arg )
312 #
313 #    The function should return LDAP_SUCCESS for a valid password.
314
315 attributetype  (  1.3.6.1.4.1.4754.1.99.1
316      NAME 'pwdCheckModule'
317      EQUALITY caseExactIA5Match
318      SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
319      DESC 'Loadable module that instantiates "check_password() function'
320      SINGLE-VALUE )
321
322 # 4.1. The pwdPolicy Object Class 
323 #     
324 #    This object class contains the attributes defining a password policy 
325 #    in effect for a set of users. Section 8 describes the administration 
326 #    of this object, and the relationship between it and particular 
327 #    objects. 
328     
329 objectclass   (  1.3.6.1.4.1.42.2.27.8.2.1 
330       NAME 'pwdPolicy'  
331       SUP top 
332       AUXILIARY  
333       MUST ( pwdAttribute ) 
334       MAY ( pwdMinAge $ pwdMaxAge $ pwdInHistory $ pwdCheckQuality $ 
335       pwdMinLength $ pwdExpireWarning $ pwdGraceLoginLimit $ pwdLockout 
336       $ pwdLockoutDuration $ pwdMaxFailure $ pwdFailureCountInterval $ 
337       pwdMustChange $ pwdAllowUserChange $ pwdSafeModify ) ) 
338
339 objectclass  (   1.3.6.1.4.1.4754.2.99.1
340       NAME 'pwdPolicyChecker'
341       SUP top
342       AUXILIARY
343       MAY ( pwdCheckModule ) )
344
345 # 4.3. Attribute Types for Password Policy State Information 
346 #     
347 #    Password policy state information must be maintained for each user. 
348 #    The information is located in each user entry as a set of 
349 #    operational attributes. These operational attributes are: 
350 #    pwdChangedTime, pwdAccountLockedTime, pwdExpirationWarned, 
351 #    pwdFailureTime, pwdHistory, pwdGraceUseTime, pwdReset, 
352 #    pwdPolicySubEntry. 
353 #     
354 # 4.3.1. Password Policy State Attribute Option 
355 #     
356 #    Since the password policy could apply to several attributes used to 
357 #    store passwords, each of the above operational attributes must have 
358 #    an option to specify which pwdAttribute is applies to.  
359 #    The password policy option is defined as the following: 
360 #         pwd-<passwordAttribute> 
361 #     
362 #    where passwordAttribute a string following the OID syntax 
363 #    (1.3.6.1.4.1.1466.115.121.1.38). The attribute type descriptor 
364 #    (short name) MUST be used. 
365 #     
366 #    For example, if the pwdPolicy object has for pwdAttribute 
367 #    "userPassword" then the pwdChangedTime operational attribute, in a 
368 #    user entry, will be: 
369 #    pwdChangedTime;pwd-userPassword: 20000103121520Z 
370 #     
371 #    This attribute option follows sub-typing semantics. If a client 
372 #    requests a password policy state attribute to be returned in a 
373 #    search operation, and does not specify an option, all subtypes of 
374 #    that policy state attribute are returned. 
375 #          
376 # 4.3.2. pwdChangedTime 
377 #     
378 #    This attribute specifies the last time the entry's password was 
379 #    changed. This is used by the password expiration policy. If this 
380 #    attribute does not exist, the password will never expire. 
381 #     
382 #    (  1.3.6.1.4.1.42.2.27.8.1.16 
383 #       NAME 'pwdChangedTime' 
384 #       DESC 'The time the password was last changed' 
385 #       SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 
386 #       EQUALITY generalizedTimeMatch 
387 #       ORDERING generalizedTimeOrderingMatch 
388 #       SINGLE-VALUE 
389 #       USAGE directoryOperation) 
390 #     
391 # 4.3.3. pwdAccountLockedTime 
392 #     
393 #    This attribute holds the time that the user's account was locked. A 
394 #    locked account means that the password may no longer be used to 
395 #    authenticate. A 0 value means that the account has been locked 
396 #    permanently, and that only an administrator can unlock the account. 
397 #     
398 #    (  1.3.6.1.4.1.42.2.27.8.1.17 
399 #       NAME 'pwdAccountLockedTime' 
400 #       DESC 'The time an user account was locked' 
401 #       SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 
402 #       EQUALITY generalizedTimeMatch 
403 #       ORDERING generalizedTimeOrderingMatch 
404 #       SINGLE-VALUE 
405 #       USAGE directoryOperation) 
406 #      
407 # 4.3.4. pwdExpirationWarned 
408 #  
409 #    This attribute contains the time when the password expiration 
410 #    warning was first sent to the client. The password will expire in 
411 #    the pwdExpireWarning time. 
412 #     
413 #    (  1.3.6.1.4.1.42.2.27.8.1.18 
414 #       NAME 'pwdExpirationWarned' 
415 #       DESC 'The time the user was first warned about the coming 
416 #               expiration of the password' 
417 #       SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 
418 #       EQUALITY generalizedTimeMatch 
419 #       ORDERING generalizedTimeOrderingMatch 
420 #       SINGLE-VALUE 
421 #       USAGE directoryOperation ) 
422 #     
423 # 4.3.5. pwdFailureTime 
424 #     
425 #    This attribute holds the timestamps of the consecutive 
426 #    authentication failures. 
427 #     
428 #    (  1.3.6.1.4.1.42.2.27.8.1.19 
429 #       NAME 'pwdFailureTime' 
430 #       DESC 'The timestamps of the last consecutive authentication 
431 #               failures' 
432 #       SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 
433 #       EQUALITY generalizedTimeMatch 
434 #       ORDERING generalizedTimeOrderingMatch 
435 #       USAGE directoryOperation ) 
436 #     
437 # 4.3.6. pwdHistory 
438 #     
439 #    This attribute holds a history of previously used passwords. 
440 #     
441 #    Values of this attribute are transmitted in string format as given 
442 #    by the following ABNF: 
443 #     
444 #    pwdHistory = time "#" syntaxOID "#" length "#" data 
445 #     
446 #    time         = <generalizedTimeString as specified in 6.14 of 
447 #                   [RFC2252]> 
448 #     
449 #    syntaxOID    = numericoid     ; the string representation of the  
450 #                                  ; dotted-decimal OID that defines the 
451 #                                  ; syntax used to store the password. 
452 #                                  ; numericoid is described in 4.1 of 
453 #                                  ; [RFC2252]. 
454 #       
455 #    length       = numericstring  ; the number of octets in data. 
456 #                                  ; numericstring is described in 4.1 of 
457 #                                  ; [RFC2252]. 
458 #     
459 #    data         = <octets representing the password in the format      
460 #                 specified by syntaxOID>. 
461 #     
462 #    This format allows the server to store, and transmit a history of 
463 #    passwords that have been used. In order for equality matching to 
464 #    function properly, the time field needs to adhere to a consistent 
465 #    format. For this purpose, the time field MUST be in GMT format. 
466 #     
467 #    (  1.3.6.1.4.1.42.2.27.8.1.20 
468 #       NAME 'pwdHistory' 
469 #       DESC 'The history of user s passwords' 
470 #       SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 
471 #       EQUALITY octetStringMatch 
472 #       USAGE directoryOperation) 
473 #     
474 # 4.3.7. pwdGraceUseTime 
475 #     
476 #    This attribute holds the timestamps of grace login once a password 
477 #    has expired. 
478 #     
479 #    (  1.3.6.1.4.1.42.2.27.8.1.21 
480 #       NAME 'pwdGraceUseTime' 
481 #       DESC 'The timestamps of the grace login once the password has 
482 #       expired' 
483 #       SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 
484 #       EQUALITY generalizedTimeMatch 
485 #        
486 #       USAGE directoryOperation) 
487 #     
488 # 4.3.8. pwdReset 
489 #     
490 #    This attribute holds a flag to indicate (when TRUE) that the 
491 #    password has been reset and therefore must be changed by the user on 
492 #    first authentication. 
493 #     
494 #    (  1.3.6.1.4.1.42.2.27.8.1.22 
495 #       NAME 'pwdReset' 
496 #       DESC 'The indication that the password has been reset' 
497 #       EQUALITY booleanMatch 
498 #       SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 
499 #       SINGLE-VALUE 
500 #       USAGE directoryOperation) 
501 #     
502 # 4.3.9. pwdPolicySubentry 
503 #     
504 #    This attribute points to the pwdPolicy subentry in effect for this 
505 #    object. 
506 #     
507 #    (  1.3.6.1.4.1.42.2.27.8.1.23 
508 #       NAME 'pwdPolicySubentry' 
509 #       DESC 'The pwdPolicy subentry in effect for this object' 
510 #       EQUALITY distinguishedNameMatch 
511 #       SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 
512 #       SINGLE-VALUE 
513 #       USAGE directoryOperation) 
514 #     
515 # 14. Copyright Notice 
516 #     
517 #    Copyright (C) The Internet Society (2004). All Rights  
518 #    Reserved.   
519 #      
520 #    This document and translations of it may be copied and furnished to 
521 #    others, and derivative works that comment on or otherwise explain it 
522 #    or assist in its implementation may be prepared, copied, published 
523 #    and distributed, in whole or in part, without restriction of any 
524 #    kind, provided that the above copyright notice and this paragraph 
525 #    are included on all such copies and derivative works. However, this 
526 #    document itself may not be modified in any way, such as by removing 
527 #    the copyright notice or references to the Internet Society or other 
528 #    Internet organizations, except as needed for the purpose of 
529 #    developing Internet standards in which case the procedures for 
530 #    copyrights defined in the Internet Standards process must be 
531 #    followed, or as required to translate it into languages other than 
532 #    English.  
533 #      
534 #    The limited permissions granted above are perpetual and will not be 
535 #    revoked by the Internet Society or its successors or assigns.  
536 #      
537 #    This document and the information contained herein is provided on an 
538 #    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 
539 #    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 
540 #    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 
541 #    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF  
542 #    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."