slapo-ppolicy.5 revision 1.4.12.1 1 .lf 1 stdin
2 .TH SLAPO_PPOLICY 5 "2014/01/26" "OpenLDAP 2.4.39"
3 .\" Copyright 2004-2014 The OpenLDAP Foundation All Rights Reserved.
4 .\" Copying restrictions apply. See COPYRIGHT/LICENSE.
5 .\" $OpenLDAP$
6 .SH NAME
7 slapo\-ppolicy \- Password Policy overlay to slapd
8 .SH SYNOPSIS
9 /etc/openldap/slapd.conf
10 .SH DESCRIPTION
11 .LP
12 The
13 .B ppolicy
14 overlay
15 is an implementation of the most recent IETF Password
16 Policy proposal for LDAP. When instantiated, it intercepts,
17 decodes and applies specific password policy controls to overall
18 use of a backend database, changes to user password fields, etc.
19 .P
20 The overlay provides a variety of password control mechanisms. They
21 include password aging -- both minimum and maximum ages, password
22 reuse and duplication control, account time-outs, mandatory password
23 resets, acceptable password content, and even grace logins.
24 Different groups of users may be associated with different password
25 policies, and there is no limit to the number of password policies
26 that may be created.
27 .P
28 Note that some of the policies do not take effect when the operation
29 is performed with the
30 .B rootdn
31 identity; all the operations, when performed with any other identity,
32 may be subjected to constraints, like access control.
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 ) )
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 pwdFailureCountInterval
370 .P
371 This attribute contains the number of seconds after which old
372 consecutive failed bind attempts are purged from the failure counter,
373 even though no successful authentication has occurred.
374 If
375 .B pwdFailureCountInterval
376 is not present, or its value is zero (0), the failure
377 counter will only be reset by a successful authentication.
378 .LP
379 .RS 4
380 ( 1.3.6.1.4.1.42.2.27.8.1.12
381 NAME 'pwdFailureCountInterval'
382 EQUALITY integerMatch
383 SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
384 SINGLE\-VALUE )
385 .RE
386
387 .B pwdMustChange
388 .P
389 This attribute specifies whether users must change their passwords
390 when they first bind to the directory after a password is set or
391 reset by the administrator, or not. If
392 .B pwdMustChange
393 has a value of "TRUE", users must change their passwords when they
394 first bind to the directory after a password is set or reset by
395 the administrator. If
396 .B pwdMustChange
397 is not present, or its value is "FALSE",
398 users are not required to change their password upon binding after
399 the administrator sets or resets the password.
400 .LP
401 .RS 4
402 ( 1.3.6.1.4.1.42.2.27.8.1.13
403 NAME 'pwdMustChange'
404 EQUALITY booleanMatch
405 SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
406 SINGLE\-VALUE )
407 .RE
408
409 .B pwdAllowUserChange
410 .P
411 This attribute specifies whether users are allowed to change their own
412 passwords or not. If
413 .B pwdAllowUserChange
414 is set to "TRUE", or if the attribute is not present, users will be
415 allowed to change their own passwords. If its value is "FALSE",
416 users will not be allowed to change their own passwords.
417 .LP
418 Note: this implies that when
419 .B pwdAllowUserChange
420 is set to "TRUE",
421 users will still be able to change the password of another user,
422 subjected to access control.
423 This restriction only applies to modifications of ones's own password.
424 It should also be noted that
425 .B pwdAllowUserChange
426 was defined in the specification to provide rough access control
427 to the password attribute in implementations that do not allow fine-grain
428 access control.
429 Since OpenLDAP provides fine-grain access control, the use of this attribute
430 is discouraged; ACLs should be used instead
431 (see
432 .BR slapd.access (5)
433 for details).
434 .LP
435 .RS 4
436 ( 1.3.6.1.4.1.42.2.27.8.1.14
437 NAME 'pwdAllowUserChange'
438 EQUALITY booleanMatch
439 SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
440 SINGLE\-VALUE )
441 .RE
442
443 .B pwdSafeModify
444 .P
445 This attribute denotes whether the user's existing password must be sent
446 along with their new password when changing a password. If
447 .B pwdSafeModify
448 is set to "TRUE", the existing password must be sent
449 along with the new password. If the attribute is not present, or
450 its value is "FALSE", the existing password need not be sent
451 along with the new password.
452 .LP
453 .RS 4
454 ( 1.3.6.1.4.1.42.2.27.8.1.15
455 NAME 'pwdSafeModify'
456 EQUALITY booleanMatch
457 SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
458 SINGLE\-VALUE )
459 .RE
460
461 .B pwdCheckModule
462 .P
463 This attribute names a user-defined loadable module that must
464 instantiate the check_password() function. This function
465 will be called to further check a new password if
466 .B pwdCheckQuality
467 is set to one (1) or two (2),
468 after all of the built-in password compliance checks have
469 been passed. This function will be called according to this
470 function prototype:
471 .RS 4
472 int
473 .I check_password
474 (char *pPasswd, char **ppErrStr, Entry *pEntry);
475 .RE
476 The
477 .B pPasswd
478 parameter contains the clear-text user password, the
479 .B ppErrStr
480 parameter contains a double pointer that allows the function
481 to return human-readable details about any error it encounters.
482 The optional
483 .B pEntry
484 parameter, if non-NULL, carries a pointer to the
485 entry whose password is being checked.
486 If
487 .B ppErrStr
488 is NULL, then
489 .I funcName
490 must NOT attempt to use it/them.
491 A return value of LDAP_SUCCESS from the called
492 function indicates that the password is ok, any other value
493 indicates that the password is unacceptable. If the password is
494 unacceptable, the server will return an error to the client, and
495 .B ppErrStr
496 may be used to return a human-readable textual explanation of the
497 error. The error string must be dynamically allocated as it will
498 be free()'d by slapd.
499 .LP
500 .RS 4
501 ( 1.3.6.1.4.1.4754.1.99.1
502 NAME 'pwdCheckModule'
503 EQUALITY caseExactIA5Match
504 SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
505 SINGLE\-VALUE )
506 .RE
507 .P
508 Note:
509 The user-defined loadable module named by
510 .B pwdCheckModule
511 must be in
512 .B slapd's
513 standard executable search PATH.
514 .P
515 Note:
516 .B pwdCheckModule
517 is a non-standard extension to the LDAP password
518 policy proposal.
519
520 .SH OPERATIONAL ATTRIBUTES
521 .P
522 The operational attributes used by the
523 .B ppolicy
524 module are stored in the user's entry. Most of these attributes
525 are not intended to be changed directly by users; they are there
526 to track user activity. They have been detailed here so that
527 administrators and users can both understand the workings of
528 the
529 .B ppolicy
530 module.
531
532 .P
533 Note that the current IETF Password Policy proposal does not define
534 how these operational attributes are expected to behave in a
535 replication environment. In general, authentication attempts on
536 a slave server only affect the copy of the operational attributes
537 on that slave and will not affect any attributes for
538 a user's entry on the master server. Operational attribute changes
539 resulting from authentication attempts on a master server
540 will usually replicate to the slaves (and also overwrite
541 any changes that originated on the slave).
542 These behaviors are not guaranteed and are subject to change
543 when a formal specification emerges.
544
545 .B userPassword
546 .P
547 The
548 .B userPassword
549 attribute is not strictly part of the
550 .B ppolicy
551 module. It is, however, the attribute that is tracked and controlled
552 by the module. Please refer to the standard OpenLDAP schema for
553 its definition.
554
555 .B pwdPolicySubentry
556 .P
557 This attribute refers directly to the
558 .B pwdPolicy
559 subentry that is to be used for this particular directory user.
560 If
561 .B pwdPolicySubentry
562 exists, it must contain the DN of a valid
563 .B pwdPolicy
564 object. If it does not exist, the
565 .B ppolicy
566 module will enforce the default password policy rules on the
567 user associated with this authenticating DN. If there is no
568 default, or the referenced subentry does not exist, then no
569 policy rules will be enforced.
570 .LP
571 .RS 4
572 ( 1.3.6.1.4.1.42.2.27.8.1.23
573 NAME 'pwdPolicySubentry'
574 DESC 'The pwdPolicy subentry in effect for
575 this object'
576 EQUALITY distinguishedNameMatch
577 SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
578 SINGLE\-VALUE
579 NO\-USER\-MODIFICATION
580 USAGE directoryOperation)
581 .RE
582
583 .B pwdChangedTime
584 .P
585 This attribute denotes the last time that the entry's password was
586 changed. This value is used by the password expiration policy to
587 determine whether the password is too old to be allowed to be used
588 for user authentication. If
589 .B pwdChangedTime
590 does not exist, the user's password will not expire.
591 .LP
592 .RS 4
593 ( 1.3.6.1.4.1.42.2.27.8.1.16
594 NAME 'pwdChangedTime'
595 DESC 'The time the password was last changed'
596 SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
597 EQUALITY generalizedTimeMatch
598 ORDERING generalizedTimeOrderingMatch
599 SINGLE\-VALUE
600 NO\-USER\-MODIFICATION
601 USAGE directoryOperation)
602 .RE
603
604 .B pwdAccountLockedTime
605 .P
606 This attribute contains the time that the user's account was locked.
607 If the account has been locked, the password may no longer be used to
608 authenticate the user to the directory. If
609 .B pwdAccountLockedTime
610 is set to 000001010000Z, the user's account has been permanently locked
611 and may only be unlocked by an administrator. Note that account locking
612 only takes effect when the
613 .B pwdLockout
614 password policy attribute is set to "TRUE".
615 .LP
616 .RS 4
617 ( 1.3.6.1.4.1.42.2.27.8.1.17
618 NAME 'pwdAccountLockedTime'
619 DESC 'The time an user account was locked'
620 SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
621 EQUALITY generalizedTimeMatch
622 ORDERING generalizedTimeOrderingMatch
623 SINGLE\-VALUE
624 NO\-USER\-MODIFICATION
625 USAGE directoryOperation)
626 .RE
627
628 .B pwdFailureTime
629 .P
630 This attribute contains the timestamps of each of the consecutive
631 authentication failures made upon attempted authentication to this
632 DN (i.e. account). If too many timestamps accumulate here (refer to
633 the
634 .B pwdMaxFailure
635 password policy attribute for details),
636 and the
637 .B pwdLockout
638 password policy attribute is set to "TRUE", the
639 account may be locked.
640 (Please also refer to the
641 .B pwdLockout
642 password policy attribute.)
643 Excess timestamps beyond those allowed by
644 .B pwdMaxFailure
645 may also be purged. If a successful authentication is made to this
646 DN (i.e. to this user account), then
647 .B pwdFailureTime
648 will be cleansed of entries.
649 .LP
650 .RS 4
651 ( 1.3.6.1.4.1.42.2.27.8.1.19
652 NAME 'pwdFailureTime'
653 DESC 'The timestamps of the last consecutive
654 authentication failures'
655 SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
656 EQUALITY generalizedTimeMatch
657 ORDERING generalizedTimeOrderingMatch
658 NO\-USER\-MODIFICATION
659 USAGE directoryOperation )
660 .RE
661
662 .B pwdHistory
663 .P
664 This attribute contains the history of previously used passwords
665 for this DN (i.e. for this user account).
666 The values of this attribute are stored in string format as follows:
667
668 .RS 4
669
670 pwdHistory=
671 .RS 4
672 time "#" syntaxOID "#" length "#" data
673 .RE
674
675 time=
676 .RS 4
677 GeneralizedTime as specified in section 3.3.13 of [RFC4517]
678 .RE
679
680 .P
681 syntaxOID = numericoid
682 .RS 4
683 This is the string representation of the dotted-decimal OID that
684 defines the syntax used to store the password. numericoid is
685 described in section 1.4 of [RFC4512].
686 .RE
687
688 length = NumericString
689 .RS 4
690 The number of octets in the data. NumericString is described in
691 section 3.3.23 of [RFC4517].
692 .RE
693
694 data =
695 .RS 4
696 Octets representing the password in the format specified by syntaxOID.
697 .RE
698
699 .RE
700
701 This format allows the server to store and transmit a history of
702 passwords that have been used. In order for equality matching
703 on the values in this attribute to function properly, the time
704 field is in GMT format.
705 .LP
706 .RS 4
707 ( 1.3.6.1.4.1.42.2.27.8.1.20
708 NAME 'pwdHistory'
709 DESC 'The history of user passwords'
710 SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
711 EQUALITY octetStringMatch
712 NO\-USER\-MODIFICATION
713 USAGE directoryOperation)
714 .RE
715
716 .B pwdGraceUseTime
717 This attribute contains the list of timestamps of logins made after
718 the user password in the DN has expired. These post-expiration
719 logins are known as "\fIgrace logins\fP".
720 If too many
721 .I grace logins
722 have been used (please refer to the
723 .B pwdGraceLoginLimit
724 password policy attribute), then the DN will no longer be allowed
725 to be used to authenticate the user to the directory until the
726 administrator changes the DN's
727 .B userPassword
728 attribute.
729 .LP
730 .RS 4
731 ( 1.3.6.1.4.1.42.2.27.8.1.21
732 NAME 'pwdGraceUseTime'
733 DESC 'The timestamps of the grace login once the password has expired'
734 SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
735 EQUALITY generalizedTimeMatch
736 NO\-USER\-MODIFICATION
737 USAGE directoryOperation)
738 .RE
739
740 .B pwdReset
741 .P
742 This attribute indicates whether the user's password has been reset
743 by the administrator and thus must be changed upon first use of this
744 DN for authentication to the directory. If
745 .B pwdReset
746 is set to "TRUE", then the password was reset and the user must change
747 it upon first authentication. If the attribute does not exist, or
748 is set to "FALSE", the user need not change their password due to
749 administrative reset.
750 .LP
751 .RS 4
752 ( 1.3.6.1.4.1.42.2.27.8.1.22
753 NAME 'pwdReset'
754 DESC 'The indication that the password has
755 been reset'
756 EQUALITY booleanMatch
757 SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
758 SINGLE\-VALUE
759 USAGE directoryOperation)
760 .RE
761
762 .SH EXAMPLES
763 .LP
764 .RS
765 .nf
766 database bdb
767 suffix dc=example,dc=com
768 \|...
769 overlay ppolicy
770 ppolicy_default "cn=Standard,ou=Policies,dc=example,dc=com"
771 .fi
772 .RE
773
774 .SH SEE ALSO
775 .BR ldap (3),
776 .BR slapd.conf (5),
777 .BR slapd\-config (5),
778 .BR slapo\-chain (5).
779 .LP
780 "OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/)
781 .LP
782 IETF LDAP password policy proposal by P. Behera, L. Poitou and J.
783 Sermersheim: documented in IETF document
784 "draft-behera-ldap-password-policy-09.txt".
785
786 .SH BUGS
787 The LDAP Password Policy specification is not yet an approved standard,
788 and it is still evolving. This code will continue to be in flux until the
789 specification is finalized.
790
791 .SH ACKNOWLEDGEMENTS
792 .P
793 This module was written in 2004 by Howard Chu of Symas Corporation
794 with significant input from Neil Dunbar and Kartik Subbarao of Hewlett-Packard.
795 .P
796 This manual page borrows heavily and shamelessly from the specification
797 upon which the password policy module it describes is based. This
798 source is the
799 IETF LDAP password policy proposal by P. Behera, L.
800 Poitou and J. Sermersheim.
801 The proposal is fully documented in
802 the
803 IETF document named draft-behera-ldap-password-policy-09.txt,
804 written in July of 2005.
805 .P
806 .lf 1 ./../Project
807 .\" Shared Project Acknowledgement Text
808 .B "OpenLDAP Software"
809 is developed and maintained by The OpenLDAP Project <http://www.openldap.org/>.
810 .B "OpenLDAP Software"
811 is derived from University of Michigan LDAP 3.3 Release.
812 .lf 806 stdin
813