@Override
    @CanIgnoreReturnValue
    public AuthenticationTransactionManager handle(
        @NonNull final AuthenticationTransaction authenticationTransaction,
        @NonNull final AuthenticationResultBuilder authenticationResult)
        throws Throwable {
        if (authenticationTransaction.getCredentials().isEmpty()) {
            LOGGER.debug("Transaction ignored since there are no credentials to authenticate");
        } else {
            val authentication = authenticationManager.authenticate(authenticationTransaction);
            val clientInfo = ClientInfoHolder.getClientInfo();
            LOGGER.trace("Successful authentication; Collecting authentication result [{}]", authentication);
            publishEvent(new CasAuthenticationTransactionCompletedEvent(this, authentication, clientInfo));
            authenticationResult.collect(authentication);
        }
        return this;
    }
This is {@link DefaultAuthenticationTransactionManager}.

@author Misagh Moayyed
@since 4.2.0
core/cas-server-core-authentication-api/src/main/java/org/apereo/cas/authentication/DefaultAuthenticationTransactionManager.java