package org.apereo.cas.authentication; import org.apereo.cas.authentication.principal.Service; /** * This is {@link AuthenticationSystemSupport} - a facade that exposes a high level authentication system API to CAS core. * <p> * This component is to be injected into others where authentication subsystem interaction needs to happen - like performing single * authentication transaction, performing a finalized authentication transaction, or finalizing an all authentication transactions * that might have been processed and collected. * <p> * This facade also exposes lower level components that implementations use to perform necessary authentication steps, so that clients of * this API have the ability to use those components directly if they choose so. * * @author Misagh Moayyed * @author Dmitriy Kopylenko * @since 4.2.0 */ public interface AuthenticationSystemSupport { /** * Gets authentication transaction manager. * * @return the authentication transaction manager */ AuthenticationTransactionManager getAuthenticationTransactionManager(); /** * Gets principal election strategy. * * @return the principal election strategy */ PrincipalElectionStrategy getPrincipalElectionStrategy(); /** * Initiate potential multi-transaction authentication event by handling the initial authentication transaction. * * @param authentication a pre-established authentication object in a multi-legged authentication flow. * @param credential a credential for the authentication transaction. * @return authentication result builder used to accumulate authentication transactions in this authentication event. * @since 5.0.0 */ AuthenticationResultBuilder establishAuthenticationContextFromInitial(Authentication authentication, Credential credential); /** * Initiate potential multi-transaction authentication event by handling the initial authentication transaction. * * @param service the service * @param credential a credential for the initial authentication transaction. * @return authentication result builder used to accumulate authentication transactions in this authentication event. * @throws AuthenticationException exception to indicate authentication processing failure. * @since 5.0.0 */ AuthenticationResultBuilder handleInitialAuthenticationTransaction(Service service, Credential... credential) throws AuthenticationException; /** * Handle single authentication transaction within potential multi-transaction authentication event. * * @param service the service * @param authenticationResultBuilder builder used to accumulate authentication transactions in this authentication event. * @param credential a credential used for this authentication transaction. * @return authentication result builder used to accumulate authentication transactions in this authentication event. * @throws AuthenticationException exception to indicate authentication processing failure. * @since 5.0.0 */ AuthenticationResultBuilder handleAuthenticationTransaction(Service service, AuthenticationResultBuilder authenticationResultBuilder, Credential... credential) throws AuthenticationException; /** * Finalize all authentication transactions processed and collected for this authentication event. * * @param authenticationResultBuilder builder used to accumulate authentication transactions in this authentication event. * @param service a service for this authentication event. * @return authentication result representing a final outcome of the authentication event. * @since 5.0.0 */ AuthenticationResult finalizeAllAuthenticationTransactions(AuthenticationResultBuilder authenticationResultBuilder, Service service); /** * Handle a single-transaction authentication event and immediately produce a finalized {@link AuthenticationResult}. * * @param service a service for this authentication event. * @param credential a credential used for this single-transaction authentication event. * @return authentication result representing a final outcome of the authentication event. * @throws AuthenticationException exception to indicate authentication processing failure. * @since 5.0.0 */ AuthenticationResult handleAndFinalizeSingleAuthenticationTransaction(Service service, Credential... credential) throws AuthenticationException; }