Save This Page
Home » apache-tomcat-6.0.16-src » org.apache » catalina » realm » [javadoc | source]
org.apache.catalina.realm
public class: JAASRealm [javadoc | source]
java.lang.Object
   org.apache.catalina.realm.RealmBase
      org.apache.catalina.realm.JAASRealm

All Implemented Interfaces:
    Realm, MBeanRegistration, Lifecycle

Implmentation of Realm that authenticates users via the Java Authentication and Authorization Service (JAAS). JAAS support requires either JDK 1.4 (which includes it as part of the standard platform) or JDK 1.3 (with the plug-in jaas.jar file).

The value configured for the appName property is passed to the javax.security.auth.login.LoginContext constructor, to specify the application name used to select the set of relevant LoginModules required.

The JAAS Specification describes the result of a successful login as a javax.security.auth.Subject instance, which can contain zero or more java.security.Principal objects in the return value of the Subject.getPrincipals() method. However, it provides no guidance on how to distinguish Principals that describe the individual user (and are thus appropriate to return as the value of request.getUserPrincipal() in a web application) from the Principal(s) that describe the authorized roles for this user. To maintain as much independence as possible from the underlying LoginMethod implementation executed by JAAS, the following policy is implemented by this Realm:

Field Summary
protected  String appName    The application name passed to the JAAS LoginContext, which uses it to select the set of relevant LoginModules. 
protected static final  String info    Descriptive information about this Realm implementation. 
protected static final  String name    Descriptive information about this Realm implementation. 
protected  List roleClasses    The list of role class names, split out for easy processing. 
protected static final  StringManager sm    The string manager for this package. 
protected  List userClasses    The set of user class names, split out for easy processing. 
protected  boolean useContextClassLoader    Whether to use context ClassLoader or default ClassLoader. True means use context ClassLoader, and True is the default value. 
protected  String roleClassNames    Comma-delimited list of java.security.Principal classes that represent security roles. 
protected  String userClassNames    Comma-delimited list of java.security.Principal classes that represent individual users. 
Fields inherited from org.apache.catalina.realm.RealmBase:
container,  containerLog,  digest,  digestEncoding,  info,  lifecycle,  md,  md5Encoder,  md5Helper,  sm,  started,  support,  validate,  allRolesMode,  type,  domain,  host,  path,  oname,  controller,  mserver,  initialized
Method from org.apache.catalina.realm.JAASRealm Summary:
authenticate,   createPrincipal,   getAppName,   getName,   getPassword,   getPrincipal,   getRoleClassNames,   getUserClassNames,   isUseContextClassLoader,   makeLegalForJAAS,   parseClassNames,   setAppName,   setContainer,   setRoleClassNames,   setUseContextClassLoader,   setUserClassNames,   start,   stop
Methods from org.apache.catalina.realm.RealmBase:
Digest,   addLifecycleListener,   addPropertyChangeListener,   authenticate,   authenticate,   authenticate,   authenticate,   backgroundProcess,   destroy,   digest,   findLifecycleListeners,   findSecurityConstraints,   getAllRolesMode,   getContainer,   getController,   getDigest,   getDigest,   getDigestEncoding,   getDomain,   getInfo,   getName,   getObjectName,   getPassword,   getPrincipal,   getPrincipal,   getType,   getValidate,   hasMessageDigest,   hasResourcePermission,   hasRole,   hasUserDataPermission,   init,   main,   postDeregister,   postRegister,   preDeregister,   preRegister,   removeLifecycleListener,   removePropertyChangeListener,   setAllRolesMode,   setContainer,   setController,   setDigest,   setDigestEncoding,   setValidate,   start,   stop
Methods from java.lang.Object:
equals,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from org.apache.catalina.realm.JAASRealm Detail:
 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.
 protected Principal createPrincipal(String username,
    Subject subject) 
    Identify and return a java.security.Principal instance representing the authenticated user for the specified Subject. The Principal is constructed by scanning the list of Principals returned by the JAASLoginModule. The first Principal object that matches one of the class names supplied as a "user class" is the user Principal. This object is returned to tha caller. Any remaining principal objects returned by the LoginModules are mapped to roles, but only if their respective classes match one of the "role class" classes. If a user Principal cannot be constructed, return null.
 public String getAppName() 
    getter for the appName member variable
 protected String getName() 
    Return a short name for this Realm implementation.
 protected String getPassword(String username) 
    Return the password associated with the given principal's user name.
 protected Principal getPrincipal(String username) 
    Return the Principal associated with the given user name.
 public String getRoleClassNames() 
 public String getUserClassNames() 
 public boolean isUseContextClassLoader() 
    Returns whether to use the context or default ClassLoader. True means to use the context ClassLoader.
 protected String makeLegalForJAAS(String src) 
    Ensure the given name is legal for JAAS configuration. Added for Bugzilla 30869, made protected for easy customization in case my implementation is insufficient, which I think is very likely.
 protected  void parseClassNames(String classNamesString,
    List classNamesList) 
    Parses a comma-delimited list of class names, and store the class names in the provided List. Each class must implement java.security.Principal.
 public  void setAppName(String name) 
Deprecated! JAAS - should use the Engine (domain) name and webpp/host overrides

    setter for the appName member variable
 public  void setContainer(Container container) 
 public  void setRoleClassNames(String roleClassNames) 
    Sets the list of comma-delimited classes that represent roles. The classes in the list must implement java.security.Principal. The supplied list of classes will be parsed when #start() is called.
 public  void setUseContextClassLoader(boolean useContext) 
    Sets whether to use the context or default ClassLoader. True means use context ClassLoader.
 public  void setUserClassNames(String userClassNames) 
    Sets the list of comma-delimited classes that represent individual users. The classes in the list must implement java.security.Principal. The supplied list of classes will be parsed when #start() is called.
 public  void start() throws LifecycleException 
    Prepare for active use of the public methods of this Component.
 public  void stop() throws LifecycleException 
    Gracefully shut down active use of the public methods of this Component.