@Override public boolean authenticate(String username, String password) { init(); for (SourceInfo sourceInfo : sourceInfos) { for (SubDirectoryInfo dirInfo : sourceInfo.subDirectoryInfos) { if (!dirInfo.isAuthenticating) { continue; } if (dirInfo.getSession().authenticate(username, password)) { return true; } if (dirInfo.isOptional && dirInfo.getSession().getEntry(username) == null) { // check if given password equals to default value String passwordField = dirInfo.getSession().getPasswordField(); String defaultPassword = (String) dirInfo.defaultEntry.get(passwordField); if (defaultPassword != null && defaultPassword.equals(password)) { return true; } } } } return false; }