package org.apereo.cas.authentication;
/**
* The {@link AuthenticationTransactionManager} deals exclusively with authentication concepts
* e.g. Credentials, Principals, producing valid Authentication objects. It is invoked repeatedly with distinct credential type(s)
* for interactive multi-staged authn flows that would authenticate at each step as opposed
* to gather all credentials and send them for authentication in one batch.
*
* @author Misagh Moayyed
* @since 4.2
*/
public interface AuthenticationTransactionManager {
/**
* Handle authentication transaction manager.
*
* @param authenticationTransaction the authn attempt
* @param authenticationResultBuilder the authentication context
* @return the transaction manager
* @throws AuthenticationException the authentication exception
*/
AuthenticationTransactionManager handle(AuthenticationTransaction authenticationTransaction,
AuthenticationResultBuilder authenticationResultBuilder)
throws AuthenticationException;
/**
* Gets authentication manager.
*
* @return the authentication manager
*/
AuthenticationManager getAuthenticationManager();
}