package org.apereo.cas.adaptors.duo.authn; import org.apache.commons.lang3.tuple.Pair; import org.apereo.cas.adaptors.duo.DuoUserAccountAuthStatus; import org.apereo.cas.authentication.Credential; import java.io.Serializable; /** * This is {@link DuoAuthenticationService}. * * @author Misagh Moayyed * @since 5.1.0 */ public interface DuoAuthenticationService extends Serializable { /** * Verify the authentication response from Duo. * * @param credential signed request token * @return authenticated user / verified response. * @throws Exception if response verification fails */ Pair<Boolean, String> authenticate(Credential credential) throws Exception; /** * Ping provider. * * @return true /false. */ boolean ping(); /** * Gets api host. * * @return the api host */ String getApiHost(); /** * Sign request token. * * @param uid the uid * @return the signed token */ String signRequestToken(String uid); /** * Gets duo user account. * * @param username the actual user name * @return the duo user account */ DuoUserAccountAuthStatus getDuoUserAccountAuthStatus(String username); }