org.apache.catalina.realm

Class DataSourceRealm

public class DataSourceRealm extends RealmBase

Implmentation of Realm that works with any JDBC JNDI DataSource. See the JDBCRealm.howto for more details on how to set up the database and for configuration options.

Version: $Revision: 892553 $

Author: Glenn L. Nielsen Craig R. McClanahan Carson McDonald Ignacio Ortega

Field Summary
protected StringdataSourceName
The name of the JNDI JDBC DataSource
protected static Stringinfo
Descriptive information about this Realm implementation.
protected booleanlocalDataSource
Context local datasource.
protected static Stringname
Descriptive information about this Realm implementation.
protected StringroleNameCol
The column in the user role table that names a role
protected static StringManagersm
The string manager for this package.
protected StringuserCredCol
The column in the user table that holds the user's credintials
protected StringuserNameCol
The column in the user table that holds the user's name
protected StringuserRoleTable
The table that holds the relation between user's and roles
protected StringuserTable
The table that holds user data.
Method Summary
Principalauthenticate(String username, String credentials)
Return the Principal associated with the specified username and credentials, if there is one; otherwise return null.
protected Principalauthenticate(Connection dbConnection, String username, String credentials)
Return the Principal associated with the specified username and credentials, if there is one; otherwise return null.
protected voidclose(Connection dbConnection)
Close the specified database connection.
StringgetDataSourceName()
Return the name of the JNDI JDBC DataSource.
booleangetLocalDataSource()
Return if the datasource will be looked up in the webapp JNDI Context.
protected StringgetName()
Return a short name for this Realm implementation.
protected StringgetPassword(String username)
Return the password associated with the given principal's user name.
protected StringgetPassword(Connection dbConnection, String username)
Return the password associated with the given principal's user name.
protected PrincipalgetPrincipal(String username)
Return the Principal associated with the given user name.
StringgetRoleNameCol()
Return the column in the user role table that names a role.
protected ArrayListgetRoles(String username)
Return the roles associated with the given user name.
protected ArrayList<String>getRoles(Connection dbConnection, String username)
Return the roles associated with the given user name
StringgetUserCredCol()
Return the column in the user table that holds the user's credentials.
StringgetUserNameCol()
Return the column in the user table that holds the user's name.
StringgetUserRoleTable()
Return the table that holds the relation between user's and roles.
StringgetUserTable()
Return the table that holds user data..
protected Connectionopen()
Open the specified database connection.
voidsetDataSourceName(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(String roleNameCol)
Set the column in the user role table that names a role.
voidsetUserCredCol(String userCredCol)
Set the column in the user table that holds the user's credentials.
voidsetUserNameCol(String userNameCol)
Set the column in the user table that holds the user's name.
voidsetUserRoleTable(String userRoleTable)
Set the table that holds the relation between user's and roles.
voidsetUserTable(String userTable)
Set the table that holds user data.
voidstart()
Prepare for active use of the public methods of this Component.
voidstop()
Gracefully shut down active use of the public methods of this Component.

Field Detail

dataSourceName

protected String dataSourceName
The name of the JNDI JDBC DataSource

info

protected static final String info
Descriptive information about this Realm implementation.

localDataSource

protected boolean localDataSource
Context local datasource.

name

protected static final String name
Descriptive information about this Realm implementation.

roleNameCol

protected String roleNameCol
The column in the user role table that names a role

sm

protected static final StringManager sm
The string manager for this package.

userCredCol

protected String userCredCol
The column in the user table that holds the user's credintials

userNameCol

protected String userNameCol
The column in the user table that holds the user's name

userRoleTable

protected String userRoleTable
The table that holds the relation between user's and roles

userTable

protected String userTable
The table that holds user data.

Method Detail

authenticate

public Principal authenticate(String username, String credentials)
Return the Principal associated with the specified username and credentials, if there is one; otherwise return null. 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.

Parameters: username Username of the Principal to look up credentials Password or other credentials to use in authenticating this username

authenticate

protected Principal authenticate(Connection dbConnection, String username, String credentials)
Return the Principal associated with the specified username and credentials, if there is one; otherwise return null.

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

close

protected void close(Connection dbConnection)
Close the specified database connection.

Parameters: dbConnection The connection to be closed

getDataSourceName

public String getDataSourceName()
Return the name of the JNDI JDBC DataSource.

getLocalDataSource

public boolean getLocalDataSource()
Return if the datasource will be looked up in the webapp JNDI Context.

getName

protected String getName()
Return a short name for this Realm implementation.

getPassword

protected String getPassword(String username)
Return the password associated with the given principal's user name.

getPassword

protected String getPassword(Connection dbConnection, 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

getPrincipal

protected Principal getPrincipal(String username)
Return the Principal associated with the given user name.

getRoleNameCol

public String getRoleNameCol()
Return the column in the user role table that names a role.

getRoles

protected ArrayList getRoles(String username)
Return the roles associated with the given user name.

Parameters: username Username for which roles should be retrieved

getRoles

protected ArrayList<String> getRoles(Connection dbConnection, String username)
Return the roles associated with the given user name

Parameters: dbConnection The database connection to be used username Username for which roles should be retrieved

getUserCredCol

public String getUserCredCol()
Return the column in the user table that holds the user's credentials.

getUserNameCol

public String getUserNameCol()
Return the column in the user table that holds the user's name.

getUserRoleTable

public String getUserRoleTable()
Return the table that holds the relation between user's and roles.

getUserTable

public String getUserTable()
Return the table that holds user data..

open

protected Connection open()
Open the specified database connection.

Returns: Connection to the database

setDataSourceName

public void setDataSourceName(String dataSourceName)
Set the name of the JNDI JDBC DataSource.

Parameters: dataSourceName the name of the JNDI JDBC DataSource

setLocalDataSource

public 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

setRoleNameCol

public void setRoleNameCol(String roleNameCol)
Set the column in the user role table that names a role.

Parameters: roleNameCol The column name

setUserCredCol

public void setUserCredCol(String userCredCol)
Set the column in the user table that holds the user's credentials.

Parameters: userCredCol The column name

setUserNameCol

public void setUserNameCol(String userNameCol)
Set the column in the user table that holds the user's name.

Parameters: userNameCol The column name

setUserRoleTable

public void setUserRoleTable(String userRoleTable)
Set the table that holds the relation between user's and roles.

Parameters: userRoleTable The table name

setUserTable

public void setUserTable(String userTable)
Set the table that holds user data.

Parameters: userTable The table name

start

public void start()
Prepare for active use of the public methods of this Component.

Throws: LifecycleException if this component detects a fatal error that prevents it from being started

stop

public void stop()
Gracefully shut down active use of the public methods of this Component.

Throws: LifecycleException if this component detects a fatal error that needs to be reported

Copyright © 2000-2011 Apache Software Foundation. All Rights Reserved.