public class CmsLoginManager
extends java.lang.Object
Stores invalid login attempts and disables a user account temporarily in case the configured threshold of invalid logins is reached.
The invalid login attempt storage operates on a combination of user name, login remote IP address and user type. This means that a user can be disabled for one remote IP, but still be enabled for another remote IP.
Also allows to temporarily disallow logins (for example in case of maintenance work on the system).
限定符和类型 | 字段和说明 |
---|---|
static int |
DISABLE_MINUTES_DEFAULT
Default lock time if treshold for bad login attempts is reached.
|
static boolean |
ENABLE_SECURITY_DEFAULT
Default setting for the security option.
|
static java.lang.String |
KEY_SEPARATOR
Separator used for storage keys.
|
protected int |
m_disableMillis
The milliseconds to disable an account if the threshold is reached.
|
protected int |
m_disableMinutes
The minutes to disable an account if the threshold is reached.
|
protected boolean |
m_enableSecurity
The flag to determine if the security option ahould be enabled on the login dialog.
|
protected int |
m_maxBadAttempts
The number of bad login attempts allowed before an account is temporarily disabled.
|
protected java.util.Map<java.lang.String,org.opencms.db.CmsLoginManager.CmsUserData> |
m_storage
The storage for the bad login attempts.
|
static int |
MAX_BAD_ATTEMPTS_DEFAULT
Default for bad login attempts.
|
构造器和说明 |
---|
CmsLoginManager(int disableMinutes,
int maxBadAttempts,
boolean enableSecurity)
Creates a new storage for invalid logins.
|
限定符和类型 | 方法和说明 |
---|---|
protected void |
addInvalidLogin(java.lang.String userName,
java.lang.String remoteAddress)
Adds an invalid attempt to login for the given user / IP to the storage.
|
void |
checkInvalidLogins(java.lang.String userName,
java.lang.String remoteAddress)
Checks if the threshold for the invalid logins has been reached for the given user.
|
void |
checkLoginAllowed()
Checks if a login is currently allowed.
|
int |
getDisableMinutes()
Returns the minutes an account gets disabled after too many failed login attempts.
|
CmsLoginMessage |
getLoginMessage()
Returns the current login message that is displayed if a user logs in.
|
int |
getMaxBadAttempts()
Returns the number of bad login attempts allowed before an account is temporarily disabled.
|
boolean |
isEnableSecurity()
Returns if the security option ahould be enabled on the login dialog.
|
boolean |
isUserLocked(CmsUser user)
Checks if a user is locked due to too many failed logins.
|
protected void |
removeInvalidLogins(java.lang.String userName,
java.lang.String remoteAddress)
Removes all invalid attempts to login for the given user / IP.
|
void |
removeLoginMessage(CmsObject cms)
Removes the current login message.
|
void |
setLoginMessage(CmsObject cms,
CmsLoginMessage message)
Sets the login message to display if a user logs in.
|
void |
unlockUser(CmsObject cms,
CmsUser user)
Unlocks a user who has exceeded his number of failed login attempts so that he can try to log in again.
|
public static final int DISABLE_MINUTES_DEFAULT
public static final boolean ENABLE_SECURITY_DEFAULT
public static final java.lang.String KEY_SEPARATOR
public static final int MAX_BAD_ATTEMPTS_DEFAULT
protected int m_disableMillis
protected int m_disableMinutes
protected boolean m_enableSecurity
protected int m_maxBadAttempts
protected java.util.Map<java.lang.String,org.opencms.db.CmsLoginManager.CmsUserData> m_storage
public CmsLoginManager(int disableMinutes, int maxBadAttempts, boolean enableSecurity)
disableMinutes
- the minutes to disable an account if the threshold is reachedmaxBadAttempts
- the number of bad login attempts allowed before an account is temporarily disabledenableSecurity
- flag to determine if the security option should be enabled on the login dialogpublic void checkInvalidLogins(java.lang.String userName, java.lang.String remoteAddress) throws CmsAuthentificationException
In case the configured threshold is reached, an Exception is thrown.
userName
- the name of the userremoteAddress
- the remote address (IP) from which the login attempt was madeCmsAuthentificationException
- in case the threshold of invalid login attempts has been reachedpublic void checkLoginAllowed() throws CmsAuthentificationException
In case no logins are allowed, an Exception is thrown.
CmsAuthentificationException
- in case no logins are allowedpublic int getDisableMinutes()
public CmsLoginMessage getLoginMessage()
if null
is returned, no login message has been currently set.
public int getMaxBadAttempts()
public boolean isEnableSecurity()
true
if the security option ahould be enabled on the login dialog, otherwise false
public boolean isUserLocked(CmsUser user)
user
- the user to checkpublic void removeLoginMessage(CmsObject cms) throws CmsRoleViolationException
This operation requires that the current user has role permissions of
.CmsRole.ROOT_ADMIN
cms
- the current OpenCms user contextCmsRoleViolationException
- in case the current user does not have the required role permissionspublic void setLoginMessage(CmsObject cms, CmsLoginMessage message) throws CmsRoleViolationException
This operation requires that the current user has role permissions of
.CmsRole.ROOT_ADMIN
cms
- the current OpenCms user contextmessage
- the message to setCmsRoleViolationException
- in case the current user does not have the required role permissionspublic void unlockUser(CmsObject cms, CmsUser user) throws CmsRoleViolationException
This requires the "account manager" role.
cms
- the current CMS contextuser
- the user to unlockCmsRoleViolationException
- if the permission check failsprotected void addInvalidLogin(java.lang.String userName, java.lang.String remoteAddress)
In case the configured threshold is reached, the user is disabled for the configured time.
userName
- the name of the userremoteAddress
- the remore address (IP) from which the login attempt was madeprotected void removeInvalidLogins(java.lang.String userName, java.lang.String remoteAddress)
userName
- the name of the userremoteAddress
- the remore address (IP) from which the login attempt was made