Perform JDBC authentication. Delegates to JDBCRealm.
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);