pwdFailureTime behavior for accounts that are set to no lockout

You can compare the differences in pwdFailureTime behavior with accounts that are set to no lockout after applying Interim Fix 6.4.0.19.

When a user account is set to no lockout, for example, by setting pwdLockout=false, pwdMaxFailure=0 or cn=noPwdPolicy, on every bind failure attempt, the value of pwdFailureTime attribute is appended with the recent time stamp entry. This process continues for every bind failure attempt.

Example scenario

Global password policy is set to the following values:
ibm-pwdPolicyStartTime=20190609170951.417254Z
pwdInHistory=0
pwdCheckSyntax=1
pwdGraceLoginLimit=0
pwdLockoutDuration=0
pwdMaxFailure=0
pwdFailureCountInterval=0
passwordMaxRepeatedChars=0
pwdMaxAge=99
pwdMinAge=0
pwdExpireWarning=0
pwdMinLength=5
passwordMinAlphaChars=0
passwordMinOtherChars=0
passwordMinDiffChars=0
ibm-pwdPolicy=true
pwdLockout=false
pwdAllowUserChange=true
pwdMustChange=false
pwdSafeModify=false
ibm-pwdGroupAndIndividualEnabled=true

or

ibm-pwdIndividualPolicyDN is set to cn=noPwdPolicy for a user account.

Behavior before you apply IF 6.4.0.19

With this setting, if you make an invalid bind attempt, pwdFailureTime registers time stamps of the consecutive authentication failures even though the user account is set to no lockout. This process continues for every bind failure and the pwdFailureTime continues growing until a user attempts a successful bind.

ldapmodify -p 389 -D cn=test1,o=sample1 -w test
ldap_simple_bind: Invalid credentials

ldapsearch -p 389 -D cn=root -w root  -s sub objectclass=* -b cn=test1,o=sample1 +ibmpwdpolicy
cn=test1,o=sample1
ibm-pwdIndividualPolicyDN=cn=noPwdPolicy
pwdFailureTime=20190630224644.627592Z

ldapmodify -p 389 -D cn=test1,o=sample1 -w test
ldap_simple_bind: Invalid credentials

ldapsearch -p 389 -D cn=root -w root  -s sub objectclass=* -b cn=test1,o=sample1 +ibmpwdpolicy
cn=test1,o=sample1
ibm-pwdIndividualPolicyDN=cn=noPwdPolicy
pwdFailureTime=20190630224644.627592Z
pwdFailureTime=20190630224650.169000Z

ldapmodify -p 389 -D cn=test1,o=sample1 -w test
ldap_simple_bind: Invalid credentials

ldapsearch -p 389 -D cn=root -w root  -s sub objectclass=* -b cn=test1,o=sample1 +ibmpwdpolicy
cn=test1,o=sample1
ibm-pwdIndividualPolicyDN=cn=noPwdPolicy
pwdFailureTime=20190630224644.627592Z
pwdFailureTime=20190630224650.169000Z
pwdFailureTime=20190630224814.431944Z

Behaviour after you apply IF 6.4.0.19

The behavior for recording pwdFailureTime for user accounts that are set to no lockout are now different. For such user accounts, on every bind failure attempt, the existing values of pwdFailureTime attribute are removed and recent time stamp entry is registered.

By using the same settings for global password policy and the user account in the earlier scenario, pwdFailureTime contains the following content:

ldapmodify -p 389 -D cn=test1,o=sample1 -w test
ldap_simple_bind: Invalid credentials

ldapsearch -p 389 -D cn=root -w root  -s sub objectclass=* -b cn=test1,o=sample1 +ibmpwdpolicy
cn=test1,o=sample1
ibm-pwdIndividualPolicyDN=cn=noPwdPolicy
pwdFailureTime=20190630230036.254184Z

ldapmodify -p 389 -D cn=test1,o=sample1 -w test
ldap_simple_bind: Invalid credentials

ldapsearch -p 389 -D cn=root -w root  -s sub objectclass=* -b cn=test1,o=sample1 +ibmpwdpolicy
cn=test1,o=sample1
ibm-pwdIndividualPolicyDN=cn=noPwdPolicy
pwdFailureTime=20190630230040.449923Z

ldapmodify -p 389 -D cn=test1,o=sample1 -w test
ldap_simple_bind: Invalid credentials

ldapsearch -p 389 -D cn=root -w root  -s sub objectclass=* -b cn=test1,o=sample1 +ibmpwdpolicy
cn=test1,o=sample1
ibm-pwdIndividualPolicyDN=cn=noPwdPolicy
pwdFailureTime=20190630230411.813454Z

With this change in behavior, the only recent time stamp entry is stored for user accounts.