Class DefaultAuthenticator

  • All Implemented Interfaces:
    Authenticator

    public class DefaultAuthenticator
    extends java.lang.Object
    implements Authenticator
    Default authenticator implementation.

    When client connectionInfo contains property AUTHREALM={realName} credentials (typically user id and password) are validated by CredentialsValidator configured for that realm.

    When client connectionInfo doesn't contains AUTHREALM property credentials are validated internally on the database

    Rights assignment can be managed through UserToRolesMapper

    Default configuration has a realm H2 that validate credentials through JAAS api (appName=h2). To customize configuration set h2.authConfigFile system property to refer a valid h2auth.xml config file

    • Field Detail

      • DEFAULT_REALMNAME

        public static final java.lang.String DEFAULT_REALMNAME
        See Also:
        Constant Field Values
      • allowUserRegistration

        private boolean allowUserRegistration
      • persistUsers

        private boolean persistUsers
      • createMissingRoles

        private boolean createMissingRoles
      • skipDefaultInitialization

        private boolean skipDefaultInitialization
      • initialized

        private boolean initialized
    • Constructor Detail

      • DefaultAuthenticator

        public DefaultAuthenticator()
        Create the Authenticator with default configurations
      • DefaultAuthenticator

        public DefaultAuthenticator​(boolean skipDefaultInitialization)
        Create authenticator and optionally skip the default configuration. This option is useful when the authenticator is configured at code level
        Parameters:
        skipDefaultInitialization - if true default initialization is skipped
    • Method Detail

      • isPersistUsers

        public boolean isPersistUsers()
        If set save users externals defined during the authentication.
        Returns:
        true if user will be persisted, otherwise returns false
      • setPersistUsers

        public void setPersistUsers​(boolean persistUsers)
        If set to true saves users externals defined during the authentication.
        Parameters:
        persistUsers - true if user will be persisted, otherwise false.
      • isAllowUserRegistration

        public boolean isAllowUserRegistration()
        If set create external users in the database if not present.
        Returns:
        true if creation external user is allowed, otherwise returns false
      • setAllowUserRegistration

        public void setAllowUserRegistration​(boolean allowUserRegistration)
        If set totrue creates external users in the database if not present.
        Parameters:
        allowUserRegistration - true if creation external user is allowed, otherwise returns false
      • isCreateMissingRoles

        public boolean isCreateMissingRoles()
        When set create roles not found in the database. If not set roles not found in the database are silently skipped.
        Returns:
        true if not found roles will be created, false roles are silently skipped.
      • setCreateMissingRoles

        public void setCreateMissingRoles​(boolean createMissingRoles)
        Sets the flag that define behavior in case external roles not found in the database.
        Parameters:
        createMissingRoles - when is true not found roles are created, when is false roles are silently skipped.
      • addRealm

        public void addRealm​(java.lang.String name,
                             CredentialsValidator credentialsValidator)
        Add an authentication realm. Realms are case insensitive
        Parameters:
        name - realm name
        credentialsValidator - credentials validator for realm
      • getUserToRolesMappers

        public java.util.List<UserToRolesMapper> getUserToRolesMappers()
        UserToRoleMappers assign roles to authenticated users
        Returns:
        current UserToRoleMappers active
      • setUserToRolesMappers

        public void setUserToRolesMappers​(UserToRolesMapper... userToRolesMappers)
      • init

        public void init​(Database database)
                  throws AuthConfigException
        Initializes the authenticator. this method is skipped if skipDefaultInitialization is set Order of initialization is
        1. Check h2.authConfigFile system property.
        2. Use the default configuration hard coded
        Specified by:
        init in interface Authenticator
        Parameters:
        database - where authenticator is initialized
        Throws:
        AuthConfigException
      • defaultConfiguration

        private void defaultConfiguration()
      • configureFromUrl

        public void configureFromUrl​(java.net.URL configUrl)
                              throws AuthenticationException,
                                     org.xml.sax.SAXException,
                                     java.io.IOException,
                                     javax.xml.parsers.ParserConfigurationException
        Configure the authenticator from a configuration file
        Parameters:
        configUrl - URL of configuration file
        Throws:
        AuthenticationException - on failure
        org.xml.sax.SAXException - on failure
        java.io.IOException - on failure
        javax.xml.parsers.ParserConfigurationException - on failure