]> git.sur5r.net Git - openldap/blob - doc/man/man5/slapo-ppolicy.5
ITS#8565 - Clearly document rootdn requirement for the ppolicy overlay
[openldap] / doc / man / man5 / slapo-ppolicy.5
1 .TH SLAPO_PPOLICY 5 "RELEASEDATE" "OpenLDAP LDVERSION"
2 .\" Copyright 2004-2017 The OpenLDAP Foundation All Rights Reserved.
3 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
4 .\" $OpenLDAP$
5 .SH NAME
6 slapo\-ppolicy \- Password Policy overlay to slapd
7 .SH SYNOPSIS
8 ETCDIR/slapd.conf
9 .SH DESCRIPTION
10 .LP
11 The 
12 .B ppolicy
13 overlay
14 is an implementation of the most recent IETF Password
15 Policy proposal for LDAP.   When instantiated, it intercepts,
16 decodes and applies specific password policy controls to overall
17 use of a backend database, changes to user password fields, etc.
18 .P
19 The overlay provides a variety of password control mechanisms.  They
20 include password aging -- both minimum and maximum ages, password
21 reuse and duplication control, account time-outs, mandatory password
22 resets, acceptable password content, and even grace logins.
23 Different groups of users may be associated with different password
24 policies, and there is no limit to the number of password policies
25 that may be created.
26 .P
27 Note that some of the policies do not take effect when the operation
28 is performed with the
29 .B rootdn
30 identity; all the operations, when performed with any other identity,
31 may be subjected to constraints, like access control.  This overlay
32 requires a rootdn to be configured on the database.
33 .P
34 Note that the IETF Password Policy proposal for LDAP makes sense
35 when considering a single-valued password attribute, while 
36 the userPassword attribute allows multiple values.  This implementation
37 enforces a single value for the userPassword attribute, despite
38 its specification.
39
40 .SH CONFIGURATION
41 These 
42 .B slapd.conf
43 configuration options apply to the ppolicy overlay. They should appear
44 after the
45 .B overlay
46 directive.
47 .TP
48 .B ppolicy_default <policyDN>
49 Specify the DN of the pwdPolicy object to use when no specific policy is
50 set on a given user's entry. If there is no specific policy for an entry
51 and no default is given, then no policies will be enforced.
52 .TP
53 .B ppolicy_forward_updates
54 Specify that policy state changes that result from Bind operations (such
55 as recording failures, lockout, etc.) on a consumer should be forwarded
56 to a master instead of being written directly into the consumer's local
57 database. This setting is only useful on a replication consumer, and
58 also requires the
59 .B updateref
60 setting and
61 .B chain
62 overlay to be appropriately configured.
63 .TP
64 .B ppolicy_hash_cleartext
65 Specify that cleartext passwords present in Add and Modify requests should
66 be hashed before being stored in the database. This violates the X.500/LDAP
67 information model, but may be needed to compensate for LDAP clients that
68 don't use the Password Modify extended operation to manage passwords.  It
69 is recommended that when this option is used that compare, search, and
70 read access be denied to all directory users. 
71 .TP
72 .B ppolicy_use_lockout
73 A client will always receive an LDAP
74 .B InvalidCredentials
75 response when
76 Binding to a locked account. By default, when a Password Policy control
77 was provided on the Bind request, a Password Policy response will be
78 included with no special error code set. This option changes the
79 Password Policy response to include the
80 .B AccountLocked
81 error code. Note
82 that sending the
83 .B AccountLocked
84 error code provides useful information
85 to an attacker; sites that are sensitive to security issues should not
86 enable this option.
87
88 .SH OBJECT CLASS
89 The 
90 .B ppolicy
91 overlay depends on the
92 .B pwdPolicy
93 object class.  The definition of that class is as follows:
94 .LP
95 .RS 4
96 (  1.3.6.1.4.1.42.2.27.8.2.1
97     NAME 'pwdPolicy'
98     AUXILIARY
99     SUP top
100     MUST ( pwdAttribute )
101     MAY (
102         pwdMinAge $ pwdMaxAge $ pwdInHistory $
103         pwdCheckQuality $ pwdMinLength $
104         pwdExpireWarning $ pwdGraceAuthnLimit $
105         pwdLockout $ pwdLockoutDuration $
106         pwdMaxFailure $ pwdFailureCountInterval $
107         pwdMustChange $ pwdAllowUserChange $
108         pwdSafeModify $ pwdMaxRecordedFailure ) )
109 .RE
110
111 This implementation also provides an additional
112 .B pwdPolicyChecker
113 objectclass, used for password quality checking (see below).
114 .LP
115 .RS 4
116 (  1.3.6.1.4.1.4754.2.99.1
117     NAME 'pwdPolicyChecker'
118     AUXILIARY
119     SUP top
120     MAY ( pwdCheckModule ) )
121 .RE
122 .P
123 Every account that should be subject to password policy control should
124 have a
125 .B
126 pwdPolicySubentry
127 attribute containing the DN of a valid
128 .B pwdPolicy
129 entry, or they can simply use the configured default.
130 In this way different users may be managed according to
131 different policies.
132
133 .SH OBJECT CLASS ATTRIBUTES
134 .P
135 Each one of the sections below details the meaning and use of a particular
136 attribute of this
137 .B pwdPolicy
138 object class.
139 .P
140
141 .B pwdAttribute
142 .P
143 This attribute contains the name of the attribute to which the password
144 policy is applied. For example, the password policy may be applied
145 to the
146 .B userPassword
147 attribute.
148 .P
149 Note: in this implementation, the only
150 value accepted for
151 .B pwdAttribute
152 is
153 .IR " userPassword ".
154 .LP
155 .RS 4
156 (  1.3.6.1.4.1.42.2.27.8.1.1
157    NAME 'pwdAttribute'
158    EQUALITY objectIdentifierMatch
159    SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
160 .RE
161
162 .B pwdMinAge
163 .P
164 This attribute contains the number of seconds that must elapse
165 between modifications allowed to the password. If this attribute
166 is not present, zero seconds is assumed (i.e. the password may be
167 modified whenever and however often is desired).
168 .LP
169 .RS 4
170 (  1.3.6.1.4.1.42.2.27.8.1.2
171    NAME 'pwdMinAge'
172    EQUALITY integerMatch
173    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
174    SINGLE\-VALUE )
175 .RE
176
177 .B pwdMaxAge
178 .P
179 This attribute contains the number of seconds after which a modified
180 password will expire.  If this attribute is not present, or if its
181 value is zero (0), then passwords will not expire.
182 .LP
183 .RS 4
184 (  1.3.6.1.4.1.42.2.27.8.1.3
185    NAME 'pwdMaxAge'
186    EQUALITY integerMatch
187    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
188    SINGLE\-VALUE )
189 .RE
190
191 .B pwdInHistory
192 .P
193 This attribute is used to specify the maximum number of used
194 passwords that will be stored in the
195 .B pwdHistory
196 attribute.  If the
197 .B pwdInHistory
198 attribute is not present, or if its value is
199 zero (0), used passwords will not be stored in
200 .B pwdHistory
201 and thus any previously-used password may be reused.
202 No history checking occurs if the password is being modified by the
203 .BR rootdn ,
204 although the password is saved in the history.
205 .LP
206 .RS 4
207 (  1.3.6.1.4.1.42.2.27.8.1.4
208    NAME 'pwdInHistory'
209    EQUALITY integerMatch
210    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
211    SINGLE\-VALUE )
212 .RE
213
214 .B pwdCheckQuality
215 .P
216 This attribute indicates if and how password syntax will be checked
217 while a password is being modified or added. If this attribute is
218 not present, or its value is zero (0), no syntax checking will be
219 done. If its value is one (1), the server will check the syntax,
220 and if the server is unable to check the syntax,
221 whether due to a client-side hashed password or some other reason,
222 it will be
223 accepted. If its value is two (2), the server will check the syntax,
224 and if the server is unable to check the syntax it will return an
225 error refusing the password.
226 .LP
227 .RS 4
228 (  1.3.6.1.4.1.42.2.27.8.1.5
229    NAME 'pwdCheckQuality'
230    EQUALITY integerMatch
231    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
232    SINGLE\-VALUE )
233 .RE
234
235 .B pwdMinLength
236 .P
237 When syntax checking is enabled
238 (see also the
239 .B pwdCheckQuality
240 attribute), this attribute contains the minimum
241 number of characters that will be accepted in a password. If this
242 attribute is not present, minimum password length is not
243 enforced. If the server is unable to check the length of the password,
244 whether due to a client-side hashed password or some other reason,
245 the server will, depending on the
246 value of
247 .BR pwdCheckQuality ,
248 either accept the password
249 without checking it (if
250 .B pwdCheckQuality
251 is zero (0) or one (1)) or refuse it (if
252 .B pwdCheckQuality
253 is two (2)).
254 .LP
255 .RS 4
256 (  1.3.6.1.4.1.42.2.27.8.1.6
257    NAME 'pwdMinLength'
258    EQUALITY integerMatch
259    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
260    SINGLE\-VALUE )
261 .RE
262
263 .B pwdExpireWarning
264 .P
265 This attribute contains the maximum number of seconds before a
266 password is due to expire that expiration warning messages will be
267 returned to a user who is authenticating to the directory.
268 If this attribute is not
269 present, or if the value is zero (0), no warnings will be sent.
270 .LP
271 .RS 4
272 (  1.3.6.1.4.1.42.2.27.8.1.7
273    NAME 'pwdExpireWarning'
274    EQUALITY integerMatch
275    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
276    SINGLE\-VALUE )
277 .RE
278
279 .B pwdGraceAuthnLimit
280 .P
281 This attribute contains the number of times that an expired password
282 may be used to authenticate a user to the directory. If this
283 attribute is not present or if its value is zero (0), users with
284 expired passwords will not be allowed to authenticate to the
285 directory.
286 .LP
287 .RS 4
288 (  1.3.6.1.4.1.42.2.27.8.1.8
289    NAME 'pwdGraceAuthnLimit'
290    EQUALITY integerMatch
291    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
292    SINGLE\-VALUE )
293 .RE
294
295 .B pwdLockout
296 .P
297 This attribute specifies the action that should be taken
298 by the directory when a user has made a number of failed attempts
299 to authenticate to the directory.  If
300 .B pwdLockout
301 is set (its value is "TRUE"), the user will not be allowed to
302 attempt to authenticate to the directory after there have been a
303 specified number of consecutive failed bind attempts.  The maximum
304 number of consecutive failed bind attempts allowed is specified by
305 the
306 .B pwdMaxFailure
307 attribute.  If
308 .B pwdLockout
309 is not present, or if its value is "FALSE", the password may be
310 used to authenticate no matter how many consecutive failed bind
311 attempts have been made.
312 .LP
313 .RS 4
314 (  1.3.6.1.4.1.42.2.27.8.1.9
315    NAME 'pwdLockout'
316    EQUALITY booleanMatch
317    SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
318    SINGLE\-VALUE )
319 .RE
320
321 .B pwdLockoutDuration
322 .P
323 This attribute contains the number of seconds during
324 which the password cannot be used to authenticate the
325 user to the directory due to too many consecutive failed
326 bind attempts.
327 (See also
328 .B pwdLockout
329 and
330 .BR pwdMaxFailure .)
331 If
332 .B pwdLockoutDuration
333 is not present, or if its value is zero (0), the password
334 cannot be used to authenticate the user to the directory
335 again until it is reset by an administrator.
336 .LP
337 .RS 4
338 (  1.3.6.1.4.1.42.2.27.8.1.10
339    NAME 'pwdLockoutDuration'
340    EQUALITY integerMatch
341    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
342    SINGLE\-VALUE )
343 .RE
344
345 .B pwdMaxFailure
346 .P
347 This attribute contains the number of consecutive failed bind
348 attempts after which the password may not be used to authenticate
349 a user to the directory.
350 If
351 .B pwdMaxFailure
352 is not present, or its value is zero (0), then a user will
353 be allowed to continue to attempt to authenticate to
354 the directory, no matter how many consecutive failed 
355 bind attempts have occurred with that user's DN.
356 (See also
357 .B pwdLockout
358 and
359 .BR pwdLockoutDuration .)
360 .LP
361 .RS 4
362 (  1.3.6.1.4.1.42.2.27.8.1.11
363    NAME 'pwdMaxFailure'
364    EQUALITY integerMatch
365    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
366    SINGLE\-VALUE )
367 .RE
368
369 .B pwdMaxRecordedFailure
370 .P
371 This attribute contains the maximum number of failed bind
372 attempts to store in a user's entry.
373 If
374 .B pwdMaxRecordedFailure
375 is not present, or its value is zero (0), then it defaults
376 to the value of
377 .BR pwdMaxFailure .
378 If that value is also 0, the default is 5.
379 .LP
380 .RS 4
381 (  1.3.6.1.4.1.42.2.27.8.1.16
382    NAME 'pwdMaxRecordedFailure'
383    EQUALITY integerMatch
384    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
385    SINGLE\-VALUE )
386 .RE
387
388 .B pwdFailureCountInterval
389 .P
390 This attribute contains the number of seconds after which old
391 consecutive failed bind attempts are purged from the failure counter,
392 even though no successful authentication has occurred.
393 If
394 .B pwdFailureCountInterval
395 is not present, or its value is zero (0), the failure
396 counter will only be reset by a successful authentication.
397 .LP
398 .RS 4
399 (  1.3.6.1.4.1.42.2.27.8.1.12
400    NAME 'pwdFailureCountInterval'
401    EQUALITY integerMatch
402    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
403    SINGLE\-VALUE )
404 .RE
405
406 .B pwdMustChange
407 .P
408 This attribute specifies whether users must change their passwords
409 when they first bind to the directory after a password is set or
410 reset by the administrator, or not.  If
411 .B pwdMustChange
412 has a value of "TRUE", users must change their passwords when they
413 first bind to the directory after a password is set or reset by
414 the administrator.  If
415 .B pwdMustChange
416 is not present, or its value is "FALSE",
417 users are not required to change their password upon binding after
418 the administrator sets or resets the password.
419 .LP
420 .RS 4
421 (  1.3.6.1.4.1.42.2.27.8.1.13
422   NAME 'pwdMustChange'
423   EQUALITY booleanMatch
424   SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
425   SINGLE\-VALUE )
426 .RE
427
428 .B pwdAllowUserChange
429 .P
430 This attribute specifies whether users are allowed to change their own
431 passwords or not.  If
432 .B pwdAllowUserChange
433 is set to "TRUE", or if the attribute is not present, users will be
434 allowed to change their own passwords.  If its value is "FALSE",
435 users will not be allowed to change their own passwords.
436 .LP
437 Note: this implies that when
438 .B pwdAllowUserChange
439 is set to "TRUE",
440 users will still be able to change the password of another user,
441 subjected to access control.
442 This restriction only applies to modifications of ones's own password.
443 It should also be noted that
444 .B pwdAllowUserChange
445 was defined in the specification to provide rough access control
446 to the password attribute in implementations that do not allow fine-grain
447 access control.
448 Since OpenLDAP provides fine-grain access control, the use of this attribute
449 is discouraged; ACLs should be used instead
450 (see
451 .BR slapd.access (5)
452 for details).
453 .LP
454 .RS 4
455 (  1.3.6.1.4.1.42.2.27.8.1.14
456    NAME 'pwdAllowUserChange'
457    EQUALITY booleanMatch
458    SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
459    SINGLE\-VALUE )
460 .RE
461
462 .B pwdSafeModify
463 .P
464 This attribute denotes whether the user's existing password must be sent
465 along with their new password when changing a password.  If
466 .B pwdSafeModify
467 is set to "TRUE", the existing password must be sent
468 along with the new password.  If the attribute is not present, or
469 its value is "FALSE", the existing password need not be sent
470 along with the new password.
471 .LP
472 .RS 4
473 (  1.3.6.1.4.1.42.2.27.8.1.15
474    NAME 'pwdSafeModify'
475    EQUALITY booleanMatch
476    SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
477    SINGLE\-VALUE )
478 .RE
479
480 .B pwdCheckModule
481 .P
482 This attribute names a user-defined loadable module that must
483 instantiate the check_password() function.  This function
484 will be called to further check a new password if
485 .B pwdCheckQuality
486 is set to one (1) or two (2),
487 after all of the built-in password compliance checks have
488 been passed.  This function will be called according to this
489 function prototype:
490 .RS 4
491 int
492 .I check_password
493 (char *pPasswd, char **ppErrStr, Entry *pEntry);
494 .RE
495 The
496 .B pPasswd
497 parameter contains the clear-text user password, the
498 .B ppErrStr
499 parameter contains a double pointer that allows the function
500 to return human-readable details about any error it encounters.
501 The optional
502 .B pEntry
503 parameter, if non-NULL, carries a pointer to the
504 entry whose password is being checked.
505 If
506 .B ppErrStr
507 is NULL, then 
508 .I funcName
509 must NOT attempt to use it/them.
510 A return value of LDAP_SUCCESS from the called
511 function indicates that the password is ok, any other value
512 indicates that the password is unacceptable.  If the password is
513 unacceptable, the server will return an error to the client, and
514 .B ppErrStr
515 may be used to return a human-readable textual explanation of the
516 error. The error string must be dynamically allocated as it will
517 be free()'d by slapd.
518 .LP
519 .RS 4
520 (  1.3.6.1.4.1.4754.1.99.1
521    NAME 'pwdCheckModule'
522    EQUALITY caseExactIA5Match
523    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
524    SINGLE\-VALUE )
525 .RE
526 .P
527 Note: 
528 The user-defined loadable module named by
529 .B pwdCheckModule     
530 must be in
531 .B slapd's
532 standard executable search PATH.
533 .P
534 Note:
535 .B pwdCheckModule
536 is a non-standard extension to the LDAP password
537 policy proposal.
538
539 .SH OPERATIONAL ATTRIBUTES
540 .P
541 The operational attributes used by the
542 .B ppolicy
543 module are stored in the user's entry.  Most of these attributes
544 are not intended to be changed directly by users; they are there
545 to track user activity.  They have been detailed here so that
546 administrators and users can both understand the workings of
547 the
548 .B ppolicy
549 module.
550
551 .P
552 Note that the current IETF Password Policy proposal does not define
553 how these operational attributes are expected to behave in a
554 replication environment. In general, authentication attempts on
555 a slave server only affect the copy of the operational attributes
556 on that slave and will not affect any attributes for
557 a user's entry on the master server. Operational attribute changes
558 resulting from authentication attempts on a master server
559 will usually replicate to the slaves (and also overwrite
560 any changes that originated on the slave). 
561 These behaviors are not guaranteed and are subject to change
562 when a formal specification emerges.
563
564 .B userPassword
565 .P
566 The
567 .B userPassword
568 attribute is not strictly part of the
569 .B ppolicy
570 module.  It is, however, the attribute that is tracked and controlled
571 by the module.  Please refer to the standard OpenLDAP schema for
572 its definition.
573
574 .B pwdPolicySubentry
575 .P
576 This attribute refers directly to the
577 .B pwdPolicy
578 subentry that is to be used for this particular directory user.
579 If
580 .B pwdPolicySubentry
581 exists, it must contain the DN of a valid
582 .B pwdPolicy
583 object.  If it does not exist, the
584 .B ppolicy
585 module will enforce the default password policy rules on the
586 user associated with this authenticating DN. If there is no
587 default, or the referenced subentry does not exist, then no
588 policy rules will be enforced.
589 .LP
590 .RS 4
591 (  1.3.6.1.4.1.42.2.27.8.1.23
592    NAME 'pwdPolicySubentry'
593    DESC 'The pwdPolicy subentry in effect for
594        this object'
595    EQUALITY distinguishedNameMatch
596    SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
597    SINGLE\-VALUE
598    NO\-USER\-MODIFICATION
599    USAGE directoryOperation)
600 .RE
601
602 .B pwdChangedTime
603 .P
604 This attribute denotes the last time that the entry's password was
605 changed.  This value is used by the password expiration policy to
606 determine whether the password is too old to be allowed to be used
607 for user authentication.  If
608 .B pwdChangedTime
609 does not exist, the user's password will not expire.
610 .LP
611 .RS 4
612 (  1.3.6.1.4.1.42.2.27.8.1.16
613    NAME 'pwdChangedTime'
614    DESC 'The time the password was last changed'
615    SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
616    EQUALITY generalizedTimeMatch
617    ORDERING generalizedTimeOrderingMatch
618    SINGLE\-VALUE
619    NO\-USER\-MODIFICATION
620    USAGE directoryOperation)
621 .RE
622
623 .B pwdAccountLockedTime
624 .P
625 This attribute contains the time that the user's account was locked.
626 If the account has been locked, the password may no longer be used to
627 authenticate the user to the directory.  If
628 .B pwdAccountLockedTime   
629 is set to 000001010000Z, the user's account has been permanently locked
630 and may only be unlocked by an administrator. Note that account locking
631 only takes effect when the
632 .B pwdLockout
633 password policy attribute is set to "TRUE".
634 .LP
635 .RS 4
636 (  1.3.6.1.4.1.42.2.27.8.1.17
637    NAME 'pwdAccountLockedTime'
638    DESC 'The time an user account was locked'
639    SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
640    EQUALITY generalizedTimeMatch
641    ORDERING generalizedTimeOrderingMatch
642    SINGLE\-VALUE
643    NO\-USER\-MODIFICATION
644    USAGE directoryOperation)
645 .RE
646
647 .B pwdFailureTime
648 .P
649 This attribute contains the timestamps of each of the consecutive
650 authentication failures made upon attempted authentication to this
651 DN (i.e. account).  If too many timestamps accumulate here (refer to
652 the
653 .B pwdMaxFailure
654 password policy attribute for details),
655 and the
656 .B pwdLockout
657 password policy attribute is set to "TRUE", the
658 account may be locked.
659 (Please also refer to the
660 .B pwdLockout
661 password policy attribute.)
662 Excess timestamps beyond those allowed by
663 .B pwdMaxFailure
664 or
665 .B pwdMaxRecordedFailure
666 may also be purged.  If a successful authentication is made to this
667 DN (i.e. to this user account), then
668 .B pwdFailureTime   
669 will be cleansed of entries.
670 .LP
671 .RS 4
672 (  1.3.6.1.4.1.42.2.27.8.1.19
673    NAME 'pwdFailureTime'
674    DESC 'The timestamps of the last consecutive
675        authentication failures'
676    SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
677    EQUALITY generalizedTimeMatch
678    ORDERING generalizedTimeOrderingMatch
679    NO\-USER\-MODIFICATION
680    USAGE directoryOperation )
681 .RE
682
683 .B pwdHistory
684 .P
685 This attribute contains the history of previously used passwords
686 for this DN (i.e. for this user account).
687 The values of this attribute are stored in string format as follows:
688
689 .RS 4
690
691 pwdHistory=
692 .RS 4
693 time "#" syntaxOID "#" length "#" data
694 .RE
695
696 time=
697 .RS 4
698 GeneralizedTime as specified in section 3.3.13 of [RFC4517]
699 .RE
700
701 .P
702 syntaxOID = numericoid
703 .RS 4
704 This is the string representation of the dotted-decimal OID that
705 defines the syntax used to store the password.  numericoid is
706 described in section 1.4 of [RFC4512].
707 .RE
708
709 length = NumericString
710 .RS 4
711 The number of octets in the data.  NumericString is described in
712 section 3.3.23 of [RFC4517].
713 .RE
714
715 data =
716 .RS 4
717 Octets representing the password in the format specified by syntaxOID.
718 .RE
719
720 .RE
721
722 This format allows the server to store and transmit a history of
723 passwords that have been used.  In order for equality matching
724 on the values in this attribute to function properly, the time
725 field is in GMT format.
726 .LP
727 .RS 4
728 (  1.3.6.1.4.1.42.2.27.8.1.20
729    NAME 'pwdHistory'
730    DESC 'The history of user passwords'
731    SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
732    EQUALITY octetStringMatch
733    NO\-USER\-MODIFICATION
734    USAGE directoryOperation)
735 .RE
736
737 .B pwdGraceUseTime
738 This attribute contains the list of timestamps of logins made after
739 the user password in the DN has expired.  These post-expiration
740 logins are known as "\fIgrace logins\fP".
741 If too many
742 .I grace logins
743 have been used (please refer to the
744 .B pwdGraceLoginLimit
745 password policy attribute), then the DN will no longer be allowed
746 to be used to authenticate the user to the directory until the
747 administrator changes the DN's
748 .B userPassword
749 attribute.
750 .LP
751 .RS 4
752 (  1.3.6.1.4.1.42.2.27.8.1.21
753    NAME 'pwdGraceUseTime'
754    DESC 'The timestamps of the grace login once the password has expired'
755    SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
756    EQUALITY generalizedTimeMatch
757    NO\-USER\-MODIFICATION
758    USAGE directoryOperation)
759 .RE
760
761 .B pwdReset
762 .P
763 This attribute indicates whether the user's password has been reset
764 by the administrator and thus must be changed upon first use of this
765 DN for authentication to the directory.  If
766 .B pwdReset   
767 is set to "TRUE", then the password was reset and the user must change
768 it upon first authentication.  If the attribute does not exist, or
769 is set to "FALSE", the user need not change their password due to
770 administrative reset.
771 .LP
772 .RS 4
773 (  1.3.6.1.4.1.42.2.27.8.1.22
774    NAME 'pwdReset'
775    DESC 'The indication that the password has
776        been reset'
777    EQUALITY booleanMatch
778    SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
779    SINGLE\-VALUE
780    USAGE directoryOperation)
781 .RE
782
783 .SH EXAMPLES
784 .LP
785 .RS
786 .nf
787 database mdb
788 suffix dc=example,dc=com
789 \|...
790 overlay ppolicy
791 ppolicy_default "cn=Standard,ou=Policies,dc=example,dc=com"
792 .fi
793 .RE
794
795 .SH SEE ALSO
796 .BR ldap (3),
797 .BR slapd.conf (5),
798 .BR slapd\-config (5),
799 .BR slapo\-chain (5).
800 .LP
801 "OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/)
802 .LP
803 IETF LDAP password policy proposal by P. Behera, L.  Poitou and J.
804 Sermersheim:  documented in IETF document
805 "draft-behera-ldap-password-policy-09.txt".
806
807 .SH BUGS
808 The LDAP Password Policy specification is not yet an approved standard,
809 and it is still evolving. This code will continue to be in flux until the
810 specification is finalized.
811
812 .SH ACKNOWLEDGEMENTS
813 .P
814 This module was written in 2004 by Howard Chu of Symas Corporation
815 with significant input from Neil Dunbar and Kartik Subbarao of Hewlett-Packard.
816 .P
817 This manual page borrows heavily and shamelessly from the specification
818 upon which the password policy module it describes is based.  This
819 source is the
820 IETF LDAP password policy proposal by P. Behera, L.
821 Poitou and J. Sermersheim.
822 The proposal is fully documented in
823 the
824 IETF document named draft-behera-ldap-password-policy-09.txt,
825 written in July of 2005.
826 .P
827 .so ../Project