Package org.apache.catalina.realm
Class DataSourceRealm
- java.lang.Object
- 
- org.apache.catalina.util.LifecycleBase
- 
- org.apache.catalina.util.LifecycleMBeanBase
- 
- org.apache.catalina.realm.RealmBase
- 
- org.apache.catalina.realm.DataSourceRealm
 
 
 
 
- 
- All Implemented Interfaces:
- javax.management.MBeanRegistration,- Contained,- GSSRealm,- JmxEnabled,- Lifecycle,- Realm
 
 public class DataSourceRealm extends RealmBase Implementation of Realm that works with any JDBC JNDI DataSource. See the Realm How-To for more details on how to set up the database and for configuration options.- Author:
- Glenn L. Nielsen, Craig R. McClanahan, Carson McDonald, Ignacio Ortega
 
- 
- 
Nested Class Summary- 
Nested classes/interfaces inherited from class org.apache.catalina.realm.RealmBaseRealmBase.AllRolesMode
 - 
Nested classes/interfaces inherited from interface org.apache.catalina.LifecycleLifecycle.SingleUse
 
- 
 - 
Field SummaryFields Modifier and Type Field Description protected java.lang.StringdataSourceNameThe name of the JNDI JDBC DataSourceprotected booleanlocalDataSourceContext local datasource.protected static java.lang.StringnameDeprecated.This will be removed in Tomcat 9 onwards.protected java.lang.StringroleNameColThe column in the user role table that names a roleprotected java.lang.StringuserCredColThe column in the user table that holds the user's credentialsprotected java.lang.StringuserNameColThe column in the user table that holds the user's nameprotected java.lang.StringuserRoleTableThe table that holds the relation between user's and rolesprotected java.lang.StringuserTableThe table that holds user data.- 
Fields inherited from class org.apache.catalina.realm.RealmBaseallRolesMode, container, containerLog, realmPath, sm, stripRealmForGss, support, validate, x509UsernameRetriever, x509UsernameRetrieverClassName
 - 
Fields inherited from class org.apache.catalina.util.LifecycleMBeanBasemserver
 - 
