FileDocCategorySizeDatePackage
JDBCLoginModule.javaAPI DocGlassfish v2 API4151Fri May 04 22:35:26 BST 2007com.sun.enterprise.security.auth.login

JDBCLoginModule

public class JDBCLoginModule extends com.sun.enterprise.security.auth.login.PasswordLoginModule
This class implement a JDBC Login module for Glassfish. The work is derivated from Sun's sample JDBC login module. Enhancement has been done to use latest features. sample setting in server.xml for JDBCLoginModule
author
Jean-Baptiste Bugeaud

Fields Summary
Constructors Summary
Methods Summary
protected voidauthenticate()
Perform JDBC authentication. Delegates to JDBCRealm.

throws
LoginException If login fails (JAAS login() behavior).

        if (!(_currentRealm instanceof JDBCRealm)) {
            String msg = sm.getString("jdbclm.badrealm");
            throw new LoginException(msg);
        }
        
        final JDBCRealm jdbcRealm = (JDBCRealm)_currentRealm;

        // A JDBC user must have a name not null and non-empty.
        if ( (_username == null) || (_username.length() == 0) ) {
            String msg = sm.getString("jdbclm.nulluser");
            throw new LoginException(msg);
        }
        
        String[] grpList = jdbcRealm.authenticate(_username, _password);

        if (grpList == null) {  // JAAS behavior
            String msg = sm.getString("jdbclm.loginfail", _username);
            throw new LoginException(msg);
        }

        if (_logger.isLoggable(Level.FINEST)) {
            _logger.finest("JDBC login succeeded for: " + _username
                + " groups:" + grpList);
        }

        //make a copy of groupList to pass to LoginModule. This copy is the one
        // that will be made null there. DO NOT PASS the grpList as is - as 
        // it will get overwritten. Resulting in logins passing only once.
        final String[] groupListToForward = new String[grpList.length];
        System.arraycopy(grpList, 0, groupListToForward, 0, grpList.length);

        commitAuthentication(_username, _password,
                             _currentRealm, groupListToForward);