Class AbstractLoginModule

java.lang.Object
org.apache.jackrabbit.oak.spi.security.authentication.AbstractLoginModule
All Implemented Interfaces:
LoginModule

@ProviderType public abstract class AbstractLoginModule extends Object implements LoginModule
Abstract implementation of the LoginModule interface that can act as base class for login modules that aim to authenticate subjects against information stored in the content repository.

LoginModule Methods

This base class provides a simple implementation for the following methods of the LoginModule interface:

  • Initialize: Initialization of this abstract module sets the following protected instance fields:
    • subject: The subject to be authenticated,
    • callbackHandler: The callback handler passed to the login module,
    • shareState: The map used to share state information with other login modules,
    • options: The configuration options of this login module as specified in the Configuration.
  • Logout: If the authenticated subject is not empty this logout implementation attempts to clear both principals and public credentials and returns true.
  • Abort: Clears the state of this login module by setting all private instance variables created in phase 1 or 2 to null. Subclasses are in charge of releasing their own state information by either overriding clearState().

Utility Methods

The following methods are provided in addition:

  • clearState(): Clears all private state information that has be created during login. This method in called in abort() and subclasses are expected to override this method.
  • getSupportedCredentials(): Abstract method used by getCredentials() that reveals which credential implementations are supported by the LoginModule.
  • getCredentials(): Tries to retrieve valid (supported) Credentials in the following order:
    1. using a CredentialsCallback,
    2. looking for a SHARED_KEY_CREDENTIALS entry in the shared state (see also getSharedCredentials() and finally by
    3. searching for valid credentials in the subject.
  • getSharedCredentials(): This method returns credentials passed to the login module with the share state. The key to share credentials with a another module extending from this base class is SHARED_KEY_CREDENTIALS. Note, that this method does not verify if the credentials provided by the shared state are supported.
  • getSharedLoginName(): If the shared state contains an entry for SHARED_KEY_LOGIN_NAME this method returns the value as login name.
  • getSecurityProvider(): Returns the configured security provider or null.
  • getRoot(): Provides access to the latest state of the repository in order to retrieve user or principal information required to authenticate the subject as well as to write back information during LoginModule.commit().
  • getUserManager(): Returns an instance of the configured UserManager or null.
  • getPrincipalProvider(): Returns an instance of the configured principal provider or null.
  • getPrincipals(String): Utility that returns all principals associated with a given user id. This method might be be called after successful authentication in order to be able to populate the subject during LoginModule.commit(). The implementation is a shortcut for calling getPrincipals(String userId on the provider exposed by getPrincipalProvider()
  • Field Details

    • SHARED_KEY_CREDENTIALS

      public static final String SHARED_KEY_CREDENTIALS
      Key of the sharedState entry referring to validated Credentials that is shared between multiple login modules.
      See Also:
    • SHARED_KEY_LOGIN_NAME

      public static final String SHARED_KEY_LOGIN_NAME
      Key of the sharedState entry referring to a valid login ID that is shared between multiple login modules.
      See Also:
    • SHARED_KEY_ATTRIBUTES

      public static final String SHARED_KEY_ATTRIBUTES
      Key of the sharedState entry referring to public attributes that are shared between multiple login modules.
      See Also:
    • SHARED_KEY_PRE_AUTH_LOGIN

      public static final String SHARED_KEY_PRE_AUTH_LOGIN
      Key of the sharedState entry referring to pre authenticated login information that is shared between multiple login modules.
  • Constructor Details

    • AbstractLoginModule

      public AbstractLoginModule()
  • Method Details