Fields inherited from interface org.apache.catalina.LifecycleAFTER_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 SummaryConstructors Constructor Description DataSourceRealm()
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description java.security.Principalauthenticate(java.lang.String username, java.lang.String credentials)Return the Principal associated with the specified username and credentials, if there is one; otherwise returnnull.protected java.security.Principalauthenticate(java.sql.Connection dbConnection, java.lang.String username, java.lang.String credentials)Return the Principal associated with the specified username and credentials, if there is one; otherwise returnnull.protected voidclose(java.sql.Connection dbConnection)Close the specified database connection.java.lang.StringgetDataSourceName()booleangetLocalDataSource()protected java.lang.StringgetName()Deprecated.protected java.lang.StringgetPassword(java.lang.String username)Get the password for the specified user.protected java.lang.StringgetPassword(java.sql.Connection dbConnection, 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.StringgetRoleNameCol()protected java.util.ArrayList<java.lang.String>getRoles(java.lang.String username)Return the roles associated with the given user name.protected java.util.ArrayList<java.lang.String>getRoles(java.sql.Connection dbConnection, java.lang.String username)Return the roles associated with the given user name.java.lang.StringgetUserCredCol()java.lang.StringgetUserNameCol()java.lang.StringgetUserRoleTable()java.lang.StringgetUserTable()booleanisAvailable()Return the availability of the realm for authentication.protected java.sql.Connectionopen()Open the specified database connection.voidsetDataSourceName(java.lang.String dataSourceName)Set the name of the JNDI JDBC DataSource.voidsetLocalDataSource(boolean localDataSource)Set to true to cause the datasource to be looked up in the webapp JNDI Context.voidsetRoleNameCol(java.lang.String roleNameCol)Set the column in the user role table that names a role.voidsetUserCredCol(java.lang.String userCredCol)Set the column in the user table that holds the user's credentials.voidsetUserNameCol(java.lang.String userNameCol)Set the column in the user table that holds the user's name.voidsetUserRoleTable(java.lang.String userRoleTable)Set the table that holds the relation between user's and roles.voidsetUserTable(java.lang.String userTable)Set the table that holds user data.protected voidstartInternal()Prepare for the beginning of active use of the public methods of this component and implement the requirements ofLifecycleBase.startInternal().- 
Methods inherited from class org.apache.catalina.realm.RealmBaseaddPropertyChangeListener, authenticate, authenticate, authenticate, authenticate, authenticate, backgroundProcess, Digest, 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, stopInternal, toString
 - 
Methods inherited from class org.apache.catalina.util.LifecycleMBeanBasedestroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister
 - 
Methods inherited from class org.apache.catalina.util.LifecycleBaseaddLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop
 
- 
 
- 
- 
- 
Field Detail- 
dataSourceNameprotected java.lang.String dataSourceName The name of the JNDI JDBC DataSource
 - 
localDataSourceprotected boolean localDataSource Context local datasource.
 - 
name@Deprecated protected static final java.lang.String name Deprecated.This will be removed in Tomcat 9 onwards.Descriptive information about this Realm implementation.- See Also:
- Constant Field Values
 
 - 
roleNameColprotected java.lang.String roleNameCol The column in the user role table that names a role
 - 
userCredColprotected java.lang.String userCredCol The column in the user table that holds the user's credentials
 - 
userNameColprotected java.lang.String userNameCol The column in the user table that holds the user's name
 - 
userRoleTableprotected java.lang.String userRoleTable The table that holds the relation between user's and roles
 - 
userTableprotected java.lang.String userTable The table that holds user data.
 
- 
 - 
Method Detail- 
getDataSourceNamepublic java.lang.String getDataSourceName() - Returns:
- the name of the JNDI JDBC DataSource.
 
 - 
setDataSourceNamepublic void setDataSourceName(java.lang.String dataSourceName) Set the name of the JNDI JDBC DataSource.- Parameters:
- dataSourceName- the name of the JNDI JDBC DataSource
 
 - 
getLocalDataSourcepublic boolean getLocalDataSource() - Returns:
- if the datasource will be looked up in the webapp JNDI Context.
 
 - 
setLocalDataSourcepublic void setLocalDataSource(boolean localDataSource) Set to true to cause the datasource to be looked up in the webapp JNDI Context.- Parameters:
- localDataSource- the new flag value
 
 - 
getRoleNameColpublic java.lang.String getRoleNameCol() - Returns:
- the column in the user role table that names a role.
 
 - 
setRoleNameColpublic void setRoleNameCol(java.lang.String roleNameCol) Set the column in the user role table that names a role.- Parameters:
- roleNameCol- The column name
 
 - 
getUserCredColpublic java.lang.String getUserCredCol() - Returns:
- the column in the user table that holds the user's credentials.
 
 - 
setUserCredColpublic void setUserCredCol(java.lang.String userCredCol) Set the column in the user table that holds the user's credentials.- Parameters:
- userCredCol- The column name
 
 - 
getUserNameColpublic java.lang.String getUserNameCol() - Returns:
- the column in the user table that holds the user's name.
 
 - 
setUserNameColpublic void setUserNameCol(java.lang.String userNameCol) Set the column in the user table that holds the user's name.- Parameters:
- userNameCol- The column name
 
 - 
getUserRoleTablepublic java.lang.String getUserRoleTable() - Returns:
- the table that holds the relation between user's and roles.
 
 - 
setUserRoleTablepublic void setUserRoleTable(java.lang.String userRoleTable) Set the table that holds the relation between user's and roles.- Parameters:
- userRoleTable- The table name
 
 - 
getUserTablepublic java.lang.String getUserTable() - Returns:
- the table that holds user data..
 
 - 
setUserTablepublic void setUserTable(java.lang.String userTable) Set the table that holds user data.- Parameters:
- userTable- The table name
 
 - 
authenticatepublic java.security.Principal authenticate(java.lang.String username, java.lang.String credentials)Return the Principal associated with the specified username and credentials, if there is one; otherwise returnnull. If there are any errors with the JDBC connection, executing the query or anything we return null (don't authenticate). This event is also logged, and the connection will be closed so that a subsequent request will automatically re-open it.- Specified by:
- authenticatein interface- Realm
- Overrides:
- authenticatein class- RealmBase
- Parameters:
- username- Username of the Principal to look up
- credentials- Password or other credentials to use in authenticating this username
- Returns:
- the associated principal, or nullif there is none.
 
 - 
isAvailablepublic boolean isAvailable() Description copied from interface:RealmReturn the availability of the realm for authentication.- Specified by:
- isAvailablein interface- Realm
- Overrides:
- isAvailablein class- RealmBase
- Returns:
- trueif the realm is able to perform authentication
 
 - 
authenticateprotected java.security.Principal authenticate(java.sql.Connection dbConnection, java.lang.String username, java.lang.String credentials)Return the Principal associated with the specified username and credentials, if there is one; otherwise returnnull.- Parameters:
- dbConnection- The database connection to be used
- username- Username of the Principal to look up
- credentials- Password or other credentials to use in authenticating this username
- Returns:
- the associated principal, or nullif there is none.
 
 - 
closeprotected void close(java.sql.Connection dbConnection) Close the specified database connection.- Parameters:
- dbConnection- The connection to be closed
 
 - 
openprotected java.sql.Connection open() Open the specified database connection.- Returns:
- Connection to the database
 
 - 
getName@Deprecated protected java.lang.String getName() Deprecated.
 - 
getPasswordprotected java.lang.String getPassword(java.lang.String username) Description copied from class:RealmBaseGet the password for the specified user.- Specified by:
- getPasswordin class- RealmBase
- Parameters:
- username- The user name
- Returns:
- the password associated with the given principal's user name.
 
 - 
getPasswordprotected java.lang.String getPassword(java.sql.Connection dbConnection, java.lang.String username)Return the password associated with the given principal's user name.- Parameters:
- dbConnection- The database connection to be used
- username- Username for which password should be retrieved
- Returns:
- the password for the specified user
 
 - 
getPrincipalprotected java.security.Principal getPrincipal(java.lang.String username) Return the Principal associated with the given user name.- Specified by:
- getPrincipalin class- RealmBase
- Parameters:
- username- the user name
- Returns:
- the principal object
 
 - 
getRolesprotected java.util.ArrayList<java.lang.String> getRoles(java.lang.String username) Return the roles associated with the given user name.- Parameters:
- username- User name for which roles should be retrieved
- Returns:
- an array list of the role names
 
 - 
getRolesprotected java.util.ArrayList<java.lang.String> getRoles(java.sql.Connection dbConnection, java.lang.String username)Return the roles associated with the given user name.- Parameters:
- dbConnection- The database connection to be used
- username- User name for which roles should be retrieved
- Returns:
- an array list of the role names
 
 - 
startInternalprotected void startInternal() throws LifecycleExceptionPrepare for the beginning of active use of the public methods of this component and implement the requirements ofLifecycleBase.startInternal().- Overrides:
- startInternalin class- RealmBase
- Throws:
- LifecycleException- if this component detects a fatal error that prevents this component from being used
 
 
- 
 
-