org.eclipse.jetty.security
Class JDBCLoginService

java.lang.Object
  extended by org.eclipse.jetty.util.component.AbstractLifeCycle
      extended by org.eclipse.jetty.security.MappedLoginService
          extended by org.eclipse.jetty.security.JDBCLoginService
All Implemented Interfaces:
LoginService, LifeCycle

public class JDBCLoginService
extends MappedLoginService

HashMapped User Realm with JDBC as data source. JDBCLoginService extends HashULoginService and adds a method to fetch user information from database. The login() method checks the inherited Map for the user. If the user is not found, it will fetch details from the database and populate the inherited Map. It then calls the superclass login() method to perform the actual authentication. Periodically (controlled by configuration parameter), internal hashes are cleared. Caching can be disabled by setting cache refresh interval to zero. Uses one database connection that is initialized at startup. Reconnect on failures. authenticate() is 'synchronized'. An example properties file for configuration is in $JETTY_HOME/etc/jdbcRealm.properties

Version:
$Id: JDBCLoginService.java 4792 2009-03-18 21:55:52Z gregw $

Nested Class Summary
 
Nested classes/interfaces inherited from class org.eclipse.jetty.security.MappedLoginService
MappedLoginService.Anonymous, MappedLoginService.KnownUser, MappedLoginService.RolePrincipal, MappedLoginService.UserPrincipal
 
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
LifeCycle.Listener
 
Field Summary
 
Fields inherited from class org.eclipse.jetty.security.MappedLoginService
_identityService, _name, _users
 
Fields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
_listeners, FAILED, RUNNING, STARTED, STARTING, STOPPED, STOPPING
 
Constructor Summary
JDBCLoginService()
           
JDBCLoginService(String name)
           
JDBCLoginService(String name, IdentityService identityService, String config)
           
JDBCLoginService(String name, String config)
           
 
Method Summary
 void connectDatabase()
          (re)Connect to database with parameters setup by loadConfig()
protected  void doStart()
           
 String getConfig()
           
protected  UserIdentity loadUser(String username)
           
protected  void loadUsers()
           
 UserIdentity login(String username, Object credentials)
          Login a user.
 void setConfig(String config)
          Load JDBC connection configuration from properties file.
 
Methods inherited from class org.eclipse.jetty.security.MappedLoginService
doStop, getIdentityService, getName, getUsers, putUser, putUser, removeUser, setIdentityService, setName, setUsers, toString, validate
 
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
addLifeCycleListener, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stop
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

JDBCLoginService

public JDBCLoginService()
                 throws IOException
Throws:
IOException

JDBCLoginService

public JDBCLoginService(String name)
                 throws IOException
Throws:
IOException

JDBCLoginService

public JDBCLoginService(String name,
                        String config)
                 throws IOException
Throws:
IOException

JDBCLoginService

public JDBCLoginService(String name,
                        IdentityService identityService,
                        String config)
                 throws IOException
Throws:
IOException
Method Detail

doStart

protected void doStart()
                throws Exception
Overrides:
doStart in class MappedLoginService
Throws:
Exception
See Also:
MappedLoginService.doStart()

getConfig

public String getConfig()

setConfig

public void setConfig(String config)
Load JDBC connection configuration from properties file.

Parameters:
config - Filename or url of user properties file.
Throws:
IOException

connectDatabase

public void connectDatabase()
(re)Connect to database with parameters setup by loadConfig()


login

public UserIdentity login(String username,
                          Object credentials)
Description copied from interface: LoginService
Login a user.

Specified by:
login in interface LoginService
Overrides:
login in class MappedLoginService
Parameters:
username - The user name
credentials - The users credentials
Returns:
A UserIdentity if the credentials matched, otherwise null
See Also:
LoginService.login(java.lang.String, java.lang.Object)

loadUsers

protected void loadUsers()
Specified by:
loadUsers in class MappedLoginService

loadUser

protected UserIdentity loadUser(String username)
Specified by:
loadUser in class MappedLoginService


Copyright © 1995-2009 Mort Bay Consulting. All Rights Reserved.