@Override public boolean login() throws LoginException { Callback[] callbacks = new Callback[2]; callbacks[0] = new NameCallback("Username: "******"Password: "******" not available to obtain information from user"); } user = ((NameCallback) callbacks[0]).getName(); char[] tmpPassword = ((PasswordCallback) callbacks[1]).getPassword(); if (tmpPassword == null) { tmpPassword = new char[0]; } if (user == null) { if (configuration.getDefaultUser() == null) { throw new FailedLoginException("Both username and defaultUser are null"); } else { user = configuration.getDefaultUser(); } } else { String password = configuration.getUser(user) == null ? null : configuration.getUser(user).getPassword(); if (password == null) { throw new FailedLoginException("User does not exist"); } if (!password.equals(new String(tmpPassword))) { throw new FailedLoginException("Password does not match"); } } loginSucceeded = true; logger.debug("login " + user); return loginSucceeded; }
@Override public boolean commit() throws LoginException { boolean result = loginSucceeded; if (result) { principals.add(new UserPrincipal(user)); List<String> roles = configuration.getRole(user); if (roles != null) { for (String role : roles) { principals.add(new RolePrincipal(role)); } } subject.getPrincipals().addAll(principals); } // will whack loginSucceeded clear(); logger.debug("commit, result: " + result); return result; }