Package org.apache.catalina.realm
Class UserDatabaseRealm
- java.lang.Object
-
- org.apache.catalina.util.LifecycleBase
-
- org.apache.catalina.util.LifecycleMBeanBase
-
- org.apache.catalina.realm.RealmBase
-
- org.apache.catalina.realm.UserDatabaseRealm
-
- All Implemented Interfaces:
javax.management.MBeanRegistration,Contained,JmxEnabled,Lifecycle,Realm
public class UserDatabaseRealm extends RealmBase
Implementation ofRealmthat is based on an implementation ofUserDatabasemade available through the JNDI resources configured for this instance of Catalina. Set theresourceNameparameter to the JNDI resources name for the configured instance ofUserDatabasethat we should consult.- Since:
- 4.1
- Author:
- Craig R. McClanahan
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classUserDatabaseRealm.UserDatabasePrincipal-
Nested classes/interfaces inherited from class org.apache.catalina.realm.RealmBase
RealmBase.AllRolesMode
-
Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle
Lifecycle.SingleUse
-
-
Field Summary
Fields Modifier and Type Field Description protected UserDatabasedatabaseTheUserDatabasewe will use to authenticate users and identify associated roles.protected java.lang.StringresourceNameThe global JNDI name of theUserDatabaseresource we will be utilizing.-
Fields inherited from class org.apache.catalina.realm.RealmBase
allRolesMode, container, containerLog, realmPath, sm, stripRealmForGss, support, validate, x509UsernameRetriever, x509UsernameRetrieverClassName
-
Fields inherited from class org.apache.catalina.util.LifecycleMBeanBase
mserver
-
Fields inherited from interface org.apache.catalina.Lifecycle
AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT
-
-
Constructor Summary
Constructors Constructor Description UserDatabaseRealm()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidbackgroundProcess()Execute a periodic task, such as reloading, etc.booleangetLocalJndiResource()Determines whether this Realm is configured to obtain the associatedUserDatabasefrom the global JNDI context or a local (web application) JNDI context.protected java.lang.StringgetPassword(java.lang.String username)Return the password associated with the given principal's user name.protected java.security.PrincipalgetPrincipal(java.lang.String username)Return the Principal associated with the given user name.java.lang.StringgetResourceName()static java.lang.String[]getRoles(User user)booleangetUseStaticPrincipal()booleanisAvailable()Return the availability of the realm for authentication.voidsetLocalJndiResource(boolean localJndiResource)Configure whether this Realm obtains the associatedUserDatabasefrom the global JNDI context or a local (web application) JNDI context.voidsetResourceName(java.lang.String resourceName)Set the global JNDI name of theUserDatabaseresource we will be using.voidsetUseStaticPrincipal(boolean useStaticPrincipal)Allows using a static principal disconnected from the user database.protected voidstartInternal()Prepare for the beginning of active use of the public methods of this component and implement the requirements ofLifecycleBase.startInternal().protected voidstopInternal()Gracefully terminate the active use of the public methods of this component and implement the requirements ofLifecycleBase.stopInternal().-
Methods inherited from class org.apache.catalina.realm.RealmBase
addPropertyChangeListener, authenticate, authenticate, authenticate, authenticate, authenticate, authenticate, findSecurityConstraints, getAllRolesMode, getContainer, getCredentialHandler, getDigest, getDomainInternal, getObjectNameKeyProperties, getPrincipal, getPrincipal, getPrincipal, getRealmPath, getRealmSuffix, getRoles, getServer, getTransportGuaranteeRedirectStatus, getValidate, getX509UsernameRetrieverClassName, hasMessageDigest, hasResourcePermission, hasRole, hasRoleInternal, hasUserDataPermission, initInternal, isStripRealmForGss, main, removePropertyChangeListener, setAllRolesMode, setContainer, setCredentialHandler, setRealmPath, setStripRealmForGss, setTransportGuaranteeRedirectStatus, setValidate, setX509UsernameRetrieverClassName, toString
-
Methods inherited from class org.apache.catalina.util.LifecycleMBeanBase
destroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister, unregister
-
Methods inherited from class org.apache.catalina.util.LifecycleBase
addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop
-
-
-
-
Field Detail
-
database
protected volatile UserDatabase database
TheUserDatabasewe will use to authenticate users and identify associated roles.
-
resourceName
protected java.lang.String resourceName
The global JNDI name of theUserDatabaseresource we will be utilizing.
-
-
Method Detail
-
getResourceName
public java.lang.String getResourceName()
- Returns:
- the global JNDI name of the
UserDatabaseresource we will be using.
-
setResourceName
public void setResourceName(java.lang.String resourceName)
Set the global JNDI name of theUserDatabaseresource we will be using.- Parameters:
resourceName- The new global JNDI name
-
getUseStaticPrincipal
public boolean getUseStaticPrincipal()
- Returns:
- the useStaticPrincipal flag
-
setUseStaticPrincipal
public void setUseStaticPrincipal(boolean useStaticPrincipal)
Allows using a static principal disconnected from the user database.- Parameters:
useStaticPrincipal- the new value
-
getLocalJndiResource
public boolean getLocalJndiResource()
Determines whether this Realm is configured to obtain the associatedUserDatabasefrom the global JNDI context or a local (web application) JNDI context.- Returns:
trueif a local JNDI context will be used,falseif the the global JNDI context will be used
-
setLocalJndiResource
public void setLocalJndiResource(boolean localJndiResource)
Configure whether this Realm obtains the associatedUserDatabasefrom the global JNDI context or a local (web application) JNDI context.- Parameters:
localJndiResource-trueto use a local JNDI context,falseto use the global JNDI context
-
backgroundProcess
public void backgroundProcess()
Description copied from class:RealmBaseExecute a periodic task, such as reloading, etc. This method will be invoked inside the classloading context of this container. Unexpected throwables will be caught and logged.- Specified by:
backgroundProcessin interfaceRealm- Overrides:
backgroundProcessin classRealmBase
-
getPassword
protected java.lang.String getPassword(java.lang.String username)
Return the password associated with the given principal's user name.- Specified by:
getPasswordin classRealmBase- Parameters:
username- The user name- Returns:
- the password associated with the given principal's user name.
-
getRoles
public static java.lang.String[] getRoles(User user)
-
getPrincipal
protected java.security.Principal getPrincipal(java.lang.String username)
Return the Principal associated with the given user name.- Specified by:
getPrincipalin classRealmBase- Parameters:
username- The user name- Returns:
- the Principal associated with the given user name.
-
startInternal
protected void startInternal() throws LifecycleExceptionDescription copied from class:RealmBasePrepare for the beginning of active use of the public methods of this component and implement the requirements ofLifecycleBase.startInternal().- Overrides:
startInternalin classRealmBase- Throws:
LifecycleException- if this component detects a fatal error that prevents this component from being used
-
stopInternal
protected void stopInternal() throws LifecycleExceptionGracefully terminate the active use of the public methods of this component and implement the requirements ofLifecycleBase.stopInternal().- Overrides:
stopInternalin classRealmBase- Throws:
LifecycleException- if this component detects a fatal error that needs to be reported
-
isAvailable
public boolean isAvailable()
Description copied from interface:RealmReturn the availability of the realm for authentication.- Returns:
trueif the realm is able to perform authentication
-
-