@Override public String transform(final String formUserId) { final String result = this.delegateTransformer.transform(formUserId.trim()).trim(); return this.toUpperCase ? result.toUpperCase(): result.toLowerCase(); }
@Override protected TokenCredentials convertToPac4jCredentials(final BasicIdentifiableCredential casCredential) throws GeneralSecurityException, PreventedException { logger.debug("CAS credentials: {}", casCredential); final String id = this.principalNameTransformer.transform(casCredential.getId()); if (id == null) { throw new AccountNotFoundException("Id is null."); } final TokenCredentials credentials = new TokenCredentials(id, getClass().getSimpleName()); logger.debug("pac4j credentials: {}", credentials); return credentials; }
@Override protected UsernamePasswordCredentials convertToPac4jCredentials(final UsernamePasswordCredential casCredential) throws GeneralSecurityException, PreventedException { logger.debug("CAS credentials: {}", casCredential); final String username = this.principalNameTransformer.transform(casCredential.getUsername()); if (username == null) { throw new AccountNotFoundException("Username is null."); } final String password = this.passwordEncoder.encode(casCredential.getPassword()); final UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(username, password, getClass().getSimpleName()); logger.debug("pac4j credentials: {}", credentials); return credentials; }
/** * {@inheritDoc} **/ @Override protected final HandlerResult doAuthentication(final Credential credential) throws GeneralSecurityException, PreventedException { final UsernamePasswordCredential userPass = (UsernamePasswordCredential) credential; if (userPass.getUsername() == null) { throw new AccountNotFoundException("Username is null."); } final String transformedUsername= this.principalNameTransformer.transform(userPass.getUsername()); if (transformedUsername == null) { throw new AccountNotFoundException("Transformed username is null."); } userPass.setUsername(transformedUsername); return authenticateUsernamePasswordInternal(userPass); }
@Override protected final HandlerResult authenticateUsernamePasswordInternal(final UsernamePasswordCredential transformedCredential) throws GeneralSecurityException, PreventedException { if (StringUtils.isBlank(this.sql) || StringUtils.isBlank(this.algorithmName) || getJdbcTemplate() == null) { throw new GeneralSecurityException("Authentication handler is not configured correctly"); } final String username = getPrincipalNameTransformer().transform(transformedCredential.getUsername()); final String encodedPsw = this.getPasswordEncoder().encode(transformedCredential.getPassword()); try { final Map<String, Object> values = getJdbcTemplate().queryForMap(this.sql, username); final String digestedPassword = digestEncodedPassword(encodedPsw, values); if (!values.get(this.passwordFieldName).equals(digestedPassword)) { throw new FailedLoginException("Password does not match value on record."); } return createHandlerResult(transformedCredential, this.principalFactory.createPrincipal(username), null); } catch (final IncorrectResultSizeDataAccessException e) { if (e.getActualSize() == 0) { throw new AccountNotFoundException(username + " not found with SQL query"); } else { throw new FailedLoginException("Multiple records found for " + username); } } catch (final DataAccessException e) { throw new PreventedException("SQL exception while executing query for " + username, e); } }