Class PasswordPolicy
- java.lang.Object
-
- org.opends.server.api.AuthenticationPolicy
-
- org.opends.server.core.PasswordPolicy
-
- Direct Known Subclasses:
SubentryPasswordPolicy
public abstract class PasswordPolicy extends AuthenticationPolicy
This class defines a data structure that holds information about a Directory Server password policy.
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
PasswordPolicy()
Creates a new password policy.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description PasswordPolicyState
createAuthenticationPolicyState(Entry userEntry, long time)
Returns an authentication policy state object for the provided user using the specified time as the basis for all time-based state logic (such as expiring passwords).abstract Collection<AccountStatusNotificationHandler<?>>
getAccountStatusNotificationHandlers()
Retrieves the set of account status notification handlers that should be used with this password policy.abstract List<PasswordStorageScheme<?>>
getDefaultPasswordStorageSchemes()
Retrieves the default set of password storage schemes that will be used for this password policy.abstract Set<String>
getDeprecatedPasswordStorageSchemes()
Gets the "deprecated-password-storage-scheme" property.abstract Dn
getDN()
Returns the name of the configuration entry associated with this authentication policy.abstract int
getGraceLoginCount()
Gets the "grace-login-count" property.abstract long
getIdleLockoutInterval()
Gets the "idle-lockout-interval" property in seconds.abstract AttributeType
getLastLoginTimeAttribute()
Gets the "last-login-time-attribute" property.abstract String
getLastLoginTimeFormat()
Gets the "last-login-time-format" property.abstract long
getLockoutDuration()
Gets the "lockout-duration" property in seconds.abstract int
getLockoutFailureCount()
Gets the "lockout-failure-count" property.abstract long
getLockoutFailureExpirationInterval()
Gets the "lockout-failure-expiration-interval" property in seconds.abstract long
getMaxPasswordAge()
Gets the "max-password-age" property in seconds.abstract long
getMaxPasswordResetAge()
Gets the "max-password-reset-age" property in seconds.abstract long
getMinPasswordAge()
Gets the "min-password-age" property in seconds.abstract AttributeType
getPasswordAttribute()
Gets the "password-attribute" property.abstract long
getPasswordExpirationWarningInterval()
Gets the "password-expiration-warning-interval" property in seconds.abstract PasswordGenerator<?>
getPasswordGenerator()
Retrieves the password generator that will be used with this password policy.abstract int
getPasswordHistoryCount()
Gets the "password-history-count" property.abstract long
getPasswordHistoryDuration()
Gets the "password-history-duration" property in seconds.abstract Collection<PasswordValidator<?>>
getPasswordValidators()
Retrieves the set of password validators for this password policy.abstract SortedSet<String>
getPreviousLastLoginTimeFormats()
Gets the "previous-last-login-time-format" property.abstract long
getRequireChangeByTime()
Retrieves the time by which all users will be required to change their passwords, expressed in the number of milliseconds since midnight of January 1, 1970 (i.e., the zero time forSystem.currentTimeMillis()
).abstract PasswordPolicyCfgDefn.StateUpdateFailurePolicy
getStateUpdateFailurePolicy()
Gets the "state-update-failure-policy" property.abstract boolean
isAllowExpiredPasswordChanges()
Gets the "allow-expired-password-changes" property.abstract boolean
isAllowMultiplePasswordValues()
Gets the "allow-multiple-password-values" property.abstract boolean
isAllowPreEncodedPasswords()
Gets the "allow-pre-encoded-passwords" property.abstract boolean
isAllowUserPasswordChanges()
Gets the "allow-user-password-changes" property.abstract boolean
isAuthPasswordSyntax()
Indicates whether the associated password attribute uses the auth password syntax.abstract boolean
isDefaultPasswordStorageScheme(String name)
Indicates whether the specified storage scheme is a default scheme for this password policy.abstract boolean
isDeprecatedPasswordStorageScheme(String name)
Indicates whether the specified storage scheme is deprecated.abstract boolean
isExpirePasswordsWithoutWarning()
Gets the "expire-passwords-without-warning" property.abstract boolean
isForceChangeOnAdd()
Gets the "force-change-on-add" property.abstract boolean
isForceChangeOnReset()
Gets the "force-change-on-reset" property.abstract boolean
isPasswordChangeRequiresCurrentPassword()
Gets the "password-change-requires-current-password" property.boolean
isPasswordPolicy()
Returnstrue
if this authentication policy is a password policy and the methodsAuthenticationPolicy.createAuthenticationPolicyState(Entry)
andAuthenticationPolicy.createAuthenticationPolicyState(Entry, long)
will return aPasswordPolicyState
.abstract boolean
isRequireSecureAuthentication()
Gets the "require-secure-authentication" property.abstract boolean
isRequireSecurePasswordChanges()
Gets the "require-secure-password-changes" property.abstract boolean
isSkipValidationForAdministrators()
Gets the "skip-validation-for-administrators" property.boolean
passwordIsAcceptable(ByteString newPassword, Set<ByteString> currentPasswords, Operation operation, Entry userEntry, LocalizableMessageBuilder invalidReason)
Indicates whether the provided password appears to be acceptable according to the password validators, and adds aPasswordQualityAdviceResponseControl
to the operation's response if requested.-
Methods inherited from class org.opends.server.api.AuthenticationPolicy
createAuthenticationPolicyState, finalizeAuthenticationPolicy, forUser, forUser
-
-
-
-
Method Detail
-
getDN
public abstract Dn getDN()
Description copied from class:AuthenticationPolicy
Returns the name of the configuration entry associated with this authentication policy.- Specified by:
getDN
in classAuthenticationPolicy
- Returns:
- The name of the configuration entry associated with this authentication policy.
-
isAuthPasswordSyntax
public abstract boolean isAuthPasswordSyntax()
Indicates whether the associated password attribute uses the auth password syntax.- Returns:
true
if the associated password attribute uses the auth password syntax, orfalse
if not.
-
getDefaultPasswordStorageSchemes
public abstract List<PasswordStorageScheme<?>> getDefaultPasswordStorageSchemes()
Retrieves the default set of password storage schemes that will be used for this password policy. The returned set should not be modified by the caller.- Returns:
- The default set of password storage schemes that will be used for this password policy.
-
getDeprecatedPasswordStorageSchemes
public abstract Set<String> getDeprecatedPasswordStorageSchemes()
Gets the "deprecated-password-storage-scheme" property.Specifies the names of the password storage schemes that are considered deprecated for this password policy.
If a user with this password policy authenticates to the server and his/her password is encoded with a deprecated scheme, those values are removed and replaced with values encoded using the default password storage scheme(s).
- Returns:
- Returns an unmodifiable set containing the values of the "deprecated-password-storage-scheme" property.
-
isDefaultPasswordStorageScheme
public abstract boolean isDefaultPasswordStorageScheme(String name)
Indicates whether the specified storage scheme is a default scheme for this password policy.- Parameters:
name
- The name of the password storage scheme for which to make the determination.- Returns:
true
if the storage scheme is a default scheme for this password policy, orfalse
if not.
-
isDeprecatedPasswordStorageScheme
public abstract boolean isDeprecatedPasswordStorageScheme(String name)
Indicates whether the specified storage scheme is deprecated.- Parameters:
name
- The name of the password storage scheme for which to make the determination.- Returns:
true
if the storage scheme is deprecated, orfalse
if not.
-
getPasswordValidators
public abstract Collection<PasswordValidator<?>> getPasswordValidators()
Retrieves the set of password validators for this password policy. The returned list should not be altered by the caller.- Returns:
- The set of password validators for this password policy.
-
getAccountStatusNotificationHandlers
public abstract Collection<AccountStatusNotificationHandler<?>> getAccountStatusNotificationHandlers()
Retrieves the set of account status notification handlers that should be used with this password policy. The returned list should not be altered by the caller.- Returns:
- The set of account status notification handlers that should be used with this password policy.
-
getPasswordGenerator
public abstract PasswordGenerator<?> getPasswordGenerator()
Retrieves the password generator that will be used with this password policy.- Returns:
- The password generator that will be used with this password policy, or
null
if there is none.
-
getRequireChangeByTime
public abstract long getRequireChangeByTime()
Retrieves the time by which all users will be required to change their passwords, expressed in the number of milliseconds since midnight of January 1, 1970 (i.e., the zero time forSystem.currentTimeMillis()
). Any passwords not changed before this time will automatically enter a state in which they must be changed before any other operation will be allowed.- Returns:
- The time by which all users will be required to change their passwords, or zero if no such constraint is in effect.
-
isAllowExpiredPasswordChanges
public abstract boolean isAllowExpiredPasswordChanges()
Gets the "allow-expired-password-changes" property.Indicates whether a user whose password is expired is still allowed to change that password using the password modify extended operation.
- Returns:
- Returns the value of the "allow-expired-password-changes" property.
-
isAllowMultiplePasswordValues
public abstract boolean isAllowMultiplePasswordValues()
Gets the "allow-multiple-password-values" property.Indicates whether user entries can have multiple distinct values for the password attribute.
This is potentially dangerous because many mechanisms used to change the password do not work well with such a configuration. If multiple password values are allowed, then any of them can be used to authenticate, and they are all subject to the same policy constraints.
- Returns:
- Returns the value of the "allow-multiple-password-values" property.
-
isAllowPreEncodedPasswords
public abstract boolean isAllowPreEncodedPasswords()
Gets the "allow-pre-encoded-passwords" property.Indicates whether users can change their passwords by providing a pre-encoded value.
This can cause a security risk because the clear-text version of the password is not known and therefore validation checks cannot be applied to it.
- Returns:
- Returns the value of the "allow-pre-encoded-passwords" property.
-
isAllowUserPasswordChanges
public abstract boolean isAllowUserPasswordChanges()
Gets the "allow-user-password-changes" property.Indicates whether users can change their own passwords.
This check is made in addition to access control evaluation. Both must allow the password change for it to occur.
- Returns:
- Returns the value of the "allow-user-password-changes" property.
-
isExpirePasswordsWithoutWarning
public abstract boolean isExpirePasswordsWithoutWarning()
Gets the "expire-passwords-without-warning" property.Indicates whether the directory server allows a user's password to expire even if that user has never seen an expiration warning notification.
If this property is true, accounts always expire when the expiration time arrives. If this property is false or disabled, the user always receives at least one warning notification, and the password expiration is set to the warning time plus the warning interval.
- Returns:
- Returns the value of the "expire-passwords-without-warning" property.
-
isForceChangeOnAdd
public abstract boolean isForceChangeOnAdd()
Gets the "force-change-on-add" property.Indicates whether users are forced to change their passwords upon first authenticating to the directory server after their account has been created.
- Returns:
- Returns the value of the "force-change-on-add" property.
-
isForceChangeOnReset
public abstract boolean isForceChangeOnReset()
Gets the "force-change-on-reset" property.Indicates whether users are forced to change their passwords if they are reset by an administrator.
For this purpose, anyone with permission to change a given user's password other than that user is considered an administrator.
- Returns:
- Returns the value of the "force-change-on-reset" property.
-
getGraceLoginCount
public abstract int getGraceLoginCount()
Gets the "grace-login-count" property.Specifies the number of grace logins that a user is allowed after the account has expired to allow that user to choose a new password.
A value of 0 indicates that no grace logins are allowed.
- Returns:
- Returns the value of the "grace-login-count" property.
-
getIdleLockoutInterval
public abstract long getIdleLockoutInterval()
Gets the "idle-lockout-interval" property in seconds.Specifies the maximum length of time that an account may remain idle (that is, the associated user does not authenticate to the server) before that user is locked out.
0 indicates that idle accounts should not be automatically locked out. This feature is available only if the last login time is maintained.
- Returns:
- Returns the value of the "idle-lockout-interval" property in seconds.
-
getLastLoginTimeAttribute
public abstract AttributeType getLastLoginTimeAttribute()
Gets the "last-login-time-attribute" property.Specifies the name or OID of the attribute type that is used to hold the last login time for users with the associated password policy.
This attribute type must be defined in the directory server schema and must either be defined as an operational attribute or must be allowed by the set of objectClasses for all users with the associated password policy.
- Returns:
- Returns the value of the "last-login-time-attribute" property.
-
getLastLoginTimeFormat
public abstract String getLastLoginTimeFormat()
Gets the "last-login-time-format" property.Specifies the format string that is used to generate the last login time value for users with the associated password policy.
This format string conforms to the syntax described in the API documentation for the java.text.SimpleDateFormat class.
- Returns:
- Returns the value of the "last-login-time-format" property.
-
getLockoutDuration
public abstract long getLockoutDuration()
Gets the "lockout-duration" property in seconds.Specifies the length of time that an account is locked after too many authentication failures.
0 indicates that the account must remain locked until an administrator resets the password.
- Returns:
- Returns the value of the "lockout-duration" property in seconds.
-
getLockoutFailureCount
public abstract int getLockoutFailureCount()
Gets the "lockout-failure-count" property.Specifies the maximum number of authentication failures that a user is allowed before the account is locked out.
A value of 0 indicates that accounts are never locked out due to failed attempts.
- Returns:
- Returns the value of the "lockout-failure-count" property.
-
getLockoutFailureExpirationInterval
public abstract long getLockoutFailureExpirationInterval()
Gets the "lockout-failure-expiration-interval" property in seconds.Specifies the length of time before an authentication failure is no longer counted against a user for the purposes of account lockout.
0 indicates that the authentication failures must never expire. The failure count is always cleared upon a successful authentication.
- Returns:
- Returns the value of the "lockout-failure-expiration-interval" property in seconds.
-
getMaxPasswordAge
public abstract long getMaxPasswordAge()
Gets the "max-password-age" property in seconds.Specifies the maximum length of time that a user can continue using the same password before it must be changed (that is, the password expiration interval).
0 indicates that passwords should never expire.
- Returns:
- Returns the value of the "max-password-age" property in seconds.
-
getMaxPasswordResetAge
public abstract long getMaxPasswordResetAge()
Gets the "max-password-reset-age" property in seconds.Specifies the maximum length of time that users have to change passwords after they have been reset by an administrator before they become locked.
0 indicates that this feature must be disabled.
- Returns:
- Returns the value of the "max-password-reset-age" property in seconds.
-
getMinPasswordAge
public abstract long getMinPasswordAge()
Gets the "min-password-age" property in seconds.Specifies the minimum length of time after a password change before the user is allowed to change the password again.
This setting can be used to prevent users from changing their passwords repeatedly over a short period of time to flush an old password from the history so that it can be re-used.
- Returns:
- Returns the value of the "min-password-age" property in seconds.
-
getPasswordAttribute
public abstract AttributeType getPasswordAttribute()
Gets the "password-attribute" property.Specifies the attribute type used to hold user passwords.
This attribute type must be defined in the server schema, and it must have either the user password or auth password syntax.
- Returns:
- Returns the value of the "password-attribute" property.
-
isPasswordChangeRequiresCurrentPassword
public abstract boolean isPasswordChangeRequiresCurrentPassword()
Gets the "password-change-requires-current-password" property.Indicates whether user password changes must use the password modify extended operation and must include the user's current password before the change is allowed.
- Returns:
- Returns the value of the "password-change-requires-current-password" property.
-
getPasswordExpirationWarningInterval
public abstract long getPasswordExpirationWarningInterval()
Gets the "password-expiration-warning-interval" property in seconds.Specifies the maximum length of time before a user's password actually expires that the server begins to include warning notifications in bind responses for that user.
0 indicates that warning interval must be disabled.
- Returns:
- Returns the value of the "password-expiration-warning-interval" property in seconds.
-
getPasswordHistoryCount
public abstract int getPasswordHistoryCount()
Gets the "password-history-count" property.Specifies the maximum number of former passwords to maintain in the password history.
When choosing a new password, the proposed password is checked to ensure that it does not match the current password, nor any other password in the history list. A value of zero indicates that either no password history is to be maintained (if the password history duration has a value of zero seconds), or that there is no maximum number of passwords to maintain in the history (if the password history duration has a value greater than zero seconds).
- Returns:
- Returns the value of the "password-history-count" property.
-
getPasswordHistoryDuration
public abstract long getPasswordHistoryDuration()
Gets the "password-history-duration" property in seconds.Specifies the maximum length of time that passwords remain in the password history.
When choosing a new password, the proposed password is checked to ensure that it does not match the current password, nor any other password in the history list. 0 indicates that either no password history is to be maintained (if the password history count has a value of zero), or that there is no maximum duration for passwords in the history (if the password history count has a value greater than zero).
- Returns:
- Returns the value of the "password-history-duration" property in seconds.
-
getPreviousLastLoginTimeFormats
public abstract SortedSet<String> getPreviousLastLoginTimeFormats()
Gets the "previous-last-login-time-format" property.Specifies the format string(s) that might have been used with the last login time at any point in the past for users associated with the password policy.
These values are used to make it possible to parse previous values, but are not used to set new values. The format strings conform to the syntax described in the API documentation for the java.text.SimpleDateFormat class.
- Returns:
- Returns an unmodifiable set containing the values of the "previous-last-login-time-format" property.
-
isRequireSecureAuthentication
public abstract boolean isRequireSecureAuthentication()
Gets the "require-secure-authentication" property.Indicates whether users with the associated password policy are required to authenticate in a secure manner.
This might mean either using a secure communication channel between the client and the server, or using a SASL mechanism that does not expose the credentials.
- Returns:
- Returns the value of the "require-secure-authentication" property.
-
isRequireSecurePasswordChanges
public abstract boolean isRequireSecurePasswordChanges()
Gets the "require-secure-password-changes" property.Indicates whether users with the associated password policy are required to change their password in a secure manner that does not expose the credentials.
- Returns:
- Returns the value of the "require-secure-password-changes" property.
-
isSkipValidationForAdministrators
public abstract boolean isSkipValidationForAdministrators()
Gets the "skip-validation-for-administrators" property.Indicates whether passwords set by administrators are allowed to bypass the password validation process that is required for user password changes.
- Returns:
- Returns the value of the "skip-validation-for-administrators" property.
-
getStateUpdateFailurePolicy
public abstract PasswordPolicyCfgDefn.StateUpdateFailurePolicy getStateUpdateFailurePolicy()
Gets the "state-update-failure-policy" property.Specifies how the server deals with the inability to update password policy state information during an authentication attempt.
In particular, this property can be used to control whether an otherwise successful bind operation fails if a failure occurs while attempting to update password policy state information (for example, to clear a record of previous authentication failures or to update the last login time). It can also be used to control whether to reject a bind request if it is known ahead of time that it will not be possible to update the authentication failure times in the event of an unsuccessful bind attempt (for example, if the backend writability mode is disabled).
- Returns:
- Returns the value of the "state-update-failure-policy" property.
-
isPasswordPolicy
public boolean isPasswordPolicy()
Description copied from class:AuthenticationPolicy
Returnstrue
if this authentication policy is a password policy and the methodsAuthenticationPolicy.createAuthenticationPolicyState(Entry)
andAuthenticationPolicy.createAuthenticationPolicyState(Entry, long)
will return aPasswordPolicyState
.The default implementation is to return
false
.- Overrides:
isPasswordPolicy
in classAuthenticationPolicy
- Returns:
true
if this authentication policy is a password policy, otherwisefalse
.
-
createAuthenticationPolicyState
public PasswordPolicyState createAuthenticationPolicyState(Entry userEntry, long time)
Description copied from class:AuthenticationPolicy
Returns an authentication policy state object for the provided user using the specified time as the basis for all time-based state logic (such as expiring passwords).- Specified by:
createAuthenticationPolicyState
in classAuthenticationPolicy
- Parameters:
userEntry
- The user's entry.time
- The time since the epoch to use for all time-based state logic (such as expiring passwords).- Returns:
- The authentication policy state object for the provided user.
-
passwordIsAcceptable
public final boolean passwordIsAcceptable(ByteString newPassword, Set<ByteString> currentPasswords, Operation operation, Entry userEntry, LocalizableMessageBuilder invalidReason)
Indicates whether the provided password appears to be acceptable according to the password validators, and adds aPasswordQualityAdviceResponseControl
to the operation's response if requested.- Parameters:
newPassword
- The password to be validated.currentPasswords
- The set of clear-text current passwords for the user (this may be a subset if not all of them are available in the clear, or empty if none of them are available in the clear).operation
- The operation that provided the password.userEntry
- The user entry in which the password is used.invalidReason
- A buffer that may be used to hold the invalid reason if the password is rejected.- Returns:
true
if the password is acceptable for use, orfalse
if it is not.
-
-